From 3cc8dddaef739740f09fe6c0299c924daa9634c1 Mon Sep 17 00:00:00 2001 From: F4ever <1590415904a@gmail.com> Date: Thu, 24 Aug 2023 19:57:43 +0200 Subject: [PATCH 01/42] test fix --- README.md | 4 ++-- tests/bots/test_depositor.py | 2 +- tests/bots/test_pauser.py | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 2dd8d0b0..d70a09fe 100644 --- a/README.md +++ b/README.md @@ -47,12 +47,12 @@ This deposit is executed using the depositBufferedEther function within the "Dep | CREATE_TRANSACTIONS | false | If true then tx will be send to blockchain | | LIDO_LOCATOR | 0xC1d0b3DE6792Bf6b4b37EccdcC24e45978Cfd2Eb | Lido Locator address. Mainnet by default. Other networks could be found [here](https://docs.lido.fi/deployed-contracts/) | | DEPOSIT_CONTRACT | 0x00000000219ab540356cBB839Cbe05303d7705Fa | Ethereum deposit contract address | -| -------------------------------------- | -------------------------------------- | ----------------------------------------- | +| -------------------------------------- | -------------------------------------- | ----------------------------------------- | | TRANSPORTS | - | Transports used in bot. One of/or both: rabbit/kafka | | RABBIT_MQ_URL | - | RabbitMQ url | | RABBIT_MQ_USERNAME | - | RabbitMQ username for virtualhost | | RABBIT_MQ_PASSWORD | - | RabbitMQ password for virtualhost | -| -------------------------------------- | --- _kafka is not used at the moment_ --- | ----------------------------------------- | +| -------------------------------------- | --- _kafka is not used at the moment_ --- | ----------------------------------------- | | KAFKA_BROKER_ADDRESS_1 | - | Kafka servers url and port | | KAFKA_USERNAME | - | Kafka username | | KAFKA_PASSWORD | - | Kafka password | diff --git a/tests/bots/test_depositor.py b/tests/bots/test_depositor.py index d9254792..14d2c72e 100644 --- a/tests/bots/test_depositor.py +++ b/tests/bots/test_depositor.py @@ -187,7 +187,7 @@ def test_prepare_signs_for_deposit(deposit_message, depositor_bot): }, } - expected = [('0xc2235eb6983f80d19158f807d5d90d93abec52034ea7184bbf164ba211f00116', '0x75354ffc9fb6e7a4b4c01c622661a1d0382ace8c4ff8024626e39ac1a6a613d0'), ('0xc2235eb6983f80d19158f807d5d90d93abec52034ea7184bbf164ba211f00116', '0x75354ffc9fb6e7a4b4c01c622661a1d0382ace8c4ff8024626e39ac1a6a613d0')] + expected = (('0xc2235eb6983f80d19158f807d5d90d93abec52034ea7184bbf164ba211f00116', '0x75354ffc9fb6e7a4b4c01c622661a1d0382ace8c4ff8024626e39ac1a6a613d0'), ('0xc2235eb6983f80d19158f807d5d90d93abec52034ea7184bbf164ba211f00116', '0x75354ffc9fb6e7a4b4c01c622661a1d0382ace8c4ff8024626e39ac1a6a613d0')) signs = depositor_bot._prepare_signs_for_deposit([second_council, deposit_message]) assert signs == expected diff --git a/tests/bots/test_pauser.py b/tests/bots/test_pauser.py index e7139584..b831e68b 100644 --- a/tests/bots/test_pauser.py +++ b/tests/bots/test_pauser.py @@ -44,7 +44,7 @@ def pause_message(): @pytest.fixture def add_account_to_guardian(web3_lido_integration, set_integration_account): web3_lido_integration.provider.make_request('hardhat_impersonateAccount', [DSM_OWNER]) - quorum_size = web3_lido_integration.lido.get_guardian_quorum() + quorum_size = web3_lido_integration.lido.deposit_security_module.get_guardian_quorum() try: # If guardian removal failed From 1de51c07cee191cd22255055a156775b6957c425 Mon Sep 17 00:00:00 2001 From: F4ever <1590415904a@gmail.com> Date: Thu, 24 Aug 2023 20:01:34 +0200 Subject: [PATCH 02/42] assert only tx --- tests/bots/test_depositor.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/tests/bots/test_depositor.py b/tests/bots/test_depositor.py index 14d2c72e..40b62e22 100644 --- a/tests/bots/test_depositor.py +++ b/tests/bots/test_depositor.py @@ -332,7 +332,6 @@ def test_depositor_bot(web3_lido_integration, add_accounts_to_guardian, caplog): db.message_storage.messages = [deposit_message_1, deposit_message_2, deposit_message_3] db._get_module_strategy = Mock(return_value=Mock(return_value=True)) - db.execute(latest) - - assert web3_lido_integration.lido.staking_router.get_staking_module_nonce(module_id) == old_module_nonce + 1 + assert db.execute(latest) + # assert web3_lido_integration.lido.staking_router.get_staking_module_nonce(module_id) == old_module_nonce + 1 web3_lido_integration.lido.deposit_security_module.functions.setMaxDeposits(max_deposits).transact({'from': DSM_OWNER}) From c9f19fb7e7669ea3dccd5e0d0cafaaa2af1160ca Mon Sep 17 00:00:00 2001 From: Raman Siamionau Date: Mon, 28 Aug 2023 11:14:26 +0200 Subject: [PATCH 03/42] update readme --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index d70a09fe..50620c09 100644 --- a/README.md +++ b/README.md @@ -55,7 +55,7 @@ This deposit is executed using the depositBufferedEther function within the "Dep | -------------------------------------- | --- _kafka is not used at the moment_ --- | ----------------------------------------- | | KAFKA_BROKER_ADDRESS_1 | - | Kafka servers url and port | | KAFKA_USERNAME | - | Kafka username | -| KAFKA_PASSWORD | - | Kafka password | +| KAFKA_PASSWORD | - | Password for kafka | | KAFKA_NETWORK | - | Network type (mainnet or goerli) | | KAFKA_TOPIC | - | Kafka topic name (for msg receiving) | | KAFKA_GROUP_PREFIX | - | Just for staging (staging-) | From 965a3f12f47db1b220623dfaba594f87127b739c Mon Sep 17 00:00:00 2001 From: F4ever <1590415904a@gmail.com> Date: Wed, 6 Sep 2023 14:36:51 +0200 Subject: [PATCH 04/42] Add some annotations --- .env.example | 1 + src/depositor.py | 1 - src/pauser.py | 1 + 3 files changed, 2 insertions(+), 1 deletion(-) diff --git a/.env.example b/.env.example index 37211f7c..3db16308 100644 --- a/.env.example +++ b/.env.example @@ -1,6 +1,7 @@ WEB3_RPC_ENDPOINTS=https://goerli.infura.io/v3/ # Account private key +# Publicity known private key. Generated with `test test ... test` mnemonic. WALLET_PRIVATE_KEY=0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80 # App specific diff --git a/src/depositor.py b/src/depositor.py index f31b0cdf..23849526 100644 --- a/src/depositor.py +++ b/src/depositor.py @@ -4,7 +4,6 @@ from web3_multi_provider import FallbackProvider import variables -from blockchain.constants import FLASHBOTS_RPC from blockchain.executer import Executor from blockchain.web3_extentions.lido_contracts import LidoContracts from blockchain.web3_extentions.transaction import TransactionUtils diff --git a/src/pauser.py b/src/pauser.py index d338ecbe..a83ad537 100644 --- a/src/pauser.py +++ b/src/pauser.py @@ -12,6 +12,7 @@ from blockchain.web3_extentions.requests_metric_middleware import add_requests_metric_middleware from metrics.metrics import BUILD_INFO + logger = logging.getLogger(__name__) From 8753df2898486e2011e2c6fcc3e92ad4d6a78d19 Mon Sep 17 00:00:00 2001 From: F4ever <1590415904a@gmail.com> Date: Wed, 6 Sep 2023 14:40:31 +0200 Subject: [PATCH 05/42] Clarifications --- src/blockchain/contracts/lido.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/blockchain/contracts/lido.py b/src/blockchain/contracts/lido.py index 526ed942..198d654c 100644 --- a/src/blockchain/contracts/lido.py +++ b/src/blockchain/contracts/lido.py @@ -14,7 +14,7 @@ class LidoContract(ContractInterface): def get_depositable_ether(self, block_identifier: BlockIdentifier = 'latest') -> Wei: """ Returns depositable ether amount. - Takes into account unfinalized stETH required by WithdrawalQueue + Unfinalized stETH required by WithdrawalQueue are excluded from buffered ether. """ response = self.functions.getDepositableEther().call(block_identifier=block_identifier) logger.info({'msg': f'Call `getDepositableEther()`.', 'value': response, 'block_identifier': block_identifier.__repr__()}) From 0e52d3fba4d495d2ef19c94c03ff818a6eba76ad Mon Sep 17 00:00:00 2001 From: Raman Siamionau Date: Fri, 8 Sep 2023 08:27:19 +0200 Subject: [PATCH 06/42] Revert "Merge pull request #164 from lidofinance/feat/depositor-rework" This reverts commit 31512d7c9615ef86559d6c56e3fdaa7ae18c3abc. --- .env.example | 33 - .github/workflows/tests_and_checks.yml | 20 +- .gitignore | 2 - README.md | 197 +- docker-compose.yml | 24 +- hardhat.config.js | 15 - package-lock.json | 4256 ----------------- package.json | 5 - poetry.lock | 13 +- pyproject.toml | 5 +- src/blockchain/buffered_eth.py | 16 + src/blockchain/constants.py | 41 +- src/blockchain/contracts.py | 63 + src/blockchain/contracts/__init__.py | 0 src/blockchain/contracts/base_interface.py | 22 - src/blockchain/contracts/deposit.py | 24 - .../contracts/deposit_security_module.py | 129 - src/blockchain/contracts/lido.py | 21 - src/blockchain/contracts/lido_locator.py | 28 - src/blockchain/contracts/staking_router.py | 102 - src/blockchain/deposit_strategy/__init__.py | 0 .../deposit_strategy/curated_module.py | 112 - src/blockchain/deposit_strategy/interface.py | 17 - src/blockchain/executer.py | 97 - src/blockchain/fetch_latest_block.py | 25 + src/blockchain/gas_strategy.py | 90 + .../requests_metric_middleware.py | 1 - src/blockchain/typings.py | 9 - src/blockchain/web3_extentions/__init__.py | 0 .../web3_extentions/lido_contracts.py | 44 - src/blockchain/web3_extentions/transaction.py | 121 - src/bots/depositor.py | 243 - src/bots/depositor_bot.py | 516 ++ src/bots/pause.py | 98 - src/bots/pause_bot.py | 207 + src/depositor.py | 58 +- src/metrics/healthcheck_pulse.py | 1 - src/metrics/logging.py | 2 - src/metrics/metrics.py | 34 +- src/metrics/transport_message_metrics.py | 13 +- src/pauser.py | 50 +- src/transport/msg_providers/kafka.py | 5 +- src/transport/msg_providers/rabbit.py | 2 +- src/transport/msg_schemas.py | 30 +- src/transport/msg_storage.py | 9 +- src/utils/__init__.py | 0 src/utils/timeout.py | 27 - src/variables.py | 81 +- .../types.py => variables_types.py} | 0 static/img.png | Bin 39855 -> 0 bytes static/img1.png | Bin 36369 -> 0 bytes static/img2.png | Bin 51833 -> 0 bytes static/img3.png | Bin 65415 -> 0 bytes tests/blockchain/__init__.py | 0 tests/blockchain/contracts/__init__.py | 0 tests/blockchain/contracts/test_deposit.py | 15 - .../contracts/test_deposit_security_module.py | 21 - tests/blockchain/contracts/test_lido.py | 12 - .../blockchain/contracts/test_lido_locator.py | 14 - .../contracts/test_staking_router.py | 21 - tests/blockchain/deposit_strategy/__init__.py | 0 .../deposit_strategy/test_curated_module.py | 108 - tests/blockchain/web3_extentions/__init__.py | 0 .../blockchain/web3_extentions/transaction.py | 37 - tests/bots/__init__.py | 0 tests/bots/test_depositor.py | 337 -- tests/bots/test_executor.py | 88 - tests/bots/test_pauser.py | 167 - tests/bots/test_timeout.py | 18 - tests/conftest.py | 48 - tests/cryptography/__init__.py | 0 tests/fixtures/common_fixtures.py | 36 + tests/fixtures/contracts.py | 51 - tests/fixtures/depositor_fixtures.py | 139 + tests/fixtures/gas_fee_fixtures.py | 27 + tests/fixtures/pause_bot_fixtures.py | 24 + tests/fixtures/provider.py | 33 - tests/fixtures/pytest_mocks.py | 210 + tests/test_depositor_bot.py | 236 + tests/test_gas_srategy.py | 40 + tests/test_pause_bot.py | 96 + tests/test_reccomended_buffered_eth.py | 15 + ...y_signature.py => test_signature_check.py} | 2 +- tests/utils/contract_utils.py | 25 - tests/utils/logs.py | 2 + tests/utils/mock_provider.py | 24 + tests/utils/regrex.py | 12 - 87 files changed, 1993 insertions(+), 6773 deletions(-) delete mode 100644 .env.example delete mode 100644 hardhat.config.js delete mode 100644 package-lock.json delete mode 100644 package.json create mode 100644 src/blockchain/buffered_eth.py create mode 100644 src/blockchain/contracts.py delete mode 100644 src/blockchain/contracts/__init__.py delete mode 100644 src/blockchain/contracts/base_interface.py delete mode 100644 src/blockchain/contracts/deposit.py delete mode 100644 src/blockchain/contracts/deposit_security_module.py delete mode 100644 src/blockchain/contracts/lido.py delete mode 100644 src/blockchain/contracts/lido_locator.py delete mode 100644 src/blockchain/contracts/staking_router.py delete mode 100644 src/blockchain/deposit_strategy/__init__.py delete mode 100644 src/blockchain/deposit_strategy/curated_module.py delete mode 100644 src/blockchain/deposit_strategy/interface.py delete mode 100644 src/blockchain/executer.py create mode 100644 src/blockchain/fetch_latest_block.py create mode 100644 src/blockchain/gas_strategy.py rename src/blockchain/{web3_extentions => }/requests_metric_middleware.py (99%) delete mode 100644 src/blockchain/typings.py delete mode 100644 src/blockchain/web3_extentions/__init__.py delete mode 100644 src/blockchain/web3_extentions/lido_contracts.py delete mode 100644 src/blockchain/web3_extentions/transaction.py delete mode 100644 src/bots/depositor.py create mode 100644 src/bots/depositor_bot.py delete mode 100644 src/bots/pause.py create mode 100644 src/bots/pause_bot.py delete mode 100644 src/utils/__init__.py delete mode 100644 src/utils/timeout.py rename src/{transport/types.py => variables_types.py} (100%) delete mode 100644 static/img.png delete mode 100644 static/img1.png delete mode 100644 static/img2.png delete mode 100644 static/img3.png delete mode 100644 tests/blockchain/__init__.py delete mode 100644 tests/blockchain/contracts/__init__.py delete mode 100644 tests/blockchain/contracts/test_deposit.py delete mode 100644 tests/blockchain/contracts/test_deposit_security_module.py delete mode 100644 tests/blockchain/contracts/test_lido.py delete mode 100644 tests/blockchain/contracts/test_lido_locator.py delete mode 100644 tests/blockchain/contracts/test_staking_router.py delete mode 100644 tests/blockchain/deposit_strategy/__init__.py delete mode 100644 tests/blockchain/deposit_strategy/test_curated_module.py delete mode 100644 tests/blockchain/web3_extentions/__init__.py delete mode 100644 tests/blockchain/web3_extentions/transaction.py delete mode 100644 tests/bots/__init__.py delete mode 100644 tests/bots/test_depositor.py delete mode 100644 tests/bots/test_executor.py delete mode 100644 tests/bots/test_pauser.py delete mode 100644 tests/bots/test_timeout.py delete mode 100644 tests/conftest.py delete mode 100644 tests/cryptography/__init__.py create mode 100644 tests/fixtures/common_fixtures.py delete mode 100644 tests/fixtures/contracts.py create mode 100644 tests/fixtures/depositor_fixtures.py create mode 100644 tests/fixtures/gas_fee_fixtures.py create mode 100644 tests/fixtures/pause_bot_fixtures.py delete mode 100644 tests/fixtures/provider.py create mode 100644 tests/fixtures/pytest_mocks.py create mode 100644 tests/test_depositor_bot.py create mode 100644 tests/test_gas_srategy.py create mode 100644 tests/test_pause_bot.py create mode 100644 tests/test_reccomended_buffered_eth.py rename tests/{cryptography/test_verify_signature.py => test_signature_check.py} (94%) delete mode 100644 tests/utils/contract_utils.py create mode 100644 tests/utils/logs.py create mode 100644 tests/utils/mock_provider.py delete mode 100644 tests/utils/regrex.py diff --git a/.env.example b/.env.example deleted file mode 100644 index 3db16308..00000000 --- a/.env.example +++ /dev/null @@ -1,33 +0,0 @@ -WEB3_RPC_ENDPOINTS=https://goerli.infura.io/v3/ - -# Account private key -# Publicity known private key. Generated with `test test ... test` mnemonic. -WALLET_PRIVATE_KEY=0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80 - -# App specific -# LIDO_LOCATOR ADDRESS -# Mainnet: 0xC1d0b3DE6792Bf6b4b37EccdcC24e45978Cfd2Eb -# Görli: 0x1eDf09b5023DC86737b59dE68a8130De878984f5 -LIDO_LOCATOR=0x1eDf09b5023DC86737b59dE68a8130De878984f5 - -# DEPOSIT_CONTRACT ADDRESS -# Mainnet: 0x00000000219ab540356cBB839Cbe05303d7705Fa -# Görli: 0xff50ed3d0ec03aC01D4C79aAd74928BFF48a7b2b -DEPOSIT_CONTRACT=0xff50ed3d0ec03aC01D4C79aAd74928BFF48a7b2b - -# rabbit / kafka / rabbit,kafka -MESSAGE_TRANSPORTS=rabbit - -# rabbit secrets -RABBIT_MQ_URL=ws://127.0.0.1:15674/ws -RABBIT_MQ_USERNAME=guest -RABBIT_MQ_PASSWORD=guest - -# Transactions settings -CREATE_TRANSACTIONS=true - -# FLASHBOTS_RPC URL -# Mainnet: "https://relay.flashbots.net", -# Görli: "https://relay-goerli.flashbots.net", -FLASHBOTS_RPC=https://relay-goerli.flashbots.net -FLASHBOT_SIGNATURE=0xbb0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ffaa diff --git a/.github/workflows/tests_and_checks.yml b/.github/workflows/tests_and_checks.yml index 859eb58a..e57e1672 100644 --- a/.github/workflows/tests_and_checks.yml +++ b/.github/workflows/tests_and_checks.yml @@ -26,25 +26,9 @@ jobs: run: | poetry install - - name: Unit Tests with pytest + - name: Test with pytest run: | - poetry run pytest tests -m unit - - - name: Use Node.js ${{ matrix.node-version }} - uses: actions/setup-node@v3 - - run: npm install --save-dev hardhat - - - name: Run hardhat - run: | - npx hardhat node --fork ${{ secrets.WEB3_RPC_ENDPOINT }} & - - - name: Integration Tests with pytest - run: | - poetry run pytest tests -m integration - env: - WEB3_RPC_ENDPOINTS: http://127.0.0.1:8545 - DEPOSIT_CONTRACT: "0xff50ed3d0ec03aC01D4C79aAd74928BFF48a7b2b" - LIDO_LOCATOR: "0x1eDf09b5023DC86737b59dE68a8130De878984f5" + poetry run pytest tests security: uses: lidofinance/linters/.github/workflows/security.yml@master diff --git a/.gitignore b/.gitignore index 0edbe798..59d927b3 100644 --- a/.gitignore +++ b/.gitignore @@ -137,5 +137,3 @@ debug.log #cache deposit_contract_cache/ - -node_modules/ diff --git a/README.md b/README.md index 50620c09..9d1ffaa9 100644 --- a/README.md +++ b/README.md @@ -1,129 +1,85 @@ # Lido Lido Depositor bot -## Description - -Depositor and pauser bots are parts of [Deposit Security Module](https://github.com/lidofinance/lido-improvement-proposals/blob/develop/LIPS/lip-5.md#mitigations-for-deposit-front-running-vulnerability). - -**The Depositor Bot** obtains signed deposit messages from Council Daemons. -Once a sufficient number of messages is collected to constitute a quorum, the bot proceeds to initiate a deposit into the designated staking module. -This deposit is executed using the depositBufferedEther function within the "DepositSecurityModule" smart contract. - -**The Pauser Bot** obtains pause message from Council Daemon and enacts pause on the specified staking module. - -## Table of Contents - -- [Running Daemon](#running-daemon) -- [Variables](#variables) - - [Required variables](#required-variables) - - [Additional variables](#additional-variables) -- [Metrics and logs](#metrics-and-logs) -- [Development](#development) - - [Install](#install) - - [Tests](#tests) - - [Release flow](#release-flow) -- [Annotations to code](#annotations-to-code) - -## Running Daemon - -1. Create `.env` file -2. Setup variables - - Set WEB3_RPC_ENDPOINTS - - Set WALLET_PRIVATE_KEY - - Set CREATE_TRANSACTIONS to true - - Set TRANSPORTS to rabbit - - Set RABBIT_MQ_URL, RABBIT_MQ_USERNAME and RABBIT_MQ_PASSWORD -3. ```docker-compose up``` -4. Send metrics and logs to grafana -5. Setup alerts - -## Variables - -### Required variables - -| Variable | Default | Description | -|-----------------------------------------|--------------------------------------------|--------------------------------------------------------------------------------------------------------------------------| -| WEB3_RPC_ENDPOINTS | - | List of rpc endpoints that will be used to send requests comma separated (`,`) | -| WALLET_PRIVATE_KEY | - | Account private key | -| CREATE_TRANSACTIONS | false | If true then tx will be send to blockchain | -| LIDO_LOCATOR | 0xC1d0b3DE6792Bf6b4b37EccdcC24e45978Cfd2Eb | Lido Locator address. Mainnet by default. Other networks could be found [here](https://docs.lido.fi/deployed-contracts/) | -| DEPOSIT_CONTRACT | 0x00000000219ab540356cBB839Cbe05303d7705Fa | Ethereum deposit contract address | -| -------------------------------------- | -------------------------------------- | ----------------------------------------- | -| TRANSPORTS | - | Transports used in bot. One of/or both: rabbit/kafka | -| RABBIT_MQ_URL | - | RabbitMQ url | -| RABBIT_MQ_USERNAME | - | RabbitMQ username for virtualhost | -| RABBIT_MQ_PASSWORD | - | RabbitMQ password for virtualhost | -| -------------------------------------- | --- _kafka is not used at the moment_ --- | ----------------------------------------- | -| KAFKA_BROKER_ADDRESS_1 | - | Kafka servers url and port | -| KAFKA_USERNAME | - | Kafka username | -| KAFKA_PASSWORD | - | Password for kafka | -| KAFKA_NETWORK | - | Network type (mainnet or goerli) | -| KAFKA_TOPIC | - | Kafka topic name (for msg receiving) | -| KAFKA_GROUP_PREFIX | - | Just for staging (staging-) | - -### Additional variables - -| Variable | Default | Description | -|-----------------------------------|------------|--------------------------------------------------------------------------------------------------------------------------| -| MIN_PRIORITY_FEE | 50 mwei | Min priority fee that will be used in tx | -| MAX_PRIORITY_FEE | 10 gwei | Max priority fee that will be used in tx | -| MAX_GAS_FEE | 100 gwei | Bot will wait for a lower price. Treshold for gas_fee | -| CONTRACT_GAS_LIMIT | 15000000 | Default transaction gas limit | -| FLASHBOTS_RPC | - | Flashbots rpc endpoint | -| FLASHBOT_SIGNATURE | - | Private key - Used to identify account in flashbot`s rpc (should NOT be equal to WALLET private key) | -| GAS_FEE_PERCENTILE_1 | 20 | Percentile for first recommended fee calculation | -| GAS_FEE_PERCENTILE_DAYS_HISTORY_1 | 1 | Percentile for first recommended calculates from N days of the fee history | -| GAS_PRIORITY_FEE_PERCENTILE | 25 | Priority transaction will be N percentile from priority fees in last block (min MIN_PRIORITY_FEE - max MAX_PRIORITY_FEE) | -| MAX_BUFFERED_ETHERS | 5000 ether | Maximum amount of ETH in the buffer, after which the bot deposits at any gas | -| PROMETHEUS_PORT | 9000 | Port with metrics server | -| PULSE_SERVER_PORT | 9010 | Port with bot`s status server | -| MAX_CYCLE_LIFETIME_IN_SECONDS | 1200 | Max lifetime of usual cycle. If cycle will not end in this time, bot will crush | - -## Metrics and logs - -Metrics list could be found in [source code](src/metrics/metrics.py). -Prometheus server hosted on `http://localhost:${{PROMETHEUS_PORT}}/`. - -## Development - -### Install +## Depositor bot description +Depositor bot - Deposits buffered ether via depositBufferedEther call on "DepositSecurityModule" smart contract using special gas strategy. -```bash -git clone git@github.com:lidofinance/depositor-bot.git -cd depositor-bot -poetry install -``` +The strategy is to check two things: how much buffered ether on smart contract are and gas fee. -To run bot +We deposit when all the following points are correct: +- We received council signatures enough for quorum. +- Gas fee is lower or equal than 5-th percentile for past day. +- Buffered ETH is greater than or equal to the calculation according to a special formula depending on the gas fee. -```bash -# For depositor bot -poetry run python src/depositor.py +## Pauser bot +If one of the councils send pause message (means something very bad going on), pauser bot try to send tx that will pause protocol. +In addition, the council daemon tries to pause the protocol on its own. -# For pause bot -poetry run python src/pauser.py -``` - -### Tests -#### Run unit tests +## How to install +Python packages ```bash -poetry run pytest tests -m unit +git clone git@github.com:lidofinance/depositor-bot.git +cd depositor-bot +poetry install ``` -#### Run integration tests. +## Run script -Install Hardhat and run goerli fork +To run (development): + +Envs: ```bash -npm install --save-dev hardhat -npx hardhat node --fork ${{ WEB3_RPC_ENDPOINT }} & +export NETWORK=... +export WEB3_RPC_ENDPOINTS=... +export FLASHBOT_SIGNATURE=... +export KAFKA_BROKER_ADDRESS_1=... +export KAFKA_USERNAME=... +export KAFKA_PASSWORD=... +export KAFKA_TOPIC=... +export RABBIT_MQ_URL=... +export RABBIT_MQ_USERNAME=... +export RABBIT_MQ_PASSWORD=... ``` +Run: ```bash -poetry run pytest tests -m integration +# For depositor bot +python src/depositor.py + +# For pause bot +python src/pauser.py ``` -### Release flow +## Available variables + +| Vars in env | Amount | Default - Raw | Description | +|-----------------------------------|:----------:|:-------------------------:|:------------------------------------------------------------------------------------------------------------------------------------------------| +| WEB3_RPC_ENDPOINTS (required) | - | `` | List of rpc endpoints that will be used to send requests separated by comma (`,`). If not provided will be used infura (WEB3_INFURA_PROJECT_ID) | +| NETWORK (required) | - | `None` | Network (e.g. mainnet, goerli) | +| WALLET_PRIVATE_KEY | - | `None` | Account private key | +| FLASHBOT_SIGNATURE (required) | - | `None` | Private key - Used to identify account in flashbot`s rpc (should NOT be equal to WALLET private key) | +| CREATE_TRANSACTIONS | - | `None` | If `true` then tx will be send to blockchain | +| MAX_BUFFERED_ETHERS | 5000 ETH | `5000 ether` | Maximum amount of ETH in the buffer, after which the bot deposits at any gas | +| MAX_GAS_FEE | 100 GWEI | `100 gwei` | Bot will wait for a lower price. Treshold for gas_fee | +| GAS_FEE_PERCENTILE_1 | 5 | `5` | Percentile for first recommended fee calculation | +| GAS_FEE_PERCENTILE_DAYS_HISTORY_1 | 1 | `1` | Percentile for first recommended calculates from N days of the fee history | +| GAS_PRIORITY_FEE_PERCENTILE | 25 | `25` | Priority transaction will be N percentile from priority fees in last block (min `MIN_PRIORITY_FEE` - max `MAX_PRIORITY_FEE`) | +| CONTRACT_GAS_LIMIT | 15 * 10**6 | `15000000` | Default transaction gas limit | +| MIN_PRIORITY_FEE | 50 mwei | `50 mwei` | Min priority fee that will be used in tx | +| MAX_PRIORITY_FEE | 10 GWEI | `10 gwei` | Max priority fee that will be used in tx (4 gwei recommended) | +| MAX_CYCLE_LIFETIME_IN_SECONDS | 6 minutes | `300` | Max lifetime of usual cycle. If cycle will not end in this time, bot will crush | +| TRANSPORTS | - | `rabbit` | Transports used in bot. One of/or both: rabbit/kafka. | +| RABBIT_MQ_URL | | `ws://127.0.0.1:15674/ws` | url with ws protocol supported | +| RABBIT_MQ_USERNAME | guest | `guest` | RabbitMQ username for virtualhost | +| RABBIT_MQ_PASSWORD | guest | `guest` | RabbitMQ password for virtualhost | +| KAFKA_BROKER_ADDRESS_1 | - | `None` | Kafka servers url and port | +| KAFKA_USERNAME | - | `None` | Kafka username value | +| KAFKA_PASSWORD | - | `None` | Kafka password value | +| KAFKA_TOPIC | - | `None` | Kafka topic name (for msg receiving) | +| KAFKA_GROUP_PREFIX | - | `None` | Just for staging (staging-) | + +## Release flow To create a new release: @@ -132,28 +88,3 @@ To create a new release: 1. When you need to release, go to Repo → Releases. 1. Publish the desired release draft manually by clicking the edit button - this release is now the `Latest Published`. 1. After publication, the action to create a release bump will be triggered automatically. - -## Annotations to code - -Council daemons sends messages to depositor and pauser bot throw kafka or rabbit. - -![img.png](static/img.png) - -Every 5 blocks Executor instance calls depositor bot. If Depositor returns failed status, executor executes depositor with next block instead of waiting for 5 blocks. - -![img.png](static/img1.png) - -Depositor bot makes deposit only if next conditions are ok -- Gas fee is low enough -- There are enough buffered eth ready for deposit -- There are enough messages from Council Daemons to form a quorum -- Module is active and not paused - -![img.png](static/img2.png) - -Message filtering process -1. Filter all invalid messages. (Invalid schema or signature) -2. Filter all expired messages -3. Filter all messages with block number less or equal to latest block in depositor bot and with outdated nonce or deposit root. - -![img.png](static/img3.png) diff --git a/docker-compose.yml b/docker-compose.yml index 54248be3..2f2a3c50 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -8,15 +8,12 @@ services: ports: - 127.0.0.1:9000:9000 environment: - - WEB3_RPC_ENDPOINTS=${WEB3_RPC_ENDPOINTS} + - NETWORK=${NETWORK} - WALLET_PRIVATE_KEY=${WALLET_PRIVATE_KEY} - - CREATE_TRANSACTIONS=${CREATE_TRANSACTIONS} - - TRANSPORTS=${TRANSPORTS} - - RABBIT_MQ_URL=${RABBIT_MQ_URL} - - RABBIT_MQ_USERNAME=${RABBIT_MQ_USERNAME} - - RABBIT_MQ_PASSWORD=${RABBIT_MQ_PASSWORD} - - FLASHBOTS_RPC=${FLASHBOTS_RPC} - - FLASHBOT_SIGNATURE=${FLASHBOT_SIGNATURE} + - KAFKA_BROKER_ADDRESS_1=${KAFKA_BROKER_ADDRESS_1} + - KAFKA_USERNAME=${KAFKA_USERNAME} + - KAFKA_PASSWORD=${KAFKA_PASSWORD} + - KAFKA_TOPIC=${KAFKA_TOPIC} command: src/depositor.py lido-pause-bot: @@ -27,11 +24,10 @@ services: ports: - 127.0.0.1:9001:9000 environment: - - WEB3_RPC_ENDPOINTS=${WEB3_RPC_ENDPOINTS} + - NETWORK=${NETWORK} - WALLET_PRIVATE_KEY=${WALLET_PRIVATE_KEY} - - CREATE_TRANSACTIONS=${CREATE_TRANSACTIONS} - - TRANSPORTS=${TRANSPORTS} - - RABBIT_MQ_URL=${RABBIT_MQ_URL} - - RABBIT_MQ_USERNAME=${RABBIT_MQ_USERNAME} - - RABBIT_MQ_PASSWORD=${RABBIT_MQ_PASSWORD} + - KAFKA_BROKER_ADDRESS_1=${KAFKA_BROKER_ADDRESS_1} + - KAFKA_USERNAME=${KAFKA_USERNAME} + - KAFKA_PASSWORD=${KAFKA_PASSWORD} + - KAFKA_TOPIC=${KAFKA_TOPIC} command: src/pauser.py diff --git a/hardhat.config.js b/hardhat.config.js deleted file mode 100644 index 37df865c..00000000 --- a/hardhat.config.js +++ /dev/null @@ -1,15 +0,0 @@ -/** @type import('hardhat/config').HardhatUserConfig */ -module.exports = { - solidity: "0.8.19", - networks: { - hardhat: { - mining: { - auto: true, - interval: 12000 - } - } - }, - localhost: { - timeout: 100_000 - }, -}; diff --git a/package-lock.json b/package-lock.json deleted file mode 100644 index f4f4e382..00000000 --- a/package-lock.json +++ /dev/null @@ -1,4256 +0,0 @@ -{ - "name": "depositor-bot", - "lockfileVersion": 3, - "requires": true, - "packages": { - "": { - "devDependencies": { - "hardhat": "^2.17.1" - } - }, - "node_modules/@chainsafe/as-sha256": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/@chainsafe/as-sha256/-/as-sha256-0.3.1.tgz", - "integrity": "sha512-hldFFYuf49ed7DAakWVXSJODuq3pzJEguD8tQ7h+sGkM18vja+OFoJI9krnGmgzyuZC2ETX0NOIcCTy31v2Mtg==", - "dev": true - }, - "node_modules/@chainsafe/persistent-merkle-tree": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/@chainsafe/persistent-merkle-tree/-/persistent-merkle-tree-0.4.2.tgz", - "integrity": "sha512-lLO3ihKPngXLTus/L7WHKaw9PnNJWizlOF1H9NNzHP6Xvh82vzg9F2bzkXhYIFshMZ2gTCEz8tq6STe7r5NDfQ==", - "dev": true, - "dependencies": { - "@chainsafe/as-sha256": "^0.3.1" - } - }, - "node_modules/@chainsafe/ssz": { - "version": "0.9.4", - "resolved": "https://registry.npmjs.org/@chainsafe/ssz/-/ssz-0.9.4.tgz", - "integrity": "sha512-77Qtg2N1ayqs4Bg/wvnWfg5Bta7iy7IRh8XqXh7oNMeP2HBbBwx8m6yTpA8p0EHItWPEBkgZd5S5/LSlp3GXuQ==", - "dev": true, - "dependencies": { - "@chainsafe/as-sha256": "^0.3.1", - "@chainsafe/persistent-merkle-tree": "^0.4.2", - "case": "^1.6.3" - } - }, - "node_modules/@ethersproject/abi": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/abi/-/abi-5.7.0.tgz", - "integrity": "sha512-351ktp42TiRcYB3H1OP8yajPeAQstMW/yCFokj/AthP9bLHzQFPlOrxOcwYEDkUAICmOHljvN4K39OMTMUa9RA==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "dependencies": { - "@ethersproject/address": "^5.7.0", - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/constants": "^5.7.0", - "@ethersproject/hash": "^5.7.0", - "@ethersproject/keccak256": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/properties": "^5.7.0", - "@ethersproject/strings": "^5.7.0" - } - }, - "node_modules/@ethersproject/abstract-provider": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/abstract-provider/-/abstract-provider-5.7.0.tgz", - "integrity": "sha512-R41c9UkchKCpAqStMYUpdunjo3pkEvZC3FAwZn5S5MGbXoMQOHIdHItezTETxAO5bevtMApSyEhn9+CHcDsWBw==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "dependencies": { - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/networks": "^5.7.0", - "@ethersproject/properties": "^5.7.0", - "@ethersproject/transactions": "^5.7.0", - "@ethersproject/web": "^5.7.0" - } - }, - "node_modules/@ethersproject/abstract-signer": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/abstract-signer/-/abstract-signer-5.7.0.tgz", - "integrity": "sha512-a16V8bq1/Cz+TGCkE2OPMTOUDLS3grCpdjoJCYNnVBbdYEMSgKrU0+B90s8b6H+ByYTBZN7a3g76jdIJi7UfKQ==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "dependencies": { - "@ethersproject/abstract-provider": "^5.7.0", - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/properties": "^5.7.0" - } - }, - "node_modules/@ethersproject/address": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/address/-/address-5.7.0.tgz", - "integrity": "sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "dependencies": { - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/keccak256": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/rlp": "^5.7.0" - } - }, - "node_modules/@ethersproject/base64": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/base64/-/base64-5.7.0.tgz", - "integrity": "sha512-Dr8tcHt2mEbsZr/mwTPIQAf3Ai0Bks/7gTw9dSqk1mQvhW3XvRlmDJr/4n+wg1JmCl16NZue17CDh8xb/vZ0sQ==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "dependencies": { - "@ethersproject/bytes": "^5.7.0" - } - }, - "node_modules/@ethersproject/basex": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/basex/-/basex-5.7.0.tgz", - "integrity": "sha512-ywlh43GwZLv2Voc2gQVTKBoVQ1mti3d8HK5aMxsfu/nRDnMmNqaSJ3r3n85HBByT8OpoY96SXM1FogC533T4zw==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "dependencies": { - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/properties": "^5.7.0" - } - }, - "node_modules/@ethersproject/bignumber": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.7.0.tgz", - "integrity": "sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "dependencies": { - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "bn.js": "^5.2.1" - } - }, - "node_modules/@ethersproject/bytes": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.7.0.tgz", - "integrity": "sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "dependencies": { - "@ethersproject/logger": "^5.7.0" - } - }, - "node_modules/@ethersproject/constants": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/constants/-/constants-5.7.0.tgz", - "integrity": "sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "dependencies": { - "@ethersproject/bignumber": "^5.7.0" - } - }, - "node_modules/@ethersproject/contracts": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/contracts/-/contracts-5.7.0.tgz", - "integrity": "sha512-5GJbzEU3X+d33CdfPhcyS+z8MzsTrBGk/sc+G+59+tPa9yFkl6HQ9D6L0QMgNTA9q8dT0XKxxkyp883XsQvbbg==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "dependencies": { - "@ethersproject/abi": "^5.7.0", - "@ethersproject/abstract-provider": "^5.7.0", - "@ethersproject/abstract-signer": "^5.7.0", - "@ethersproject/address": "^5.7.0", - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/constants": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/properties": "^5.7.0", - "@ethersproject/transactions": "^5.7.0" - } - }, - "node_modules/@ethersproject/hash": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/hash/-/hash-5.7.0.tgz", - "integrity": "sha512-qX5WrQfnah1EFnO5zJv1v46a8HW0+E5xuBBDTwMFZLuVTx0tbU2kkx15NqdjxecrLGatQN9FGQKpb1FKdHCt+g==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "dependencies": { - "@ethersproject/abstract-signer": "^5.7.0", - "@ethersproject/address": "^5.7.0", - "@ethersproject/base64": "^5.7.0", - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/keccak256": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/properties": "^5.7.0", - "@ethersproject/strings": "^5.7.0" - } - }, - "node_modules/@ethersproject/hdnode": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/hdnode/-/hdnode-5.7.0.tgz", - "integrity": "sha512-OmyYo9EENBPPf4ERhR7oj6uAtUAhYGqOnIS+jE5pTXvdKBS99ikzq1E7Iv0ZQZ5V36Lqx1qZLeak0Ra16qpeOg==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "dependencies": { - "@ethersproject/abstract-signer": "^5.7.0", - "@ethersproject/basex": "^5.7.0", - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/pbkdf2": "^5.7.0", - "@ethersproject/properties": "^5.7.0", - "@ethersproject/sha2": "^5.7.0", - "@ethersproject/signing-key": "^5.7.0", - "@ethersproject/strings": "^5.7.0", - "@ethersproject/transactions": "^5.7.0", - "@ethersproject/wordlists": "^5.7.0" - } - }, - "node_modules/@ethersproject/json-wallets": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/json-wallets/-/json-wallets-5.7.0.tgz", - "integrity": "sha512-8oee5Xgu6+RKgJTkvEMl2wDgSPSAQ9MB/3JYjFV9jlKvcYHUXZC+cQp0njgmxdHkYWn8s6/IqIZYm0YWCjO/0g==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "dependencies": { - "@ethersproject/abstract-signer": "^5.7.0", - "@ethersproject/address": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/hdnode": "^5.7.0", - "@ethersproject/keccak256": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/pbkdf2": "^5.7.0", - "@ethersproject/properties": "^5.7.0", - "@ethersproject/random": "^5.7.0", - "@ethersproject/strings": "^5.7.0", - "@ethersproject/transactions": "^5.7.0", - "aes-js": "3.0.0", - "scrypt-js": "3.0.1" - } - }, - "node_modules/@ethersproject/keccak256": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/keccak256/-/keccak256-5.7.0.tgz", - "integrity": "sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "dependencies": { - "@ethersproject/bytes": "^5.7.0", - "js-sha3": "0.8.0" - } - }, - "node_modules/@ethersproject/logger": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", - "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ] - }, - "node_modules/@ethersproject/networks": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/@ethersproject/networks/-/networks-5.7.1.tgz", - "integrity": "sha512-n/MufjFYv3yFcUyfhnXotyDlNdFb7onmkSy8aQERi2PjNcnWQ66xXxa3XlS8nCcA8aJKJjIIMNJTC7tu80GwpQ==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "dependencies": { - "@ethersproject/logger": "^5.7.0" - } - }, - "node_modules/@ethersproject/pbkdf2": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/pbkdf2/-/pbkdf2-5.7.0.tgz", - "integrity": "sha512-oR/dBRZR6GTyaofd86DehG72hY6NpAjhabkhxgr3X2FpJtJuodEl2auADWBZfhDHgVCbu3/H/Ocq2uC6dpNjjw==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "dependencies": { - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/sha2": "^5.7.0" - } - }, - "node_modules/@ethersproject/properties": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.7.0.tgz", - "integrity": "sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "dependencies": { - "@ethersproject/logger": "^5.7.0" - } - }, - "node_modules/@ethersproject/providers": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/@ethersproject/providers/-/providers-5.7.2.tgz", - "integrity": "sha512-g34EWZ1WWAVgr4aptGlVBF8mhl3VWjv+8hoAnzStu8Ah22VHBsuGzP17eb6xDVRzw895G4W7vvx60lFFur/1Rg==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "dependencies": { - "@ethersproject/abstract-provider": "^5.7.0", - "@ethersproject/abstract-signer": "^5.7.0", - "@ethersproject/address": "^5.7.0", - "@ethersproject/base64": "^5.7.0", - "@ethersproject/basex": "^5.7.0", - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/constants": "^5.7.0", - "@ethersproject/hash": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/networks": "^5.7.0", - "@ethersproject/properties": "^5.7.0", - "@ethersproject/random": "^5.7.0", - "@ethersproject/rlp": "^5.7.0", - "@ethersproject/sha2": "^5.7.0", - "@ethersproject/strings": "^5.7.0", - "@ethersproject/transactions": "^5.7.0", - "@ethersproject/web": "^5.7.0", - "bech32": "1.1.4", - "ws": "7.4.6" - } - }, - "node_modules/@ethersproject/providers/node_modules/ws": { - "version": "7.4.6", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.6.tgz", - "integrity": "sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==", - "dev": true, - "engines": { - "node": ">=8.3.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - }, - "node_modules/@ethersproject/random": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/random/-/random-5.7.0.tgz", - "integrity": "sha512-19WjScqRA8IIeWclFme75VMXSBvi4e6InrUNuaR4s5pTF2qNhcGdCUwdxUVGtDDqC00sDLCO93jPQoDUH4HVmQ==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "dependencies": { - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/logger": "^5.7.0" - } - }, - "node_modules/@ethersproject/rlp": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/rlp/-/rlp-5.7.0.tgz", - "integrity": "sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "dependencies": { - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/logger": "^5.7.0" - } - }, - "node_modules/@ethersproject/sha2": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/sha2/-/sha2-5.7.0.tgz", - "integrity": "sha512-gKlH42riwb3KYp0reLsFTokByAKoJdgFCwI+CCiX/k+Jm2mbNs6oOaCjYQSlI1+XBVejwH2KrmCbMAT/GnRDQw==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "dependencies": { - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "hash.js": "1.1.7" - } - }, - "node_modules/@ethersproject/signing-key": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/signing-key/-/signing-key-5.7.0.tgz", - "integrity": "sha512-MZdy2nL3wO0u7gkB4nA/pEf8lu1TlFswPNmy8AiYkfKTdO6eXBJyUdmHO/ehm/htHw9K/qF8ujnTyUAD+Ry54Q==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "dependencies": { - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/properties": "^5.7.0", - "bn.js": "^5.2.1", - "elliptic": "6.5.4", - "hash.js": "1.1.7" - } - }, - "node_modules/@ethersproject/solidity": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/solidity/-/solidity-5.7.0.tgz", - "integrity": "sha512-HmabMd2Dt/raavyaGukF4XxizWKhKQ24DoLtdNbBmNKUOPqwjsKQSdV9GQtj9CBEea9DlzETlVER1gYeXXBGaA==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "dependencies": { - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/keccak256": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/sha2": "^5.7.0", - "@ethersproject/strings": "^5.7.0" - } - }, - "node_modules/@ethersproject/strings": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/strings/-/strings-5.7.0.tgz", - "integrity": "sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "dependencies": { - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/constants": "^5.7.0", - "@ethersproject/logger": "^5.7.0" - } - }, - "node_modules/@ethersproject/transactions": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/transactions/-/transactions-5.7.0.tgz", - "integrity": "sha512-kmcNicCp1lp8qanMTC3RIikGgoJ80ztTyvtsFvCYpSCfkjhD0jZ2LOrnbcuxuToLIUYYf+4XwD1rP+B/erDIhQ==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "dependencies": { - "@ethersproject/address": "^5.7.0", - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/constants": "^5.7.0", - "@ethersproject/keccak256": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/properties": "^5.7.0", - "@ethersproject/rlp": "^5.7.0", - "@ethersproject/signing-key": "^5.7.0" - } - }, - "node_modules/@ethersproject/units": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/units/-/units-5.7.0.tgz", - "integrity": "sha512-pD3xLMy3SJu9kG5xDGI7+xhTEmGXlEqXU4OfNapmfnxLVY4EMSSRp7j1k7eezutBPH7RBN/7QPnwR7hzNlEFeg==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "dependencies": { - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/constants": "^5.7.0", - "@ethersproject/logger": "^5.7.0" - } - }, - "node_modules/@ethersproject/wallet": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/wallet/-/wallet-5.7.0.tgz", - "integrity": "sha512-MhmXlJXEJFBFVKrDLB4ZdDzxcBxQ3rLyCkhNqVu3CDYvR97E+8r01UgrI+TI99Le+aYm/in/0vp86guJuM7FCA==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "dependencies": { - "@ethersproject/abstract-provider": "^5.7.0", - "@ethersproject/abstract-signer": "^5.7.0", - "@ethersproject/address": "^5.7.0", - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/hash": "^5.7.0", - "@ethersproject/hdnode": "^5.7.0", - "@ethersproject/json-wallets": "^5.7.0", - "@ethersproject/keccak256": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/properties": "^5.7.0", - "@ethersproject/random": "^5.7.0", - "@ethersproject/signing-key": "^5.7.0", - "@ethersproject/transactions": "^5.7.0", - "@ethersproject/wordlists": "^5.7.0" - } - }, - "node_modules/@ethersproject/web": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/@ethersproject/web/-/web-5.7.1.tgz", - "integrity": "sha512-Gueu8lSvyjBWL4cYsWsjh6MtMwM0+H4HvqFPZfB6dV8ctbP9zFAO73VG1cMWae0FLPCtz0peKPpZY8/ugJJX2w==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "dependencies": { - "@ethersproject/base64": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/properties": "^5.7.0", - "@ethersproject/strings": "^5.7.0" - } - }, - "node_modules/@ethersproject/wordlists": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/wordlists/-/wordlists-5.7.0.tgz", - "integrity": "sha512-S2TFNJNfHWVHNE6cNDjbVlZ6MgE17MIxMbMg2zv3wn+3XSJGosL1m9ZVv3GXCf/2ymSsQ+hRI5IzoMJTG6aoVA==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "dependencies": { - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/hash": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/properties": "^5.7.0", - "@ethersproject/strings": "^5.7.0" - } - }, - "node_modules/@metamask/eth-sig-util": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@metamask/eth-sig-util/-/eth-sig-util-4.0.1.tgz", - "integrity": "sha512-tghyZKLHZjcdlDqCA3gNZmLeR0XvOE9U1qoQO9ohyAZT6Pya+H9vkBPcsyXytmYLNgVoin7CKCmweo/R43V+tQ==", - "dev": true, - "dependencies": { - "ethereumjs-abi": "^0.6.8", - "ethereumjs-util": "^6.2.1", - "ethjs-util": "^0.1.6", - "tweetnacl": "^1.0.3", - "tweetnacl-util": "^0.15.1" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/@noble/hashes": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.2.0.tgz", - "integrity": "sha512-FZfhjEDbT5GRswV3C6uvLPHMiVD6lQBmpoX5+eSiPaMTXte/IKqI5dykDxzZB/WBeK/CDuQRBWarPdi3FNY2zQ==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - ] - }, - "node_modules/@noble/secp256k1": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/@noble/secp256k1/-/secp256k1-1.7.1.tgz", - "integrity": "sha512-hOUk6AyBFmqVrv7k5WAw/LpszxVbj9gGN4JRkIX52fdFAj1UA61KXmZDvqVEm+pOyec3+fIeZB02LYa/pWOArw==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - ] - }, - "node_modules/@nomicfoundation/ethereumjs-block": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-block/-/ethereumjs-block-5.0.1.tgz", - "integrity": "sha512-u1Yioemi6Ckj3xspygu/SfFvm8vZEO8/Yx5a1QLzi6nVU0jz3Pg2OmHKJ5w+D9Ogk1vhwRiqEBAqcb0GVhCyHw==", - "dev": true, - "dependencies": { - "@nomicfoundation/ethereumjs-common": "4.0.1", - "@nomicfoundation/ethereumjs-rlp": "5.0.1", - "@nomicfoundation/ethereumjs-trie": "6.0.1", - "@nomicfoundation/ethereumjs-tx": "5.0.1", - "@nomicfoundation/ethereumjs-util": "9.0.1", - "ethereum-cryptography": "0.1.3", - "ethers": "^5.7.1" - }, - "engines": { - "node": ">=14" - } - }, - "node_modules/@nomicfoundation/ethereumjs-block/node_modules/ethereum-cryptography": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz", - "integrity": "sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==", - "dev": true, - "dependencies": { - "@types/pbkdf2": "^3.0.0", - "@types/secp256k1": "^4.0.1", - "blakejs": "^1.1.0", - "browserify-aes": "^1.2.0", - "bs58check": "^2.1.2", - "create-hash": "^1.2.0", - "create-hmac": "^1.1.7", - "hash.js": "^1.1.7", - "keccak": "^3.0.0", - "pbkdf2": "^3.0.17", - "randombytes": "^2.1.0", - "safe-buffer": "^5.1.2", - "scrypt-js": "^3.0.0", - "secp256k1": "^4.0.1", - "setimmediate": "^1.0.5" - } - }, - "node_modules/@nomicfoundation/ethereumjs-blockchain": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-blockchain/-/ethereumjs-blockchain-7.0.1.tgz", - "integrity": "sha512-NhzndlGg829XXbqJEYrF1VeZhAwSPgsK/OB7TVrdzft3y918hW5KNd7gIZ85sn6peDZOdjBsAXIpXZ38oBYE5A==", - "dev": true, - "dependencies": { - "@nomicfoundation/ethereumjs-block": "5.0.1", - "@nomicfoundation/ethereumjs-common": "4.0.1", - "@nomicfoundation/ethereumjs-ethash": "3.0.1", - "@nomicfoundation/ethereumjs-rlp": "5.0.1", - "@nomicfoundation/ethereumjs-trie": "6.0.1", - "@nomicfoundation/ethereumjs-tx": "5.0.1", - "@nomicfoundation/ethereumjs-util": "9.0.1", - "abstract-level": "^1.0.3", - "debug": "^4.3.3", - "ethereum-cryptography": "0.1.3", - "level": "^8.0.0", - "lru-cache": "^5.1.1", - "memory-level": "^1.0.0" - }, - "engines": { - "node": ">=14" - } - }, - "node_modules/@nomicfoundation/ethereumjs-blockchain/node_modules/ethereum-cryptography": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz", - "integrity": "sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==", - "dev": true, - "dependencies": { - "@types/pbkdf2": "^3.0.0", - "@types/secp256k1": "^4.0.1", - "blakejs": "^1.1.0", - "browserify-aes": "^1.2.0", - "bs58check": "^2.1.2", - "create-hash": "^1.2.0", - "create-hmac": "^1.1.7", - "hash.js": "^1.1.7", - "keccak": "^3.0.0", - "pbkdf2": "^3.0.17", - "randombytes": "^2.1.0", - "safe-buffer": "^5.1.2", - "scrypt-js": "^3.0.0", - "secp256k1": "^4.0.1", - "setimmediate": "^1.0.5" - } - }, - "node_modules/@nomicfoundation/ethereumjs-common": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-common/-/ethereumjs-common-4.0.1.tgz", - "integrity": "sha512-OBErlkfp54GpeiE06brBW/TTbtbuBJV5YI5Nz/aB2evTDo+KawyEzPjBlSr84z/8MFfj8wS2wxzQX1o32cev5g==", - "dev": true, - "dependencies": { - "@nomicfoundation/ethereumjs-util": "9.0.1", - "crc-32": "^1.2.0" - } - }, - "node_modules/@nomicfoundation/ethereumjs-ethash": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-ethash/-/ethereumjs-ethash-3.0.1.tgz", - "integrity": "sha512-KDjGIB5igzWOp8Ik5I6QiRH5DH+XgILlplsHR7TEuWANZA759G6krQ6o8bvj+tRUz08YygMQu/sGd9mJ1DYT8w==", - "dev": true, - "dependencies": { - "@nomicfoundation/ethereumjs-block": "5.0.1", - "@nomicfoundation/ethereumjs-rlp": "5.0.1", - "@nomicfoundation/ethereumjs-util": "9.0.1", - "abstract-level": "^1.0.3", - "bigint-crypto-utils": "^3.0.23", - "ethereum-cryptography": "0.1.3" - }, - "engines": { - "node": ">=14" - } - }, - "node_modules/@nomicfoundation/ethereumjs-ethash/node_modules/ethereum-cryptography": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz", - "integrity": "sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==", - "dev": true, - "dependencies": { - "@types/pbkdf2": "^3.0.0", - "@types/secp256k1": "^4.0.1", - "blakejs": "^1.1.0", - "browserify-aes": "^1.2.0", - "bs58check": "^2.1.2", - "create-hash": "^1.2.0", - "create-hmac": "^1.1.7", - "hash.js": "^1.1.7", - "keccak": "^3.0.0", - "pbkdf2": "^3.0.17", - "randombytes": "^2.1.0", - "safe-buffer": "^5.1.2", - "scrypt-js": "^3.0.0", - "secp256k1": "^4.0.1", - "setimmediate": "^1.0.5" - } - }, - "node_modules/@nomicfoundation/ethereumjs-evm": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-evm/-/ethereumjs-evm-2.0.1.tgz", - "integrity": "sha512-oL8vJcnk0Bx/onl+TgQOQ1t/534GKFaEG17fZmwtPFeH8S5soiBYPCLUrvANOl4sCp9elYxIMzIiTtMtNNN8EQ==", - "dev": true, - "dependencies": { - "@ethersproject/providers": "^5.7.1", - "@nomicfoundation/ethereumjs-common": "4.0.1", - "@nomicfoundation/ethereumjs-tx": "5.0.1", - "@nomicfoundation/ethereumjs-util": "9.0.1", - "debug": "^4.3.3", - "ethereum-cryptography": "0.1.3", - "mcl-wasm": "^0.7.1", - "rustbn.js": "~0.2.0" - }, - "engines": { - "node": ">=14" - } - }, - "node_modules/@nomicfoundation/ethereumjs-evm/node_modules/ethereum-cryptography": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz", - "integrity": "sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==", - "dev": true, - "dependencies": { - "@types/pbkdf2": "^3.0.0", - "@types/secp256k1": "^4.0.1", - "blakejs": "^1.1.0", - "browserify-aes": "^1.2.0", - "bs58check": "^2.1.2", - "create-hash": "^1.2.0", - "create-hmac": "^1.1.7", - "hash.js": "^1.1.7", - "keccak": "^3.0.0", - "pbkdf2": "^3.0.17", - "randombytes": "^2.1.0", - "safe-buffer": "^5.1.2", - "scrypt-js": "^3.0.0", - "secp256k1": "^4.0.1", - "setimmediate": "^1.0.5" - } - }, - "node_modules/@nomicfoundation/ethereumjs-rlp": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-rlp/-/ethereumjs-rlp-5.0.1.tgz", - "integrity": "sha512-xtxrMGa8kP4zF5ApBQBtjlSbN5E2HI8m8FYgVSYAnO6ssUoY5pVPGy2H8+xdf/bmMa22Ce8nWMH3aEW8CcqMeQ==", - "dev": true, - "bin": { - "rlp": "bin/rlp" - }, - "engines": { - "node": ">=14" - } - }, - "node_modules/@nomicfoundation/ethereumjs-statemanager": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-statemanager/-/ethereumjs-statemanager-2.0.1.tgz", - "integrity": "sha512-B5ApMOnlruVOR7gisBaYwFX+L/AP7i/2oAahatssjPIBVDF6wTX1K7Qpa39E/nzsH8iYuL3krkYeUFIdO3EMUQ==", - "dev": true, - "dependencies": { - "@nomicfoundation/ethereumjs-common": "4.0.1", - "@nomicfoundation/ethereumjs-rlp": "5.0.1", - "debug": "^4.3.3", - "ethereum-cryptography": "0.1.3", - "ethers": "^5.7.1", - "js-sdsl": "^4.1.4" - } - }, - "node_modules/@nomicfoundation/ethereumjs-statemanager/node_modules/ethereum-cryptography": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz", - "integrity": "sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==", - "dev": true, - "dependencies": { - "@types/pbkdf2": "^3.0.0", - "@types/secp256k1": "^4.0.1", - "blakejs": "^1.1.0", - "browserify-aes": "^1.2.0", - "bs58check": "^2.1.2", - "create-hash": "^1.2.0", - "create-hmac": "^1.1.7", - "hash.js": "^1.1.7", - "keccak": "^3.0.0", - "pbkdf2": "^3.0.17", - "randombytes": "^2.1.0", - "safe-buffer": "^5.1.2", - "scrypt-js": "^3.0.0", - "secp256k1": "^4.0.1", - "setimmediate": "^1.0.5" - } - }, - "node_modules/@nomicfoundation/ethereumjs-trie": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-trie/-/ethereumjs-trie-6.0.1.tgz", - "integrity": "sha512-A64It/IMpDVODzCgxDgAAla8jNjNtsoQZIzZUfIV5AY6Coi4nvn7+VReBn5itlxMiL2yaTlQr9TRWp3CSI6VoA==", - "dev": true, - "dependencies": { - "@nomicfoundation/ethereumjs-rlp": "5.0.1", - "@nomicfoundation/ethereumjs-util": "9.0.1", - "@types/readable-stream": "^2.3.13", - "ethereum-cryptography": "0.1.3", - "readable-stream": "^3.6.0" - }, - "engines": { - "node": ">=14" - } - }, - "node_modules/@nomicfoundation/ethereumjs-trie/node_modules/ethereum-cryptography": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz", - "integrity": "sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==", - "dev": true, - "dependencies": { - "@types/pbkdf2": "^3.0.0", - "@types/secp256k1": "^4.0.1", - "blakejs": "^1.1.0", - "browserify-aes": "^1.2.0", - "bs58check": "^2.1.2", - "create-hash": "^1.2.0", - "create-hmac": "^1.1.7", - "hash.js": "^1.1.7", - "keccak": "^3.0.0", - "pbkdf2": "^3.0.17", - "randombytes": "^2.1.0", - "safe-buffer": "^5.1.2", - "scrypt-js": "^3.0.0", - "secp256k1": "^4.0.1", - "setimmediate": "^1.0.5" - } - }, - "node_modules/@nomicfoundation/ethereumjs-tx": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-tx/-/ethereumjs-tx-5.0.1.tgz", - "integrity": "sha512-0HwxUF2u2hrsIM1fsasjXvlbDOq1ZHFV2dd1yGq8CA+MEYhaxZr8OTScpVkkxqMwBcc5y83FyPl0J9MZn3kY0w==", - "dev": true, - "dependencies": { - "@chainsafe/ssz": "^0.9.2", - "@ethersproject/providers": "^5.7.2", - "@nomicfoundation/ethereumjs-common": "4.0.1", - "@nomicfoundation/ethereumjs-rlp": "5.0.1", - "@nomicfoundation/ethereumjs-util": "9.0.1", - "ethereum-cryptography": "0.1.3" - }, - "engines": { - "node": ">=14" - } - }, - "node_modules/@nomicfoundation/ethereumjs-tx/node_modules/ethereum-cryptography": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz", - "integrity": "sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==", - "dev": true, - "dependencies": { - "@types/pbkdf2": "^3.0.0", - "@types/secp256k1": "^4.0.1", - "blakejs": "^1.1.0", - "browserify-aes": "^1.2.0", - "bs58check": "^2.1.2", - "create-hash": "^1.2.0", - "create-hmac": "^1.1.7", - "hash.js": "^1.1.7", - "keccak": "^3.0.0", - "pbkdf2": "^3.0.17", - "randombytes": "^2.1.0", - "safe-buffer": "^5.1.2", - "scrypt-js": "^3.0.0", - "secp256k1": "^4.0.1", - "setimmediate": "^1.0.5" - } - }, - "node_modules/@nomicfoundation/ethereumjs-util": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-util/-/ethereumjs-util-9.0.1.tgz", - "integrity": "sha512-TwbhOWQ8QoSCFhV/DDfSmyfFIHjPjFBj957219+V3jTZYZ2rf9PmDtNOeZWAE3p3vlp8xb02XGpd0v6nTUPbsA==", - "dev": true, - "dependencies": { - "@chainsafe/ssz": "^0.10.0", - "@nomicfoundation/ethereumjs-rlp": "5.0.1", - "ethereum-cryptography": "0.1.3" - }, - "engines": { - "node": ">=14" - } - }, - "node_modules/@nomicfoundation/ethereumjs-util/node_modules/@chainsafe/persistent-merkle-tree": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/@chainsafe/persistent-merkle-tree/-/persistent-merkle-tree-0.5.0.tgz", - "integrity": "sha512-l0V1b5clxA3iwQLXP40zYjyZYospQLZXzBVIhhr9kDg/1qHZfzzHw0jj4VPBijfYCArZDlPkRi1wZaV2POKeuw==", - "dev": true, - "dependencies": { - "@chainsafe/as-sha256": "^0.3.1" - } - }, - "node_modules/@nomicfoundation/ethereumjs-util/node_modules/@chainsafe/ssz": { - "version": "0.10.2", - "resolved": "https://registry.npmjs.org/@chainsafe/ssz/-/ssz-0.10.2.tgz", - "integrity": "sha512-/NL3Lh8K+0q7A3LsiFq09YXS9fPE+ead2rr7vM2QK8PLzrNsw3uqrif9bpRX5UxgeRjM+vYi+boCM3+GM4ovXg==", - "dev": true, - "dependencies": { - "@chainsafe/as-sha256": "^0.3.1", - "@chainsafe/persistent-merkle-tree": "^0.5.0" - } - }, - "node_modules/@nomicfoundation/ethereumjs-util/node_modules/ethereum-cryptography": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz", - "integrity": "sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==", - "dev": true, - "dependencies": { - "@types/pbkdf2": "^3.0.0", - "@types/secp256k1": "^4.0.1", - "blakejs": "^1.1.0", - "browserify-aes": "^1.2.0", - "bs58check": "^2.1.2", - "create-hash": "^1.2.0", - "create-hmac": "^1.1.7", - "hash.js": "^1.1.7", - "keccak": "^3.0.0", - "pbkdf2": "^3.0.17", - "randombytes": "^2.1.0", - "safe-buffer": "^5.1.2", - "scrypt-js": "^3.0.0", - "secp256k1": "^4.0.1", - "setimmediate": "^1.0.5" - } - }, - "node_modules/@nomicfoundation/ethereumjs-vm": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-vm/-/ethereumjs-vm-7.0.1.tgz", - "integrity": "sha512-rArhyn0jPsS/D+ApFsz3yVJMQ29+pVzNZ0VJgkzAZ+7FqXSRtThl1C1prhmlVr3YNUlfpZ69Ak+RUT4g7VoOuQ==", - "dev": true, - "dependencies": { - "@nomicfoundation/ethereumjs-block": "5.0.1", - "@nomicfoundation/ethereumjs-blockchain": "7.0.1", - "@nomicfoundation/ethereumjs-common": "4.0.1", - "@nomicfoundation/ethereumjs-evm": "2.0.1", - "@nomicfoundation/ethereumjs-rlp": "5.0.1", - "@nomicfoundation/ethereumjs-statemanager": "2.0.1", - "@nomicfoundation/ethereumjs-trie": "6.0.1", - "@nomicfoundation/ethereumjs-tx": "5.0.1", - "@nomicfoundation/ethereumjs-util": "9.0.1", - "debug": "^4.3.3", - "ethereum-cryptography": "0.1.3", - "mcl-wasm": "^0.7.1", - "rustbn.js": "~0.2.0" - }, - "engines": { - "node": ">=14" - } - }, - "node_modules/@nomicfoundation/ethereumjs-vm/node_modules/ethereum-cryptography": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz", - "integrity": "sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==", - "dev": true, - "dependencies": { - "@types/pbkdf2": "^3.0.0", - "@types/secp256k1": "^4.0.1", - "blakejs": "^1.1.0", - "browserify-aes": "^1.2.0", - "bs58check": "^2.1.2", - "create-hash": "^1.2.0", - "create-hmac": "^1.1.7", - "hash.js": "^1.1.7", - "keccak": "^3.0.0", - "pbkdf2": "^3.0.17", - "randombytes": "^2.1.0", - "safe-buffer": "^5.1.2", - "scrypt-js": "^3.0.0", - "secp256k1": "^4.0.1", - "setimmediate": "^1.0.5" - } - }, - "node_modules/@nomicfoundation/solidity-analyzer": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer/-/solidity-analyzer-0.1.1.tgz", - "integrity": "sha512-1LMtXj1puAxyFusBgUIy5pZk3073cNXYnXUpuNKFghHbIit/xZgbk0AokpUADbNm3gyD6bFWl3LRFh3dhVdREg==", - "dev": true, - "engines": { - "node": ">= 12" - }, - "optionalDependencies": { - "@nomicfoundation/solidity-analyzer-darwin-arm64": "0.1.1", - "@nomicfoundation/solidity-analyzer-darwin-x64": "0.1.1", - "@nomicfoundation/solidity-analyzer-freebsd-x64": "0.1.1", - "@nomicfoundation/solidity-analyzer-linux-arm64-gnu": "0.1.1", - "@nomicfoundation/solidity-analyzer-linux-arm64-musl": "0.1.1", - "@nomicfoundation/solidity-analyzer-linux-x64-gnu": "0.1.1", - "@nomicfoundation/solidity-analyzer-linux-x64-musl": "0.1.1", - "@nomicfoundation/solidity-analyzer-win32-arm64-msvc": "0.1.1", - "@nomicfoundation/solidity-analyzer-win32-ia32-msvc": "0.1.1", - "@nomicfoundation/solidity-analyzer-win32-x64-msvc": "0.1.1" - } - }, - "node_modules/@nomicfoundation/solidity-analyzer-darwin-arm64": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-darwin-arm64/-/solidity-analyzer-darwin-arm64-0.1.1.tgz", - "integrity": "sha512-KcTodaQw8ivDZyF+D76FokN/HdpgGpfjc/gFCImdLUyqB6eSWVaZPazMbeAjmfhx3R0zm/NYVzxwAokFKgrc0w==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@nomicfoundation/solidity-analyzer-darwin-x64": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-darwin-x64/-/solidity-analyzer-darwin-x64-0.1.1.tgz", - "integrity": "sha512-XhQG4BaJE6cIbjAVtzGOGbK3sn1BO9W29uhk9J8y8fZF1DYz0Doj8QDMfpMu+A6TjPDs61lbsmeYodIDnfveSA==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@nomicfoundation/solidity-analyzer-freebsd-x64": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-freebsd-x64/-/solidity-analyzer-freebsd-x64-0.1.1.tgz", - "integrity": "sha512-GHF1VKRdHW3G8CndkwdaeLkVBi5A9u2jwtlS7SLhBc8b5U/GcoL39Q+1CSO3hYqePNP+eV5YI7Zgm0ea6kMHoA==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@nomicfoundation/solidity-analyzer-linux-arm64-gnu": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-linux-arm64-gnu/-/solidity-analyzer-linux-arm64-gnu-0.1.1.tgz", - "integrity": "sha512-g4Cv2fO37ZsUENQ2vwPnZc2zRenHyAxHcyBjKcjaSmmkKrFr64yvzeNO8S3GBFCo90rfochLs99wFVGT/0owpg==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@nomicfoundation/solidity-analyzer-linux-arm64-musl": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-linux-arm64-musl/-/solidity-analyzer-linux-arm64-musl-0.1.1.tgz", - "integrity": "sha512-WJ3CE5Oek25OGE3WwzK7oaopY8xMw9Lhb0mlYuJl/maZVo+WtP36XoQTb7bW/i8aAdHW5Z+BqrHMux23pvxG3w==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@nomicfoundation/solidity-analyzer-linux-x64-gnu": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-linux-x64-gnu/-/solidity-analyzer-linux-x64-gnu-0.1.1.tgz", - "integrity": "sha512-5WN7leSr5fkUBBjE4f3wKENUy9HQStu7HmWqbtknfXkkil+eNWiBV275IOlpXku7v3uLsXTOKpnnGHJYI2qsdA==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@nomicfoundation/solidity-analyzer-linux-x64-musl": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-linux-x64-musl/-/solidity-analyzer-linux-x64-musl-0.1.1.tgz", - "integrity": "sha512-KdYMkJOq0SYPQMmErv/63CwGwMm5XHenEna9X9aB8mQmhDBrYrlAOSsIPgFCUSL0hjxE3xHP65/EPXR/InD2+w==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@nomicfoundation/solidity-analyzer-win32-arm64-msvc": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-win32-arm64-msvc/-/solidity-analyzer-win32-arm64-msvc-0.1.1.tgz", - "integrity": "sha512-VFZASBfl4qiBYwW5xeY20exWhmv6ww9sWu/krWSesv3q5hA0o1JuzmPHR4LPN6SUZj5vcqci0O6JOL8BPw+APg==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@nomicfoundation/solidity-analyzer-win32-ia32-msvc": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-win32-ia32-msvc/-/solidity-analyzer-win32-ia32-msvc-0.1.1.tgz", - "integrity": "sha512-JnFkYuyCSA70j6Si6cS1A9Gh1aHTEb8kOTBApp/c7NRTFGNMH8eaInKlyuuiIbvYFhlXW4LicqyYuWNNq9hkpQ==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@nomicfoundation/solidity-analyzer-win32-x64-msvc": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-win32-x64-msvc/-/solidity-analyzer-win32-x64-msvc-0.1.1.tgz", - "integrity": "sha512-HrVJr6+WjIXGnw3Q9u6KQcbZCtk0caVWhCdFADySvRyUxJ8PnzlaP+MhwNE8oyT8OZ6ejHBRrrgjSqDCFXGirw==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@scure/base": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.1.1.tgz", - "integrity": "sha512-ZxOhsSyxYwLJj3pLZCefNitxsj093tb2vq90mp2txoYeBqbcjDjqFhyM8eUjq/uFm6zJ+mUuqxlS2FkuSY1MTA==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - ] - }, - "node_modules/@scure/bip32": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.1.5.tgz", - "integrity": "sha512-XyNh1rB0SkEqd3tXcXMi+Xe1fvg+kUIcoRIEujP1Jgv7DqW2r9lg3Ah0NkFaCs9sTkQAQA8kw7xiRXzENi9Rtw==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - ], - "dependencies": { - "@noble/hashes": "~1.2.0", - "@noble/secp256k1": "~1.7.0", - "@scure/base": "~1.1.0" - } - }, - "node_modules/@scure/bip39": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.1.1.tgz", - "integrity": "sha512-t+wDck2rVkh65Hmv280fYdVdY25J9YeEUIgn2LG1WM6gxFkGzcksoDiUkWVpVp3Oex9xGC68JU2dSbUfwZ2jPg==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - ], - "dependencies": { - "@noble/hashes": "~1.2.0", - "@scure/base": "~1.1.0" - } - }, - "node_modules/@sentry/core": { - "version": "5.30.0", - "resolved": "https://registry.npmjs.org/@sentry/core/-/core-5.30.0.tgz", - "integrity": "sha512-TmfrII8w1PQZSZgPpUESqjB+jC6MvZJZdLtE/0hZ+SrnKhW3x5WlYLvTXZpcWePYBku7rl2wn1RZu6uT0qCTeg==", - "dev": true, - "dependencies": { - "@sentry/hub": "5.30.0", - "@sentry/minimal": "5.30.0", - "@sentry/types": "5.30.0", - "@sentry/utils": "5.30.0", - "tslib": "^1.9.3" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/@sentry/hub": { - "version": "5.30.0", - "resolved": "https://registry.npmjs.org/@sentry/hub/-/hub-5.30.0.tgz", - "integrity": "sha512-2tYrGnzb1gKz2EkMDQcfLrDTvmGcQPuWxLnJKXJvYTQDGLlEvi2tWz1VIHjunmOvJrB5aIQLhm+dcMRwFZDCqQ==", - "dev": true, - "dependencies": { - "@sentry/types": "5.30.0", - "@sentry/utils": "5.30.0", - "tslib": "^1.9.3" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/@sentry/minimal": { - "version": "5.30.0", - "resolved": "https://registry.npmjs.org/@sentry/minimal/-/minimal-5.30.0.tgz", - "integrity": "sha512-BwWb/owZKtkDX+Sc4zCSTNcvZUq7YcH3uAVlmh/gtR9rmUvbzAA3ewLuB3myi4wWRAMEtny6+J/FN/x+2wn9Xw==", - "dev": true, - "dependencies": { - "@sentry/hub": "5.30.0", - "@sentry/types": "5.30.0", - "tslib": "^1.9.3" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/@sentry/node": { - "version": "5.30.0", - "resolved": "https://registry.npmjs.org/@sentry/node/-/node-5.30.0.tgz", - "integrity": "sha512-Br5oyVBF0fZo6ZS9bxbJZG4ApAjRqAnqFFurMVJJdunNb80brh7a5Qva2kjhm+U6r9NJAB5OmDyPkA1Qnt+QVg==", - "dev": true, - "dependencies": { - "@sentry/core": "5.30.0", - "@sentry/hub": "5.30.0", - "@sentry/tracing": "5.30.0", - "@sentry/types": "5.30.0", - "@sentry/utils": "5.30.0", - "cookie": "^0.4.1", - "https-proxy-agent": "^5.0.0", - "lru_map": "^0.3.3", - "tslib": "^1.9.3" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/@sentry/tracing": { - "version": "5.30.0", - "resolved": "https://registry.npmjs.org/@sentry/tracing/-/tracing-5.30.0.tgz", - "integrity": "sha512-dUFowCr0AIMwiLD7Fs314Mdzcug+gBVo/+NCMyDw8tFxJkwWAKl7Qa2OZxLQ0ZHjakcj1hNKfCQJ9rhyfOl4Aw==", - "dev": true, - "dependencies": { - "@sentry/hub": "5.30.0", - "@sentry/minimal": "5.30.0", - "@sentry/types": "5.30.0", - "@sentry/utils": "5.30.0", - "tslib": "^1.9.3" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/@sentry/types": { - "version": "5.30.0", - "resolved": "https://registry.npmjs.org/@sentry/types/-/types-5.30.0.tgz", - "integrity": "sha512-R8xOqlSTZ+htqrfteCWU5Nk0CDN5ApUTvrlvBuiH1DyP6czDZ4ktbZB0hAgBlVcK0U+qpD3ag3Tqqpa5Q67rPw==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/@sentry/utils": { - "version": "5.30.0", - "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-5.30.0.tgz", - "integrity": "sha512-zaYmoH0NWWtvnJjC9/CBseXMtKHm/tm40sz3YfJRxeQjyzRqNQPgivpd9R/oDJCYj999mzdW382p/qi2ypjLww==", - "dev": true, - "dependencies": { - "@sentry/types": "5.30.0", - "tslib": "^1.9.3" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/@types/bn.js": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-5.1.1.tgz", - "integrity": "sha512-qNrYbZqMx0uJAfKnKclPh+dTwK33KfLHYqtyODwd5HnXOjnkhc4qgn3BrK6RWyGZm5+sIFE7Q7Vz6QQtJB7w7g==", - "dev": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/@types/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-ssE3Vlrys7sdIzs5LOxCzTVMsU7i9oa/IaW92wF32JFb3CVczqOkru2xspuKczHEbG3nvmPY7IFqVmGGHdNbYw==", - "dev": true - }, - "node_modules/@types/node": { - "version": "20.5.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.5.1.tgz", - "integrity": "sha512-4tT2UrL5LBqDwoed9wZ6N3umC4Yhz3W3FloMmiiG4JwmUJWpie0c7lcnUNd4gtMKuDEO4wRVS8B6Xa0uMRsMKg==", - "dev": true - }, - "node_modules/@types/pbkdf2": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@types/pbkdf2/-/pbkdf2-3.1.0.tgz", - "integrity": "sha512-Cf63Rv7jCQ0LaL8tNXmEyqTHuIJxRdlS5vMh1mj5voN4+QFhVZnlZruezqpWYDiJ8UTzhP0VmeLXCmBk66YrMQ==", - "dev": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/readable-stream": { - "version": "2.3.15", - "resolved": "https://registry.npmjs.org/@types/readable-stream/-/readable-stream-2.3.15.tgz", - "integrity": "sha512-oM5JSKQCcICF1wvGgmecmHldZ48OZamtMxcGGVICOJA8o8cahXC1zEVAif8iwoc5j8etxFaRFnf095+CDsuoFQ==", - "dev": true, - "dependencies": { - "@types/node": "*", - "safe-buffer": "~5.1.1" - } - }, - "node_modules/@types/secp256k1": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/@types/secp256k1/-/secp256k1-4.0.3.tgz", - "integrity": "sha512-Da66lEIFeIz9ltsdMZcpQvmrmmoqrfju8pm1BH8WbYjZSwUgCwXLb9C+9XYogwBITnbsSaMdVPb2ekf7TV+03w==", - "dev": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/abstract-level": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/abstract-level/-/abstract-level-1.0.3.tgz", - "integrity": "sha512-t6jv+xHy+VYwc4xqZMn2Pa9DjcdzvzZmQGRjTFc8spIbRGHgBrEKbPq+rYXc7CCo0lxgYvSgKVg9qZAhpVQSjA==", - "dev": true, - "dependencies": { - "buffer": "^6.0.3", - "catering": "^2.1.0", - "is-buffer": "^2.0.5", - "level-supports": "^4.0.0", - "level-transcoder": "^1.0.1", - "module-error": "^1.0.1", - "queue-microtask": "^1.2.3" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/adm-zip": { - "version": "0.4.16", - "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.4.16.tgz", - "integrity": "sha512-TFi4HBKSGfIKsK5YCkKaaFG2m4PEDyViZmEwof3MTIgzimHLto6muaHVpbrljdIvIrFZzEq/p4nafOeLcYegrg==", - "dev": true, - "engines": { - "node": ">=0.3.0" - } - }, - "node_modules/aes-js": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/aes-js/-/aes-js-3.0.0.tgz", - "integrity": "sha512-H7wUZRn8WpTq9jocdxQ2c8x2sKo9ZVmzfRE13GiNJXfp7NcKYEdvl3vspKjXox6RIG2VtaRe4JFvxG4rqp2Zuw==", - "dev": true - }, - "node_modules/agent-base": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", - "dev": true, - "dependencies": { - "debug": "4" - }, - "engines": { - "node": ">= 6.0.0" - } - }, - "node_modules/aggregate-error": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", - "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", - "dev": true, - "dependencies": { - "clean-stack": "^2.0.0", - "indent-string": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/ansi-colors": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", - "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/ansi-escapes": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", - "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", - "dev": true, - "dependencies": { - "type-fest": "^0.21.3" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/anymatch": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", - "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", - "dev": true, - "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true - }, - "node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true - }, - "node_modules/base-x": { - "version": "3.0.9", - "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.9.tgz", - "integrity": "sha512-H7JU6iBHTal1gp56aKoaa//YUxEaAOUiydvrV/pILqIHXTtqxSkATOnDA2u+jZ/61sD+L/412+7kzXRtWukhpQ==", - "dev": true, - "dependencies": { - "safe-buffer": "^5.0.1" - } - }, - "node_modules/base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/bech32": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/bech32/-/bech32-1.1.4.tgz", - "integrity": "sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ==", - "dev": true - }, - "node_modules/bigint-crypto-utils": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/bigint-crypto-utils/-/bigint-crypto-utils-3.3.0.tgz", - "integrity": "sha512-jOTSb+drvEDxEq6OuUybOAv/xxoh3cuYRUIPyu8sSHQNKM303UQ2R1DAo45o1AkcIXw6fzbaFI1+xGGdaXs2lg==", - "dev": true, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/binary-extensions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/blakejs": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/blakejs/-/blakejs-1.2.1.tgz", - "integrity": "sha512-QXUSXI3QVc/gJME0dBpXrag1kbzOqCjCX8/b54ntNyW6sjtoqxqRk3LTmXzaJoh71zMsDCjM+47jS7XiwN/+fQ==", - "dev": true - }, - "node_modules/bn.js": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", - "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", - "dev": true - }, - "node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, - "dependencies": { - "fill-range": "^7.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/brorand": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", - "integrity": "sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==", - "dev": true - }, - "node_modules/browser-level": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/browser-level/-/browser-level-1.0.1.tgz", - "integrity": "sha512-XECYKJ+Dbzw0lbydyQuJzwNXtOpbMSq737qxJN11sIRTErOMShvDpbzTlgju7orJKvx4epULolZAuJGLzCmWRQ==", - "dev": true, - "dependencies": { - "abstract-level": "^1.0.2", - "catering": "^2.1.1", - "module-error": "^1.0.2", - "run-parallel-limit": "^1.1.0" - } - }, - "node_modules/browser-stdout": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", - "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", - "dev": true - }, - "node_modules/browserify-aes": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", - "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", - "dev": true, - "dependencies": { - "buffer-xor": "^1.0.3", - "cipher-base": "^1.0.0", - "create-hash": "^1.1.0", - "evp_bytestokey": "^1.0.3", - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "node_modules/bs58": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz", - "integrity": "sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw==", - "dev": true, - "dependencies": { - "base-x": "^3.0.2" - } - }, - "node_modules/bs58check": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/bs58check/-/bs58check-2.1.2.tgz", - "integrity": "sha512-0TS1jicxdU09dwJMNZtVAfzPi6Q6QeN0pM1Fkzrjn+XYHvzMKPU3pHVpva+769iNVSfIYWf7LJ6WR+BuuMf8cA==", - "dev": true, - "dependencies": { - "bs58": "^4.0.0", - "create-hash": "^1.1.0", - "safe-buffer": "^5.1.2" - } - }, - "node_modules/buffer": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", - "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.2.1" - } - }, - "node_modules/buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", - "dev": true - }, - "node_modules/buffer-xor": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", - "integrity": "sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==", - "dev": true - }, - "node_modules/busboy": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz", - "integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==", - "dev": true, - "dependencies": { - "streamsearch": "^1.1.0" - }, - "engines": { - "node": ">=10.16.0" - } - }, - "node_modules/bytes": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", - "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/camelcase": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", - "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/case": { - "version": "1.6.3", - "resolved": "https://registry.npmjs.org/case/-/case-1.6.3.tgz", - "integrity": "sha512-mzDSXIPaFwVDvZAHqZ9VlbyF4yyXRuX6IvB06WvPYkqJVO24kX1PPhv9bfpKNFZyxYFmmgo03HUiD8iklmJYRQ==", - "dev": true, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/catering": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/catering/-/catering-2.1.1.tgz", - "integrity": "sha512-K7Qy8O9p76sL3/3m7/zLKbRkyOlSZAgzEaLhyj2mXS8PsCud2Eo4hAb8aLtZqHh0QGqLcb9dlJSu6lHRVENm1w==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/chokidar": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", - "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - ], - "dependencies": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" - }, - "engines": { - "node": ">= 8.10.0" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - } - }, - "node_modules/ci-info": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", - "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", - "dev": true - }, - "node_modules/cipher-base": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", - "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", - "dev": true, - "dependencies": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "node_modules/classic-level": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/classic-level/-/classic-level-1.3.0.tgz", - "integrity": "sha512-iwFAJQYtqRTRM0F6L8h4JCt00ZSGdOyqh7yVrhhjrOpFhmBjNlRUey64MCiyo6UmQHMJ+No3c81nujPv+n9yrg==", - "dev": true, - "hasInstallScript": true, - "dependencies": { - "abstract-level": "^1.0.2", - "catering": "^2.1.0", - "module-error": "^1.0.1", - "napi-macros": "^2.2.2", - "node-gyp-build": "^4.3.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/clean-stack": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", - "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/cliui": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", - "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", - "dev": true, - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^7.0.0" - } - }, - "node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true - }, - "node_modules/command-exists": { - "version": "1.2.9", - "resolved": "https://registry.npmjs.org/command-exists/-/command-exists-1.2.9.tgz", - "integrity": "sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w==", - "dev": true - }, - "node_modules/commander": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/commander/-/commander-3.0.2.tgz", - "integrity": "sha512-Gar0ASD4BDyKC4hl4DwHqDrmvjoxWKZigVnAbn5H1owvm4CxCPdb0HQDehwNYMJpla5+M2tPmPARzhtYuwpHow==", - "dev": true - }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "dev": true - }, - "node_modules/cookie": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", - "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/crc-32": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.2.tgz", - "integrity": "sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==", - "dev": true, - "bin": { - "crc32": "bin/crc32.njs" - }, - "engines": { - "node": ">=0.8" - } - }, - "node_modules/create-hash": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", - "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", - "dev": true, - "dependencies": { - "cipher-base": "^1.0.1", - "inherits": "^2.0.1", - "md5.js": "^1.3.4", - "ripemd160": "^2.0.1", - "sha.js": "^2.4.0" - } - }, - "node_modules/create-hmac": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", - "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", - "dev": true, - "dependencies": { - "cipher-base": "^1.0.3", - "create-hash": "^1.1.0", - "inherits": "^2.0.1", - "ripemd160": "^2.0.0", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" - } - }, - "node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/decamelize": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz", - "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/depd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", - "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/diff": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz", - "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==", - "dev": true, - "engines": { - "node": ">=0.3.1" - } - }, - "node_modules/elliptic": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", - "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", - "dev": true, - "dependencies": { - "bn.js": "^4.11.9", - "brorand": "^1.1.0", - "hash.js": "^1.0.0", - "hmac-drbg": "^1.0.1", - "inherits": "^2.0.4", - "minimalistic-assert": "^1.0.1", - "minimalistic-crypto-utils": "^1.0.1" - } - }, - "node_modules/elliptic/node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true - }, - "node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "node_modules/enquirer": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.4.1.tgz", - "integrity": "sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==", - "dev": true, - "dependencies": { - "ansi-colors": "^4.1.1", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/env-paths": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", - "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/ethereum-cryptography": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-1.2.0.tgz", - "integrity": "sha512-6yFQC9b5ug6/17CQpCyE3k9eKBMdhyVjzUy1WkiuY/E4vj/SXDBbCw8QEIaXqf0Mf2SnY6RmpDcwlUmBSS0EJw==", - "dev": true, - "dependencies": { - "@noble/hashes": "1.2.0", - "@noble/secp256k1": "1.7.1", - "@scure/bip32": "1.1.5", - "@scure/bip39": "1.1.1" - } - }, - "node_modules/ethereumjs-abi": { - "version": "0.6.8", - "resolved": "https://registry.npmjs.org/ethereumjs-abi/-/ethereumjs-abi-0.6.8.tgz", - "integrity": "sha512-Tx0r/iXI6r+lRsdvkFDlut0N08jWMnKRZ6Gkq+Nmw75lZe4e6o3EkSnkaBP5NF6+m5PTGAr9JP43N3LyeoglsA==", - "dev": true, - "dependencies": { - "bn.js": "^4.11.8", - "ethereumjs-util": "^6.0.0" - } - }, - "node_modules/ethereumjs-abi/node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true - }, - "node_modules/ethereumjs-util": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-6.2.1.tgz", - "integrity": "sha512-W2Ktez4L01Vexijrm5EB6w7dg4n/TgpoYU4avuT5T3Vmnw/eCRtiBrJfQYS/DCSvDIOLn2k57GcHdeBcgVxAqw==", - "dev": true, - "dependencies": { - "@types/bn.js": "^4.11.3", - "bn.js": "^4.11.0", - "create-hash": "^1.1.2", - "elliptic": "^6.5.2", - "ethereum-cryptography": "^0.1.3", - "ethjs-util": "0.1.6", - "rlp": "^2.2.3" - } - }, - "node_modules/ethereumjs-util/node_modules/@types/bn.js": { - "version": "4.11.6", - "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-4.11.6.tgz", - "integrity": "sha512-pqr857jrp2kPuO9uRjZ3PwnJTjoQy+fcdxvBTvHm6dkmEL9q+hDD/2j/0ELOBPtPnS8LjCX0gI9nbl8lVkadpg==", - "dev": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/ethereumjs-util/node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true - }, - "node_modules/ethereumjs-util/node_modules/ethereum-cryptography": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz", - "integrity": "sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==", - "dev": true, - "dependencies": { - "@types/pbkdf2": "^3.0.0", - "@types/secp256k1": "^4.0.1", - "blakejs": "^1.1.0", - "browserify-aes": "^1.2.0", - "bs58check": "^2.1.2", - "create-hash": "^1.2.0", - "create-hmac": "^1.1.7", - "hash.js": "^1.1.7", - "keccak": "^3.0.0", - "pbkdf2": "^3.0.17", - "randombytes": "^2.1.0", - "safe-buffer": "^5.1.2", - "scrypt-js": "^3.0.0", - "secp256k1": "^4.0.1", - "setimmediate": "^1.0.5" - } - }, - "node_modules/ethers": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/ethers/-/ethers-5.7.2.tgz", - "integrity": "sha512-wswUsmWo1aOK8rR7DIKiWSw9DbLWe6x98Jrn8wcTflTVvaXhAMaB5zGAXy0GYQEQp9iO1iSHWVyARQm11zUtyg==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "dependencies": { - "@ethersproject/abi": "5.7.0", - "@ethersproject/abstract-provider": "5.7.0", - "@ethersproject/abstract-signer": "5.7.0", - "@ethersproject/address": "5.7.0", - "@ethersproject/base64": "5.7.0", - "@ethersproject/basex": "5.7.0", - "@ethersproject/bignumber": "5.7.0", - "@ethersproject/bytes": "5.7.0", - "@ethersproject/constants": "5.7.0", - "@ethersproject/contracts": "5.7.0", - "@ethersproject/hash": "5.7.0", - "@ethersproject/hdnode": "5.7.0", - "@ethersproject/json-wallets": "5.7.0", - "@ethersproject/keccak256": "5.7.0", - "@ethersproject/logger": "5.7.0", - "@ethersproject/networks": "5.7.1", - "@ethersproject/pbkdf2": "5.7.0", - "@ethersproject/properties": "5.7.0", - "@ethersproject/providers": "5.7.2", - "@ethersproject/random": "5.7.0", - "@ethersproject/rlp": "5.7.0", - "@ethersproject/sha2": "5.7.0", - "@ethersproject/signing-key": "5.7.0", - "@ethersproject/solidity": "5.7.0", - "@ethersproject/strings": "5.7.0", - "@ethersproject/transactions": "5.7.0", - "@ethersproject/units": "5.7.0", - "@ethersproject/wallet": "5.7.0", - "@ethersproject/web": "5.7.1", - "@ethersproject/wordlists": "5.7.0" - } - }, - "node_modules/ethjs-util": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/ethjs-util/-/ethjs-util-0.1.6.tgz", - "integrity": "sha512-CUnVOQq7gSpDHZVVrQW8ExxUETWrnrvXYvYz55wOU8Uj4VCgw56XC2B/fVqQN+f7gmrnRHSLVnFAwsCuNwji8w==", - "dev": true, - "dependencies": { - "is-hex-prefixed": "1.0.0", - "strip-hex-prefix": "1.0.0" - }, - "engines": { - "node": ">=6.5.0", - "npm": ">=3" - } - }, - "node_modules/evp_bytestokey": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", - "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", - "dev": true, - "dependencies": { - "md5.js": "^1.3.4", - "safe-buffer": "^5.1.1" - } - }, - "node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==", - "dev": true, - "dependencies": { - "locate-path": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/flat": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", - "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", - "dev": true, - "bin": { - "flat": "cli.js" - } - }, - "node_modules/follow-redirects": { - "version": "1.15.2", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", - "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/RubenVerborgh" - } - ], - "engines": { - "node": ">=4.0" - }, - "peerDependenciesMeta": { - "debug": { - "optional": true - } - } - }, - "node_modules/fp-ts": { - "version": "1.19.3", - "resolved": "https://registry.npmjs.org/fp-ts/-/fp-ts-1.19.3.tgz", - "integrity": "sha512-H5KQDspykdHuztLTg+ajGN0Z2qUjcEf3Ybxc6hLt0k7/zPkn29XnKnxlBPyW2XIddWrGaJBzBl4VLYOtk39yZg==", - "dev": true - }, - "node_modules/fs-extra": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", - "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", - "dev": true, - "dependencies": { - "graceful-fs": "^4.1.2", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - }, - "engines": { - "node": ">=6 <7 || >=8" - } - }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", - "dev": true - }, - "node_modules/fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "dev": true, - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, - "node_modules/functional-red-black-tree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", - "integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==", - "dev": true - }, - "node_modules/get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true, - "engines": { - "node": "6.* || 8.* || >= 10.*" - } - }, - "node_modules/glob": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", - "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/graceful-fs": { - "version": "4.2.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", - "dev": true - }, - "node_modules/hardhat": { - "version": "2.17.1", - "resolved": "https://registry.npmjs.org/hardhat/-/hardhat-2.17.1.tgz", - "integrity": "sha512-1PxRkfjhEzXs/wDxI5YgzYBxNmvzifBTjYzuopwel+vXpAhCudplusJthN5eig0FTs4qbi828DBIITEDh8x9LA==", - "dev": true, - "dependencies": { - "@ethersproject/abi": "^5.1.2", - "@metamask/eth-sig-util": "^4.0.0", - "@nomicfoundation/ethereumjs-block": "5.0.1", - "@nomicfoundation/ethereumjs-blockchain": "7.0.1", - "@nomicfoundation/ethereumjs-common": "4.0.1", - "@nomicfoundation/ethereumjs-evm": "2.0.1", - "@nomicfoundation/ethereumjs-rlp": "5.0.1", - "@nomicfoundation/ethereumjs-statemanager": "2.0.1", - "@nomicfoundation/ethereumjs-trie": "6.0.1", - "@nomicfoundation/ethereumjs-tx": "5.0.1", - "@nomicfoundation/ethereumjs-util": "9.0.1", - "@nomicfoundation/ethereumjs-vm": "7.0.1", - "@nomicfoundation/solidity-analyzer": "^0.1.0", - "@sentry/node": "^5.18.1", - "@types/bn.js": "^5.1.0", - "@types/lru-cache": "^5.1.0", - "adm-zip": "^0.4.16", - "aggregate-error": "^3.0.0", - "ansi-escapes": "^4.3.0", - "chalk": "^2.4.2", - "chokidar": "^3.4.0", - "ci-info": "^2.0.0", - "debug": "^4.1.1", - "enquirer": "^2.3.0", - "env-paths": "^2.2.0", - "ethereum-cryptography": "^1.0.3", - "ethereumjs-abi": "^0.6.8", - "find-up": "^2.1.0", - "fp-ts": "1.19.3", - "fs-extra": "^7.0.1", - "glob": "7.2.0", - "immutable": "^4.0.0-rc.12", - "io-ts": "1.10.4", - "keccak": "^3.0.2", - "lodash": "^4.17.11", - "mnemonist": "^0.38.0", - "mocha": "^10.0.0", - "p-map": "^4.0.0", - "raw-body": "^2.4.1", - "resolve": "1.17.0", - "semver": "^6.3.0", - "solc": "0.7.3", - "source-map-support": "^0.5.13", - "stacktrace-parser": "^0.1.10", - "tsort": "0.0.1", - "undici": "^5.14.0", - "uuid": "^8.3.2", - "ws": "^7.4.6" - }, - "bin": { - "hardhat": "internal/cli/bootstrap.js" - }, - "peerDependencies": { - "ts-node": "*", - "typescript": "*" - }, - "peerDependenciesMeta": { - "ts-node": { - "optional": true - }, - "typescript": { - "optional": true - } - } - }, - "node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/hash-base": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", - "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", - "dev": true, - "dependencies": { - "inherits": "^2.0.4", - "readable-stream": "^3.6.0", - "safe-buffer": "^5.2.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/hash-base/node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/hash.js": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", - "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", - "dev": true, - "dependencies": { - "inherits": "^2.0.3", - "minimalistic-assert": "^1.0.1" - } - }, - "node_modules/he": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", - "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", - "dev": true, - "bin": { - "he": "bin/he" - } - }, - "node_modules/hmac-drbg": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", - "integrity": "sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==", - "dev": true, - "dependencies": { - "hash.js": "^1.0.3", - "minimalistic-assert": "^1.0.0", - "minimalistic-crypto-utils": "^1.0.1" - } - }, - "node_modules/http-errors": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", - "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", - "dev": true, - "dependencies": { - "depd": "2.0.0", - "inherits": "2.0.4", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "toidentifier": "1.0.1" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/https-proxy-agent": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", - "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", - "dev": true, - "dependencies": { - "agent-base": "6", - "debug": "4" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "dev": true, - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/immutable": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.2.tgz", - "integrity": "sha512-oGXzbEDem9OOpDWZu88jGiYCvIsLHMvGw+8OXlpsvTFvIQplQbjg1B1cvKg8f7Hoch6+NGjpPsH1Fr+Mc2D1aA==", - "dev": true - }, - "node_modules/indent-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", - "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "dev": true, - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true - }, - "node_modules/io-ts": { - "version": "1.10.4", - "resolved": "https://registry.npmjs.org/io-ts/-/io-ts-1.10.4.tgz", - "integrity": "sha512-b23PteSnYXSONJ6JQXRAlvJhuw8KOtkqa87W4wDtvMrud/DTJd5X+NpOOI+O/zZwVq6v0VLAaJ+1EDViKEuN9g==", - "dev": true, - "dependencies": { - "fp-ts": "^1.0.0" - } - }, - "node_modules/is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "dev": true, - "dependencies": { - "binary-extensions": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-buffer": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", - "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "engines": { - "node": ">=4" - } - }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-hex-prefixed": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-hex-prefixed/-/is-hex-prefixed-1.0.0.tgz", - "integrity": "sha512-WvtOiug1VFrE9v1Cydwm+FnXd3+w9GaeVUss5W4v/SLy3UW00vP+6iNF2SdnfiBoLy4bTqVdkftNGTUeOFVsbA==", - "dev": true, - "engines": { - "node": ">=6.5.0", - "npm": ">=3" - } - }, - "node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true, - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/is-plain-obj": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", - "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-unicode-supported": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", - "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/js-sdsl": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.4.2.tgz", - "integrity": "sha512-dwXFwByc/ajSV6m5bcKAPwe4yDDF6D614pxmIi5odytzxRlwqF6nwoiCek80Ixc7Cvma5awClxrzFtxCQvcM8w==", - "dev": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/js-sdsl" - } - }, - "node_modules/js-sha3": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.8.0.tgz", - "integrity": "sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==", - "dev": true - }, - "node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dev": true, - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/jsonfile": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", - "dev": true, - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, - "node_modules/keccak": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/keccak/-/keccak-3.0.3.tgz", - "integrity": "sha512-JZrLIAJWuZxKbCilMpNz5Vj7Vtb4scDG3dMXLOsbzBmQGyjwE61BbW7bJkfKKCShXiQZt3T6sBgALRtmd+nZaQ==", - "dev": true, - "hasInstallScript": true, - "dependencies": { - "node-addon-api": "^2.0.0", - "node-gyp-build": "^4.2.0", - "readable-stream": "^3.6.0" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/klaw": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/klaw/-/klaw-1.3.1.tgz", - "integrity": "sha512-TED5xi9gGQjGpNnvRWknrwAB1eL5GciPfVFOt3Vk1OJCVDQbzuSfrF3hkUQKlsgKrG1F+0t5W0m+Fje1jIt8rw==", - "dev": true, - "optionalDependencies": { - "graceful-fs": "^4.1.9" - } - }, - "node_modules/level": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/level/-/level-8.0.0.tgz", - "integrity": "sha512-ypf0jjAk2BWI33yzEaaotpq7fkOPALKAgDBxggO6Q9HGX2MRXn0wbP1Jn/tJv1gtL867+YOjOB49WaUF3UoJNQ==", - "dev": true, - "dependencies": { - "browser-level": "^1.0.1", - "classic-level": "^1.2.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/level" - } - }, - "node_modules/level-supports": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/level-supports/-/level-supports-4.0.1.tgz", - "integrity": "sha512-PbXpve8rKeNcZ9C1mUicC9auIYFyGpkV9/i6g76tLgANwWhtG2v7I4xNBUlkn3lE2/dZF3Pi0ygYGtLc4RXXdA==", - "dev": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/level-transcoder": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/level-transcoder/-/level-transcoder-1.0.1.tgz", - "integrity": "sha512-t7bFwFtsQeD8cl8NIoQ2iwxA0CL/9IFw7/9gAjOonH0PWTTiRfY7Hq+Ejbsxh86tXobDQ6IOiddjNYIfOBs06w==", - "dev": true, - "dependencies": { - "buffer": "^6.0.3", - "module-error": "^1.0.1" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/locate-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==", - "dev": true, - "dependencies": { - "p-locate": "^2.0.0", - "path-exists": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true - }, - "node_modules/log-symbols": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", - "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", - "dev": true, - "dependencies": { - "chalk": "^4.1.0", - "is-unicode-supported": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/log-symbols/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/log-symbols/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/log-symbols/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/log-symbols/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/log-symbols/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/log-symbols/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/lru_map": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/lru_map/-/lru_map-0.3.3.tgz", - "integrity": "sha512-Pn9cox5CsMYngeDbmChANltQl+5pi6XmTrraMSzhPmMBbmgcxmqWry0U3PGapCU1yB4/LqCcom7qhHZiF/jGfQ==", - "dev": true - }, - "node_modules/lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", - "dev": true, - "dependencies": { - "yallist": "^3.0.2" - } - }, - "node_modules/mcl-wasm": { - "version": "0.7.9", - "resolved": "https://registry.npmjs.org/mcl-wasm/-/mcl-wasm-0.7.9.tgz", - "integrity": "sha512-iJIUcQWA88IJB/5L15GnJVnSQJmf/YaxxV6zRavv83HILHaJQb6y0iFyDMdDO0gN8X37tdxmAOrH/P8B6RB8sQ==", - "dev": true, - "engines": { - "node": ">=8.9.0" - } - }, - "node_modules/md5.js": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", - "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", - "dev": true, - "dependencies": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, - "node_modules/memory-level": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/memory-level/-/memory-level-1.0.0.tgz", - "integrity": "sha512-UXzwewuWeHBz5krr7EvehKcmLFNoXxGcvuYhC41tRnkrTbJohtS7kVn9akmgirtRygg+f7Yjsfi8Uu5SGSQ4Og==", - "dev": true, - "dependencies": { - "abstract-level": "^1.0.0", - "functional-red-black-tree": "^1.0.1", - "module-error": "^1.0.1" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/memorystream": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz", - "integrity": "sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==", - "dev": true, - "engines": { - "node": ">= 0.10.0" - } - }, - "node_modules/minimalistic-assert": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", - "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", - "dev": true - }, - "node_modules/minimalistic-crypto-utils": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", - "integrity": "sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==", - "dev": true - }, - "node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/mnemonist": { - "version": "0.38.5", - "resolved": "https://registry.npmjs.org/mnemonist/-/mnemonist-0.38.5.tgz", - "integrity": "sha512-bZTFT5rrPKtPJxj8KSV0WkPyNxl72vQepqqVUAW2ARUpUSF2qXMB6jZj7hW5/k7C1rtpzqbD/IIbJwLXUjCHeg==", - "dev": true, - "dependencies": { - "obliterator": "^2.0.0" - } - }, - "node_modules/mocha": { - "version": "10.2.0", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.2.0.tgz", - "integrity": "sha512-IDY7fl/BecMwFHzoqF2sg/SHHANeBoMMXFlS9r0OXKDssYE1M5O43wUY/9BVPeIvfH2zmEbBfseqN9gBQZzXkg==", - "dev": true, - "dependencies": { - "ansi-colors": "4.1.1", - "browser-stdout": "1.3.1", - "chokidar": "3.5.3", - "debug": "4.3.4", - "diff": "5.0.0", - "escape-string-regexp": "4.0.0", - "find-up": "5.0.0", - "glob": "7.2.0", - "he": "1.2.0", - "js-yaml": "4.1.0", - "log-symbols": "4.1.0", - "minimatch": "5.0.1", - "ms": "2.1.3", - "nanoid": "3.3.3", - "serialize-javascript": "6.0.0", - "strip-json-comments": "3.1.1", - "supports-color": "8.1.1", - "workerpool": "6.2.1", - "yargs": "16.2.0", - "yargs-parser": "20.2.4", - "yargs-unparser": "2.0.0" - }, - "bin": { - "_mocha": "bin/_mocha", - "mocha": "bin/mocha.js" - }, - "engines": { - "node": ">= 14.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/mochajs" - } - }, - "node_modules/mocha/node_modules/ansi-colors": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", - "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/mocha/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/mocha/node_modules/escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/mocha/node_modules/find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", - "dev": true, - "dependencies": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/mocha/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/mocha/node_modules/locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", - "dev": true, - "dependencies": { - "p-locate": "^5.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/mocha/node_modules/minimatch": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.0.1.tgz", - "integrity": "sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==", - "dev": true, - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/mocha/node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true - }, - "node_modules/mocha/node_modules/p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, - "dependencies": { - "yocto-queue": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/mocha/node_modules/p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", - "dev": true, - "dependencies": { - "p-limit": "^3.0.2" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/mocha/node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/mocha/node_modules/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" - } - }, - "node_modules/module-error": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/module-error/-/module-error-1.0.2.tgz", - "integrity": "sha512-0yuvsqSCv8LbaOKhnsQ/T5JhyFlCYLPXK3U2sgV10zoKQwzs/MyfuQUOZQ1V/6OCOJsK/TRgNVrPuPDqtdMFtA==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "node_modules/nanoid": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.3.tgz", - "integrity": "sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w==", - "dev": true, - "bin": { - "nanoid": "bin/nanoid.cjs" - }, - "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" - } - }, - "node_modules/napi-macros": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/napi-macros/-/napi-macros-2.2.2.tgz", - "integrity": "sha512-hmEVtAGYzVQpCKdbQea4skABsdXW4RUh5t5mJ2zzqowJS2OyXZTU1KhDVFhx+NlWZ4ap9mqR9TcDO3LTTttd+g==", - "dev": true - }, - "node_modules/node-addon-api": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-2.0.2.tgz", - "integrity": "sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA==", - "dev": true - }, - "node_modules/node-gyp-build": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.6.0.tgz", - "integrity": "sha512-NTZVKn9IylLwUzaKjkas1e4u2DLNcV4rdYagA4PWdPwW87Bi7z+BznyKSRwS/761tV/lzCGXplWsiaMjLqP2zQ==", - "dev": true, - "bin": { - "node-gyp-build": "bin.js", - "node-gyp-build-optional": "optional.js", - "node-gyp-build-test": "build-test.js" - } - }, - "node_modules/normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/obliterator": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/obliterator/-/obliterator-2.0.4.tgz", - "integrity": "sha512-lgHwxlxV1qIg1Eap7LgIeoBWIMFibOjbrYPIPJZcI1mmGAI2m3lNYpK12Y+GBdPQ0U1hRwSord7GIaawz962qQ==", - "dev": true - }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dev": true, - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/os-tmpdir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/p-limit": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", - "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", - "dev": true, - "dependencies": { - "p-try": "^1.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/p-locate": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==", - "dev": true, - "dependencies": { - "p-limit": "^1.1.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/p-map": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", - "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", - "dev": true, - "dependencies": { - "aggregate-error": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-try": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", - "integrity": "sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true - }, - "node_modules/pbkdf2": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz", - "integrity": "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==", - "dev": true, - "dependencies": { - "create-hash": "^1.1.2", - "create-hmac": "^1.1.4", - "ripemd160": "^2.0.1", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" - }, - "engines": { - "node": ">=0.12" - } - }, - "node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true, - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/randombytes": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", - "dev": true, - "dependencies": { - "safe-buffer": "^5.1.0" - } - }, - "node_modules/raw-body": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", - "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", - "dev": true, - "dependencies": { - "bytes": "3.1.2", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "dev": true, - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "dev": true, - "dependencies": { - "picomatch": "^2.2.1" - }, - "engines": { - "node": ">=8.10.0" - } - }, - "node_modules/require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/require-from-string": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", - "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/resolve": { - "version": "1.17.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz", - "integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==", - "dev": true, - "dependencies": { - "path-parse": "^1.0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "dev": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - } - }, - "node_modules/ripemd160": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", - "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", - "dev": true, - "dependencies": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1" - } - }, - "node_modules/rlp": { - "version": "2.2.7", - "resolved": "https://registry.npmjs.org/rlp/-/rlp-2.2.7.tgz", - "integrity": "sha512-d5gdPmgQ0Z+AklL2NVXr/IoSjNZFfTVvQWzL/AM2AOcSzYP2xjlb0AC8YyCLc41MSNf6P6QVtjgPdmVtzb+4lQ==", - "dev": true, - "dependencies": { - "bn.js": "^5.2.0" - }, - "bin": { - "rlp": "bin/rlp" - } - }, - "node_modules/run-parallel-limit": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/run-parallel-limit/-/run-parallel-limit-1.1.0.tgz", - "integrity": "sha512-jJA7irRNM91jaKc3Hcl1npHsFLOXOoTkPCUL1JEa1R82O2miplXXRaGdjW/KM/98YQWDhJLiSs793CnXfblJUw==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "queue-microtask": "^1.2.2" - } - }, - "node_modules/rustbn.js": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/rustbn.js/-/rustbn.js-0.2.0.tgz", - "integrity": "sha512-4VlvkRUuCJvr2J6Y0ImW7NvTCriMi7ErOAqWk1y69vAdoNIzCF3yPmgeNzx+RQTLEDFq5sHfscn1MwHxP9hNfA==", - "dev": true - }, - "node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true - }, - "node_modules/safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "dev": true - }, - "node_modules/scrypt-js": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/scrypt-js/-/scrypt-js-3.0.1.tgz", - "integrity": "sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA==", - "dev": true - }, - "node_modules/secp256k1": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/secp256k1/-/secp256k1-4.0.3.tgz", - "integrity": "sha512-NLZVf+ROMxwtEj3Xa562qgv2BK5e2WNmXPiOdVIPLgs6lyTzMvBq0aWTYMI5XCP9jZMVKOcqZLw/Wc4vDkuxhA==", - "dev": true, - "hasInstallScript": true, - "dependencies": { - "elliptic": "^6.5.4", - "node-addon-api": "^2.0.0", - "node-gyp-build": "^4.2.0" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/serialize-javascript": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", - "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", - "dev": true, - "dependencies": { - "randombytes": "^2.1.0" - } - }, - "node_modules/setimmediate": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", - "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==", - "dev": true - }, - "node_modules/setprototypeof": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", - "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", - "dev": true - }, - "node_modules/sha.js": { - "version": "2.4.11", - "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", - "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", - "dev": true, - "dependencies": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - }, - "bin": { - "sha.js": "bin.js" - } - }, - "node_modules/solc": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/solc/-/solc-0.7.3.tgz", - "integrity": "sha512-GAsWNAjGzIDg7VxzP6mPjdurby3IkGCjQcM8GFYZT6RyaoUZKmMU6Y7YwG+tFGhv7dwZ8rmR4iwFDrrD99JwqA==", - "dev": true, - "dependencies": { - "command-exists": "^1.2.8", - "commander": "3.0.2", - "follow-redirects": "^1.12.1", - "fs-extra": "^0.30.0", - "js-sha3": "0.8.0", - "memorystream": "^0.3.1", - "require-from-string": "^2.0.0", - "semver": "^5.5.0", - "tmp": "0.0.33" - }, - "bin": { - "solcjs": "solcjs" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/solc/node_modules/fs-extra": { - "version": "0.30.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-0.30.0.tgz", - "integrity": "sha512-UvSPKyhMn6LEd/WpUaV9C9t3zATuqoqfWc3QdPhPLb58prN9tqYPlPWi8Krxi44loBoUzlobqZ3+8tGpxxSzwA==", - "dev": true, - "dependencies": { - "graceful-fs": "^4.1.2", - "jsonfile": "^2.1.0", - "klaw": "^1.0.0", - "path-is-absolute": "^1.0.0", - "rimraf": "^2.2.8" - } - }, - "node_modules/solc/node_modules/jsonfile": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz", - "integrity": "sha512-PKllAqbgLgxHaj8TElYymKCAgrASebJrWpTnEkOaTowt23VKXXN0sUeriJ+eh7y6ufb/CC5ap11pz71/cM0hUw==", - "dev": true, - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, - "node_modules/solc/node_modules/semver": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", - "dev": true, - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/source-map-support": { - "version": "0.5.21", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", - "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", - "dev": true, - "dependencies": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "node_modules/stacktrace-parser": { - "version": "0.1.10", - "resolved": "https://registry.npmjs.org/stacktrace-parser/-/stacktrace-parser-0.1.10.tgz", - "integrity": "sha512-KJP1OCML99+8fhOHxwwzyWrlUuVX5GQ0ZpJTd1DFXhdkrvg1szxfHhawXUZ3g9TkXORQd4/WG68jMlQZ2p8wlg==", - "dev": true, - "dependencies": { - "type-fest": "^0.7.1" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/stacktrace-parser/node_modules/type-fest": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.7.1.tgz", - "integrity": "sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/statuses": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", - "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/streamsearch": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz", - "integrity": "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==", - "dev": true, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "dev": true, - "dependencies": { - "safe-buffer": "~5.2.0" - } - }, - "node_modules/string_decoder/node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-hex-prefix": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/strip-hex-prefix/-/strip-hex-prefix-1.0.0.tgz", - "integrity": "sha512-q8d4ue7JGEiVcypji1bALTos+0pWtyGlivAWyPuTkHzuTCJqrK9sWxYQZUq6Nq3cuyv3bm734IhHvHtGGURU6A==", - "dev": true, - "dependencies": { - "is-hex-prefixed": "1.0.0" - }, - "engines": { - "node": ">=6.5.0", - "npm": ">=3" - } - }, - "node_modules/strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/tmp": { - "version": "0.0.33", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", - "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", - "dev": true, - "dependencies": { - "os-tmpdir": "~1.0.2" - }, - "engines": { - "node": ">=0.6.0" - } - }, - "node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, - "node_modules/toidentifier": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", - "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", - "dev": true, - "engines": { - "node": ">=0.6" - } - }, - "node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - }, - "node_modules/tsort": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/tsort/-/tsort-0.0.1.tgz", - "integrity": "sha512-Tyrf5mxF8Ofs1tNoxA13lFeZ2Zrbd6cKbuH3V+MQ5sb6DtBj5FjrXVsRWT8YvNAQTqNoz66dz1WsbigI22aEnw==", - "dev": true - }, - "node_modules/tweetnacl": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-1.0.3.tgz", - "integrity": "sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==", - "dev": true - }, - "node_modules/tweetnacl-util": { - "version": "0.15.1", - "resolved": "https://registry.npmjs.org/tweetnacl-util/-/tweetnacl-util-0.15.1.tgz", - "integrity": "sha512-RKJBIj8lySrShN4w6i/BonWp2Z/uxwC3h4y7xsRrpP59ZboCd0GpEVsOnMDYLMmKBpYhb5TgHzZXy7wTfYFBRw==", - "dev": true - }, - "node_modules/type-fest": { - "version": "0.21.3", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", - "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/undici": { - "version": "5.23.0", - "resolved": "https://registry.npmjs.org/undici/-/undici-5.23.0.tgz", - "integrity": "sha512-1D7w+fvRsqlQ9GscLBwcAJinqcZGHUKjbOmXdlE/v8BvEGXjeWAax+341q44EuTcHXXnfyKNbKRq4Lg7OzhMmg==", - "dev": true, - "dependencies": { - "busboy": "^1.6.0" - }, - "engines": { - "node": ">=14.0" - } - }, - "node_modules/universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", - "dev": true, - "engines": { - "node": ">= 4.0.0" - } - }, - "node_modules/unpipe": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", - "dev": true - }, - "node_modules/uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "dev": true, - "bin": { - "uuid": "dist/bin/uuid" - } - }, - "node_modules/workerpool": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.2.1.tgz", - "integrity": "sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw==", - "dev": true - }, - "node_modules/wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/wrap-ansi/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/wrap-ansi/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/wrap-ansi/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "dev": true - }, - "node_modules/ws": { - "version": "7.5.9", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", - "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", - "dev": true, - "engines": { - "node": ">=8.3.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - }, - "node_modules/y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "dev": true - }, - "node_modules/yargs": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", - "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", - "dev": true, - "dependencies": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.0", - "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/yargs-parser": { - "version": "20.2.4", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", - "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/yargs-unparser": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz", - "integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==", - "dev": true, - "dependencies": { - "camelcase": "^6.0.0", - "decamelize": "^4.0.0", - "flat": "^5.0.2", - "is-plain-obj": "^2.1.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/yocto-queue": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - } - } -} diff --git a/package.json b/package.json deleted file mode 100644 index ae34ce59..00000000 --- a/package.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "devDependencies": { - "hardhat": "^2.17.1" - } -} diff --git a/poetry.lock b/poetry.lock index 5d3dbe42..bdfa2499 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1558,6 +1558,17 @@ files = [ {file = "six-1.16.0.tar.gz", hash = "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926"}, ] +[[package]] +name = "timeout-decorator" +version = "0.5.0" +description = "Timeout decorator" +category = "main" +optional = false +python-versions = "*" +files = [ + {file = "timeout-decorator-0.5.0.tar.gz", hash = "sha256:6a2f2f58db1c5b24a2cc79de6345760377ad8bdc13813f5265f6c3e63d16b3d7"}, +] + [[package]] name = "tomli" version = "2.0.1" @@ -1812,4 +1823,4 @@ multidict = ">=4.0" [metadata] lock-version = "2.0" python-versions = ">=3.9,<3.11" -content-hash = "671e086219dba68d38a2681b1e0b6666dee97d7fecc06530e1c7076246101756" +content-hash = "0ffead054631f16e929a7e8e7c68cacd70428c1507834b30c159c3d99c74ec4f" diff --git a/pyproject.toml b/pyproject.toml index 139e5822..62081dcb 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -13,6 +13,7 @@ include = [ python = ">=3.9,<3.11" numpy = "1.23.3" prometheus-client = "0.14.1" +timeout-decorator = "^0.5.0" web3-multi-provider = "^0.6.0" schema = "^0.7.5" web3 = "^5.30.0" @@ -28,7 +29,3 @@ pythonpath = [ "src", "tests", ] -markers = [ - "unit", # offline - "integration", # hardhat fork -] diff --git a/src/blockchain/buffered_eth.py b/src/blockchain/buffered_eth.py new file mode 100644 index 00000000..eee491e1 --- /dev/null +++ b/src/blockchain/buffered_eth.py @@ -0,0 +1,16 @@ +from math import sqrt + + +def get_recommended_buffered_ether_to_deposit(gas_fee: int) -> int: + """Returns suggested minimum buffered ether to deposit (in Wei)""" + apr = 0.039 # Protocol APR + # ether/14 days : select sum(tr.value)/1e18 from ethereum."transactions" as tr + # where tr.to = '\xae7ab96520DE3A18E5e111B5EaAb095312D7fE84' + # and tr.block_time >= '2021-12-01' and tr.block_time < '2021-12-15' and tr.value < 600*1e18; + a = 12 # ~ ether/hour + keys_hour = a / 32 + p = 32 * 10 ** 18 * apr / 365 / 24 # ~ Profit in hour + cc = 378300 # gas constant for every deposit tx that should be paid + multiply_constant = 1.5 # we will get profit with constant from 1 to 2, but the most profitable will be 1.5 + + return sqrt(multiply_constant * cc * gas_fee * keys_hour / p) * 32 * 10 ** 18 diff --git a/src/blockchain/constants.py b/src/blockchain/constants.py index 8ffe2719..0817fdd1 100644 --- a/src/blockchain/constants.py +++ b/src/blockchain/constants.py @@ -1 +1,40 @@ -SLOT_TIME = 12 +from enum import IntEnum + + +class Network(IntEnum): + Mainnet = 1 + Kovan = 42 + Rinkeby = 4 + Görli = 5 + xDai = 100 + Ropsten = 3 + Zhejiang = 1337803 + + +NETWORK_CHAIN_ID = { + 'mainnet': 1, + 'goerli': 5, + 'zhejiang': 1337803, +} + + +FLASHBOTS_RPC = { + Network.Mainnet: "https://relay.flashbots.net", + Network.Görli: "https://relay-goerli.flashbots.net", +} + + +LIDO_LOCATOR = { + Network.Mainnet: '0xC1d0b3DE6792Bf6b4b37EccdcC24e45978Cfd2Eb', + Network.Görli: '0x1eDf09b5023DC86737b59dE68a8130De878984f5', +} + +NODE_OPS_ADDRESSES = { + Network.Mainnet: "0x55032650b14df07b85bF18A3a3eC8E0Af2e028d5", + Network.Görli: "0x9D4AF1Ee19Dad8857db3a45B0374c81c8A1C6320", +} + +DEPOSIT_CONTRACT = { + Network.Mainnet: "0x00000000219ab540356cBB839Cbe05303d7705Fa", + Network.Görli: "0xff50ed3d0ec03aC01D4C79aAd74928BFF48a7b2b", +} diff --git a/src/blockchain/contracts.py b/src/blockchain/contracts.py new file mode 100644 index 00000000..b335e981 --- /dev/null +++ b/src/blockchain/contracts.py @@ -0,0 +1,63 @@ +import json + +from web3 import Web3 + +from blockchain.constants import LIDO_LOCATOR, NODE_OPS_ADDRESSES, DEPOSIT_CONTRACT +from variables import WEB3_CHAIN_ID + + +def load_abi(abi_path, abi_name): + f = open(f'{abi_path}{abi_name}.json') + return json.load(f) + + +class Contracts: + __initialized = False + + lido = None + node_operator_registry = None + deposit_security_module = None + deposit_contract = None + staking_router = None + + def initialize(self, w3: Web3, abi_path='./interfaces/'): + __initialized = True + + self.lido_locator = w3.eth.contract( + address=LIDO_LOCATOR[WEB3_CHAIN_ID], + abi=load_abi(abi_path, 'LidoLocator'), + ) + + self.lido = w3.eth.contract( + address=self.lido_locator.functions.lido().call(), + abi=load_abi(abi_path, 'Lido'), + ) + + self.deposit_security_module = w3.eth.contract( + address=self.lido_locator.functions.depositSecurityModule().call(), + abi=load_abi(abi_path, 'DepositSecurityModule'), + ) + + self.staking_router = w3.eth.contract( + address=self.lido_locator.functions.stakingRouter().call(), + abi=load_abi(abi_path, 'StakingRouter'), + ) + + self.deposit_contract = w3.eth.contract( + address=DEPOSIT_CONTRACT[WEB3_CHAIN_ID], + abi=load_abi(abi_path, 'DepositContract'), + ) + + # TODO remove after get_nonce will be replaced with staking call + self.node_operator_registry = w3.eth.contract( + address=NODE_OPS_ADDRESSES[WEB3_CHAIN_ID], + abi=load_abi(abi_path, 'NodeOperatorRegistry'), + ) + + @staticmethod + def load_abi(abi_name): + f = open(f'../../interfaces/{abi_name}.json') + return json.load(f) + + +contracts = Contracts() diff --git a/src/blockchain/contracts/__init__.py b/src/blockchain/contracts/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/src/blockchain/contracts/base_interface.py b/src/blockchain/contracts/base_interface.py deleted file mode 100644 index a2bd6f08..00000000 --- a/src/blockchain/contracts/base_interface.py +++ /dev/null @@ -1,22 +0,0 @@ -import json -from typing import Optional, Any - -from web3 import Web3 -from web3.contract import Contract - - -class ContractInterface(Contract): - abi_path: str = None - - @staticmethod - def load_abi(abi_file: str) -> dict: - with open(abi_file) as abi_json: - return json.load(abi_json) - - @classmethod - def factory(cls, web3: Web3, class_name: Optional[str] = None, **kwargs: Any) -> 'Contract': - if cls.abi_path is None: - raise AttributeError(f'abi_path attribute is missing in {cls.__name__} class') - - kwargs['abi'] = cls.load_abi(cls.abi_path) - return super().factory(web3, class_name, **kwargs) diff --git a/src/blockchain/contracts/deposit.py b/src/blockchain/contracts/deposit.py deleted file mode 100644 index 8be013a3..00000000 --- a/src/blockchain/contracts/deposit.py +++ /dev/null @@ -1,24 +0,0 @@ -import logging - -from eth_typing import BlockIdentifier, Hash32 - -from blockchain.contracts.base_interface import ContractInterface - - -logger = logging.getLogger(__name__) - - -class DepositContract(ContractInterface): - abi_path = './interfaces/DepositContract.json' - - def get_deposit_root(self, block_identifier: BlockIdentifier = 'latest') -> Hash32: - """ - Query the current deposit root hash. - """ - response = self.functions.get_deposit_root().call(block_identifier=block_identifier) - logger.info({ - 'msg': f'Call `get_deposit_root()`.', - 'value': response.hex(), - 'block_identifier': block_identifier.__repr__(), - }) - return response diff --git a/src/blockchain/contracts/deposit_security_module.py b/src/blockchain/contracts/deposit_security_module.py deleted file mode 100644 index e6b2f204..00000000 --- a/src/blockchain/contracts/deposit_security_module.py +++ /dev/null @@ -1,129 +0,0 @@ -import logging - -from eth_typing import ChecksumAddress, Hash32 -from web3.types import BlockIdentifier - -from blockchain.contracts.base_interface import ContractInterface - - -logger = logging.getLogger(__name__) - - -class DepositSecurityModuleContract(ContractInterface): - abi_path = './interfaces/DepositSecurityModule.json' - - def get_guardian_quorum(self, block_identifier: BlockIdentifier = 'latest') -> int: - """Returns number of valid guardian signatures required to vet (depositRoot, nonce) pair.""" - response = self.functions.getGuardianQuorum().call(block_identifier=block_identifier) - logger.info({'msg': f'Call `getGuardianQuorum()`.', 'value': response, 'block_identifier': block_identifier.__repr__()}) - return response - - def get_guardians(self, block_identifier: BlockIdentifier = 'latest') -> list[ChecksumAddress]: - """Returns guardian committee member list.""" - response = self.functions.getGuardians().call(block_identifier=block_identifier) - logger.info({'msg': f'Call `getGuardians()`.', 'value': response, 'block_identifier': block_identifier.__repr__()}) - return response - - def get_attest_message_prefix(self, block_identifier: BlockIdentifier = 'latest') -> bytes: - response = self.functions.ATTEST_MESSAGE_PREFIX().call(block_identifier=block_identifier) - logger.info({'msg': f'Call `ATTEST_MESSAGE_PREFIX()`.', 'value': response.hex(), 'block_identifier': block_identifier.__repr__()}) - return response - - def can_deposit(self, staking_module_id: int, block_identifier: BlockIdentifier = 'latest') -> bool: - """ - Returns whether LIDO.deposit() can be called, given that the caller will provide - guardian attestations of non-stale deposit root and `nonce`, and the number of - such attestations will be enough to reach quorum. - """ - response = self.functions.canDeposit(staking_module_id).call(block_identifier=block_identifier) - logger.info({'msg': f'Call `canDeposit({staking_module_id})`.', 'value': response, 'block_identifier': block_identifier.__repr__()}) - return response - - def deposit_buffered_ether( - self, - block_number: int, - block_hash: Hash32, - deposit_root: Hash32, - staking_module_id: int, - nonce: int, - deposit_call_data: bytes, - guardian_signatures: list[tuple[bytes, bytes]], - ): - """ - Calls LIDO.deposit(maxDepositsPerBlock, stakingModuleId, depositCalldata). - - Reverts if any of the following is true: - 1. IDepositContract.get_deposit_root() != depositRoot. - 2. StakingModule.getNonce() != nonce. - 3. The number of guardian signatures is less than getGuardianQuorum(). - 4. An invalid or non-guardian signature received. - 5. block.number - StakingModule.getLastDepositBlock() < minDepositBlockDistance. - 6. blockhash(blockNumber) != blockHash. - - Signatures must be sorted in ascending order by address of the guardian. Each signature must - be produced for the keccak256 hash of the following message (each component taking 32 bytes): - - | ATTEST_MESSAGE_PREFIX | blockNumber | blockHash | depositRoot | stakingModuleId | nonce | - """ - response = self.functions.depositBufferedEther( - block_number, - block_hash, - deposit_root, - staking_module_id, - nonce, - deposit_call_data, - guardian_signatures, - ) - logger.info({'msg': 'Build `depositBufferedEther({}, {}, {}, {}, {}, {}, {})` tx.'.format( - block_number, - block_hash, - deposit_root, - staking_module_id, - nonce, - deposit_call_data, - guardian_signatures, - )}) - return response - - def get_pause_message_prefix(self, block_identifier: BlockIdentifier = 'latest') -> bytes: - response = self.functions.PAUSE_MESSAGE_PREFIX().call(block_identifier=block_identifier) - logger.info({'msg': f'Call `PAUSE_MESSAGE_PREFIX()`.', 'value': response.hex(), 'block_identifier': block_identifier.__repr__()}) - return response - - def get_pause_intent_validity_period_blocks(self, block_identifier: BlockIdentifier = 'latest') -> int: - """Returns current `pauseIntentValidityPeriodBlocks` contract parameter (see `pauseDeposits`).""" - response = self.functions.getPauseIntentValidityPeriodBlocks().call(block_identifier=block_identifier) - logger.info({'msg': f'Call `getPauseIntentValidityPeriodBlocks()`.', 'value': response, 'block_identifier': block_identifier.__repr__()}) - return response - - def pause_deposits( - self, - block_number: int, - staking_module_id: int, - guardian_signature: tuple[str, str], - ): - """ - Pauses deposits for staking module given that both conditions are satisfied (reverts otherwise): - - 1. The function is called by the guardian with index guardianIndex OR sig - is a valid signature by the guardian with index guardianIndex of the data - defined below. - - 2. block.number - blockNumber <= pauseIntentValidityPeriodBlocks - - The signature, if present, must be produced for keccak256 hash of the following - message (each component taking 32 bytes): - - | PAUSE_MESSAGE_PREFIX | blockNumber | stakingModuleId | - """ - tx = self.functions.pauseDeposits( - block_number, - staking_module_id, - guardian_signature - ) - logger.info({'msg': 'Build `pauseDeposits({}, {}, {})` tx.'.format( - block_number, - staking_module_id, - guardian_signature, - )}) - return tx diff --git a/src/blockchain/contracts/lido.py b/src/blockchain/contracts/lido.py deleted file mode 100644 index 198d654c..00000000 --- a/src/blockchain/contracts/lido.py +++ /dev/null @@ -1,21 +0,0 @@ -import logging - -from web3.types import BlockIdentifier, Wei - -from blockchain.contracts.base_interface import ContractInterface - - -logger = logging.getLogger(__name__) - - -class LidoContract(ContractInterface): - abi_path = './interfaces/Lido.json' - - def get_depositable_ether(self, block_identifier: BlockIdentifier = 'latest') -> Wei: - """ - Returns depositable ether amount. - Unfinalized stETH required by WithdrawalQueue are excluded from buffered ether. - """ - response = self.functions.getDepositableEther().call(block_identifier=block_identifier) - logger.info({'msg': f'Call `getDepositableEther()`.', 'value': response, 'block_identifier': block_identifier.__repr__()}) - return response diff --git a/src/blockchain/contracts/lido_locator.py b/src/blockchain/contracts/lido_locator.py deleted file mode 100644 index e2b5fd3a..00000000 --- a/src/blockchain/contracts/lido_locator.py +++ /dev/null @@ -1,28 +0,0 @@ -import logging - -from eth_typing import ChecksumAddress -from web3.types import BlockIdentifier - -from blockchain.contracts.base_interface import ContractInterface - - -logger = logging.getLogger(__name__) - - -class LidoLocatorContract(ContractInterface): - abi_path = './interfaces/LidoLocator.json' - - def lido(self, block_identifier: BlockIdentifier = 'latest') -> ChecksumAddress: - response = self.functions.lido().call(block_identifier=block_identifier) - logger.info({'msg': f'Call `lido()`.', 'value': response, 'block_identifier': block_identifier.__repr__()}) - return response - - def deposit_security_module(self, block_identifier: BlockIdentifier = 'latest') -> ChecksumAddress: - response = self.functions.depositSecurityModule().call(block_identifier=block_identifier) - logger.info({'msg': f'Call `depositSecurityModule()`.', 'value': response, 'block_identifier': block_identifier.__repr__()}) - return response - - def staking_router(self, block_identifier: BlockIdentifier = 'latest') -> ChecksumAddress: - response = self.functions.stakingRouter().call(block_identifier=block_identifier) - logger.info({'msg': f'Call `stakingRouter()`.', 'value': response, 'block_identifier': block_identifier.__repr__()}) - return response diff --git a/src/blockchain/contracts/staking_router.py b/src/blockchain/contracts/staking_router.py deleted file mode 100644 index f57d759f..00000000 --- a/src/blockchain/contracts/staking_router.py +++ /dev/null @@ -1,102 +0,0 @@ -import logging - -from web3.types import Wei, BlockIdentifier - -from blockchain.contracts.base_interface import ContractInterface - - -logger = logging.getLogger(__name__) - - -class StakingRouterContract(ContractInterface): - abi_path = './interfaces/StakingRouter.json' - - def get_max_deposits_count( - self, - staking_module_id: int, - depositable_ether: Wei, - block_identifier: BlockIdentifier = 'latest', - ) -> int: - """ - Calculate the max count of deposits which the staking module can provide data for based - on the passed `_maxDepositsValue` amount - @param staking_module_id id of the staking module to be deposited - @param depositable_ether max amount of ether that might be used for deposits count calculation - @return max number of deposits might be done using the given staking module - """ - response = self.functions.getStakingModuleMaxDepositsCount( - staking_module_id, - depositable_ether, - ).call(block_identifier=block_identifier) - logger.info({ - 'msg': f'Call `getStakingModuleMaxDepositsCount({staking_module_id}, {depositable_ether})`.', - 'value': response, - 'block_identifier': block_identifier.__repr__(), - }) - return response - - def get_staking_module_ids(self, block_identifier: BlockIdentifier = 'latest') -> list[int]: - """Returns the ids of all registered staking modules""" - response = self.functions.getStakingModuleIds().call(block_identifier=block_identifier) - logger.info({ - 'msg': f'Call `get_staking_module_ids()`.', - 'value': response, - 'block_identifier': block_identifier.__repr__(), - }) - return response - - def is_staking_module_active( - self, - staking_module_id: int, - block_identifier: BlockIdentifier = 'latest', - ) -> bool: - response = self.functions.getStakingModuleIsActive(staking_module_id).call(block_identifier=block_identifier) - logger.info({ - 'msg': f'Call `getStakingModuleIsActive({staking_module_id})`.', - 'value': response, - 'block_identifier': block_identifier.__repr__(), - }) - return response - - def is_staking_module_deposits_paused( - self, - staking_module_id: int, - block_identifier: BlockIdentifier = 'latest', - ) -> bool: - response = self.functions.getStakingModuleIsDepositsPaused(staking_module_id).call(block_identifier=block_identifier) - logger.info({ - 'msg': f'Call `getStakingModuleIsDepositsPaused({staking_module_id})`.', - 'value': response, - 'block_identifier': block_identifier.__repr__(), - }) - return response - - def get_staking_module_nonce( - self, - staking_module_id: int, - block_identifier: BlockIdentifier = 'latest', - ) -> int: - response = self.functions.getStakingModuleNonce(staking_module_id).call(block_identifier=block_identifier) - logger.info({ - 'msg': f'Call `getStakingModuleNonce({staking_module_id})`.', - 'value': response, - 'block_identifier': block_identifier.__repr__(), - }) - return response - - def get_staking_module_deposits_count( - self, - staking_module_id: int, - depositable_ether: Wei, - block_identifier: BlockIdentifier = 'latest', - ) -> int: - response = self.functions.getStakingModuleMaxDepositsCount( - staking_module_id, - depositable_ether, - ).call(block_identifier=block_identifier) - logger.info({ - 'msg': f'Call `getStakingModuleMaxDepositsCount({staking_module_id}, {depositable_ether})`.', - 'value': response, - 'block_identifier': block_identifier.__repr__(), - }) - return response diff --git a/src/blockchain/deposit_strategy/__init__.py b/src/blockchain/deposit_strategy/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/src/blockchain/deposit_strategy/curated_module.py b/src/blockchain/deposit_strategy/curated_module.py deleted file mode 100644 index 377a21f9..00000000 --- a/src/blockchain/deposit_strategy/curated_module.py +++ /dev/null @@ -1,112 +0,0 @@ -import logging -from typing import Literal - -import numpy -from eth_typing import BlockNumber -from web3 import Web3 -from web3.types import Wei - -import variables -from blockchain.deposit_strategy.interface import ModuleDepositStrategyInterface -from metrics.metrics import GAS_FEE, DEPOSITABLE_ETHER, POSSIBLE_DEPOSITS_AMOUNT - - -logger = logging.getLogger(__name__) - - -class CuratedModuleDepositStrategy(ModuleDepositStrategyInterface): - BLOCKS_IN_ONE_DAY = 24 * 60 * 60 // 12 - - CACHE_BLOCK_AMOUNT = 300 - REQUEST_SIZE = 1024 - - def __init__(self, w3: Web3, module_id: int): - super().__init__(w3, module_id) - - self._gas_fees: list = [] - - # Used for caching - self._latest_fetched_block: int = 0 - self._days_param = None - - def is_deposited_keys_amount_ok(self) -> bool: - possible_deposits_amount = self._get_possible_deposits_amount() - recommended_max_gas = self._calculate_recommended_gas_based_on_deposit_amount(possible_deposits_amount) - - base_fee_per_gas = self._get_pending_base_fee() - return recommended_max_gas >= base_fee_per_gas - - def _get_possible_deposits_amount(self) -> int: - depositable_ether = self.w3.lido.lido.get_depositable_ether() - DEPOSITABLE_ETHER.labels(self.module_id).set(depositable_ether) - - possible_deposits_amount = self.w3.lido.staking_router.get_staking_module_deposits_count( - self.module_id, - depositable_ether, - ) - POSSIBLE_DEPOSITS_AMOUNT.labels(self.module_id).set(possible_deposits_amount) - return possible_deposits_amount - - def _calculate_recommended_gas_based_on_deposit_amount(self, deposits_amount: int) -> Wei: - # For one key recommended gas fee will be around 10 - # For 10 keys around 100 gwei. For 20 keys ~ 800 gwei - # ToDo percentiles for all modules? - recommended_max_gas = (deposits_amount ** 3 + 100) * 10 ** 8 - logger.info({'msg': 'Calculate recommended max gas based on possible deposits.'}) - GAS_FEE.labels('based_on_buffer_fee', self.module_id).set(recommended_max_gas) - return recommended_max_gas - - def _get_pending_base_fee(self): - base_fee_per_gas = self.w3.eth.get_block('pending')['baseFeePerGas'] - logger.info({'msg': 'Fetch base_fee_per_gas for pending block.', 'value': base_fee_per_gas}) - return base_fee_per_gas - - def is_gas_price_ok(self) -> bool: - current_gas_fee = self._get_pending_base_fee() - GAS_FEE.labels('current_fee', self.module_id).set(current_gas_fee) - - recommended_gas_fee = self._get_recommended_gas_fee() - GAS_FEE.labels('recommended_fee', self.module_id).set(recommended_gas_fee) - - GAS_FEE.labels('max_fee', self.module_id).set(variables.MAX_GAS_FEE) - - current_buffered_ether = self.w3.lido.lido.get_depositable_ether() - if current_buffered_ether > variables.MAX_BUFFERED_ETHERS: - return variables.MAX_GAS_FEE >= current_gas_fee - - return recommended_gas_fee >= current_gas_fee - - def _get_recommended_gas_fee(self): - gas_history = self._fetch_gas_fee_history(variables.GAS_FEE_PERCENTILE_DAYS_HISTORY_1) - return int(numpy.percentile(gas_history, variables.GAS_FEE_PERCENTILE_1)) - - def _fetch_gas_fee_history(self, days: int) -> list[int]: - latest_block_num = self.w3.eth.get_block('latest')['number'] - - if ( - self._latest_fetched_block - and self._latest_fetched_block + self.CACHE_BLOCK_AMOUNT > latest_block_num - and self._days_param >= days - ): - logger.info({'msg': 'Use cached gas history'}) - return self._gas_fees - - logger.info({'msg': 'Fetch gas fee history.', 'value': {'block_number': latest_block_num}}) - - self._latest_fetched_block = latest_block_num - self._days_param = days - - total_blocks_to_fetch = self.BLOCKS_IN_ONE_DAY * days - requests_count = total_blocks_to_fetch // self.REQUEST_SIZE + 1 - - gas_fees = [] - last_block: Literal['latest'] | BlockNumber = 'latest' - - for i in range(requests_count): - stats = self.w3.eth.fee_history(self.REQUEST_SIZE, last_block, []) - last_block = BlockNumber(stats['oldestBlock'] - 2) - gas_fees = stats['baseFeePerGas'] + gas_fees - - self._gas_fees = gas_fees[:days * self.BLOCKS_IN_ONE_DAY] - - return self._gas_fees diff --git a/src/blockchain/deposit_strategy/interface.py b/src/blockchain/deposit_strategy/interface.py deleted file mode 100644 index 9dcf8325..00000000 --- a/src/blockchain/deposit_strategy/interface.py +++ /dev/null @@ -1,17 +0,0 @@ -from abc import ABC, abstractmethod - -from blockchain.typings import Web3 - - -class ModuleDepositStrategyInterface(ABC): - def __init__(self, w3: Web3, module_id: int): - self.w3 = w3 - self.module_id = module_id - - @abstractmethod - def is_gas_price_ok(self) -> bool: - pass - - @abstractmethod - def is_deposited_keys_amount_ok(self) -> bool: - pass diff --git a/src/blockchain/executer.py b/src/blockchain/executer.py deleted file mode 100644 index 3ad3b544..00000000 --- a/src/blockchain/executer.py +++ /dev/null @@ -1,97 +0,0 @@ -import logging -from time import sleep -from typing import Callable, Any, Optional - -from web3.types import BlockData -from web3_multi_provider import NoActiveProviderError - -from blockchain.constants import SLOT_TIME -from blockchain.typings import Web3 -from metrics import healthcheck_pulse -from utils.timeout import TimeoutManager, TimeoutManagerError - - -logger = logging.getLogger(__name__) - - -class Executor: - """Executes periodically function with block_identifier.""" - def __init__( - self, - w3: Web3, - function_to_execute: Callable[[BlockData], Any], - blocks_between_execution: int, - cycle_max_lifetime: int, - ) -> None: - """ - @param function_to_execute is functions that will be executed every N blocks - @param blocks_between_execution is amount of EL blocks between function execution. - Blocks could be missed, so waiting time could be higher than expected. - """ - self.w3 = w3 - - self.function_to_execute = function_to_execute - self.blocks_between_execution = blocks_between_execution - self.cycle_max_lifetime = cycle_max_lifetime - - self._latest_block_number = 0 - self._next_expected_block = 0 - - def execute_as_daemon(self) -> None: - """Run execution module """ - while True: - self._wait_for_new_block_and_execute() - - def _wait_for_new_block_and_execute(self) -> Any: - healthcheck_pulse.pulse() - - latest_block = self._exception_handler(self._wait_until_next_block) - result = self._exception_handler(self._execute_function, latest_block) - - if result: - self._next_expected_block += self.blocks_between_execution - else: - # If function do not return success code (True or whatever) retry function call with next block. - self._next_expected_block += 1 - - return result - - def _wait_until_next_block(self) -> BlockData: - with TimeoutManager(max( - # Wait at least 5 slots before throw exception - 5 * SLOT_TIME, - self.blocks_between_execution * SLOT_TIME * 2 - )): - while True: - latest_block: BlockData = self.w3.eth.get_block('latest') - logger.debug({'msg': 'Fetch latest block.', 'value': latest_block}) - - if latest_block['number'] >= self._next_expected_block: - self._next_expected_block = latest_block['number'] - return latest_block - - time_until_expected_block = (self._next_expected_block - latest_block.number - 1) * SLOT_TIME - - # If expected block is next - if time_until_expected_block == 0: - time_until_expected_block = 5 - - logger.debug({'msg': f'Sleep for {time_until_expected_block} seconds.'}) - sleep(time_until_expected_block) - - def _execute_function(self, block: BlockData) -> None: - with TimeoutManager(self.cycle_max_lifetime): - return self.function_to_execute(block) - - @staticmethod - def _exception_handler(function: Callable, *args, **kwargs) -> Optional[Any]: - try: - return function(*args, **kwargs) - except TimeoutManagerError as exception: - logger.error({'msg': 'Timeout error.', 'error': str(exception), 'function': function.__name__}) - raise TimeoutManagerError('Bot stuck. Shut down.') from exception - except NoActiveProviderError as exception: - logger.error({'msg': 'No active node available. Shut down.', 'error': str(exception)}) - raise NoActiveProviderError from exception - except Exception as error: - logger.error({'msg': 'Unexpected error.', 'error': str(error), 'args': str(error.args)}) diff --git a/src/blockchain/fetch_latest_block.py b/src/blockchain/fetch_latest_block.py new file mode 100644 index 00000000..070c46fb --- /dev/null +++ b/src/blockchain/fetch_latest_block.py @@ -0,0 +1,25 @@ +import logging +import time + +from web3 import Web3 +from web3.types import BlockData + + +logger = logging.getLogger(__name__) + + +def fetch_latest_block(w3: Web3, _prev_block_number: int) -> BlockData: + from_provider_index = w3.provider._current_provider_index + + while True: + current_block = w3.eth.get_block('latest') + logger.info({'msg': f'Fetch `latest` block.', 'value': current_block.number}) + + if _prev_block_number != current_block.number: + return current_block + + w3.provider._current_provider_index = (w3.provider._current_provider_index + 1) % len(w3.provider._hosts_uri) + + if from_provider_index == w3.provider._current_provider_index: + logger.info({'msg': f'All providers returns same block. Sleep for 5 seconds and try again.'}) + time.sleep(5) diff --git a/src/blockchain/gas_strategy.py b/src/blockchain/gas_strategy.py new file mode 100644 index 00000000..02665c54 --- /dev/null +++ b/src/blockchain/gas_strategy.py @@ -0,0 +1,90 @@ +import logging +from typing import List, Tuple, Iterable + +import numpy +from web3 import Web3 + +logger = logging.getLogger(__name__) + + +class GasFeeStrategy: + BLOCKS_IN_ONE_DAY = 6600 + + def __init__(self, w3: Web3, blocks_count_cache: int = 300, max_gas_fee: int = Web3.toWei('100', 'gwei')): + """ + gas_history_block_cache - blocks count that gas his + """ + self._w3 = w3 + self._blocks_count_cache: int = blocks_count_cache + self.max_gas_fee = max_gas_fee + + self._gas_fees: list = [] + + # Used for caching + self._latest_fetched_block: int = 0 + self._days_param = None + + def _fetch_gas_fee_history(self, days: int) -> List[int]: + """ + Returns gas fee history for N days. + Cache updates every {_blocks_count_cache} block. + """ + latest_block_num = self._w3.eth.get_block('latest')['number'] + + # If _blocks_count_cache didn't passed return cache + if ( + self._latest_fetched_block + and self._latest_fetched_block + self._blocks_count_cache > latest_block_num + and self._days_param >= days + ): + logger.info({'msg': 'Use cached gas history'}) + return self._gas_fees + + logger.info({'msg': 'Init or refresh gas history.', 'value': {'block_number': latest_block_num}}) + + self._latest_fetched_block = latest_block_num + self._days_param = days + + total_blocks_to_fetch = self.BLOCKS_IN_ONE_DAY * days + requests_count = total_blocks_to_fetch // 1024 + 1 + + gas_fees = [] + last_block = 'latest' + + for i in range(requests_count): + stats = self._w3.eth.fee_history(1024, last_block, []) + last_block = stats['oldestBlock'] - 2 + gas_fees = stats['baseFeePerGas'] + gas_fees + + self._gas_fees = gas_fees + + return self._gas_fees + + def get_gas_fee_percentile(self, days: int, percentile: int) -> float: + """Calculates provided percentile for N days""" + # One week price stats + gas_fee_history = self._fetch_gas_fee_history(days) + blocks_to_count_percentile = gas_fee_history[-days * self.BLOCKS_IN_ONE_DAY:] + gas_percentile = int(numpy.percentile(blocks_to_count_percentile, percentile)) + return gas_percentile + + def get_recommended_gas_fee(self, percentiles: Iterable[Tuple[int, int]], force: bool = False) -> float: + """Returns the recommended gas fee""" + if force: + return self.max_gas_fee + + min_recommended_fee = self.max_gas_fee + + for days, percentile in percentiles: + min_recommended_fee = min(min_recommended_fee, self.get_gas_fee_percentile(days, percentile)) + + return min_recommended_fee + + def get_priority_fee(self, percentile: int, min_priority_fee: int, max_priority_fee: int): + return min( + max( + self._w3.eth.fee_history(1, 'latest', reward_percentiles=[percentile])['reward'][0][0], + min_priority_fee, + ), + max_priority_fee, + ) diff --git a/src/blockchain/web3_extentions/requests_metric_middleware.py b/src/blockchain/requests_metric_middleware.py similarity index 99% rename from src/blockchain/web3_extentions/requests_metric_middleware.py rename to src/blockchain/requests_metric_middleware.py index 9e5e3f19..1a7d8ccf 100644 --- a/src/blockchain/web3_extentions/requests_metric_middleware.py +++ b/src/blockchain/requests_metric_middleware.py @@ -8,7 +8,6 @@ from metrics.metrics import ETH_RPC_REQUESTS_DURATION, ETH_RPC_REQUESTS - logger = logging.getLogger(__name__) diff --git a/src/blockchain/typings.py b/src/blockchain/typings.py deleted file mode 100644 index 6bcc623d..00000000 --- a/src/blockchain/typings.py +++ /dev/null @@ -1,9 +0,0 @@ -from web3 import Web3 as _Web3 - -from blockchain.web3_extentions.lido_contracts import LidoContracts -from blockchain.web3_extentions.transaction import TransactionUtils - - -class Web3(_Web3): - lido: LidoContracts - transaction: TransactionUtils diff --git a/src/blockchain/web3_extentions/__init__.py b/src/blockchain/web3_extentions/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/src/blockchain/web3_extentions/lido_contracts.py b/src/blockchain/web3_extentions/lido_contracts.py deleted file mode 100644 index 4c45471d..00000000 --- a/src/blockchain/web3_extentions/lido_contracts.py +++ /dev/null @@ -1,44 +0,0 @@ -from typing import cast - -from web3 import Web3 -from web3.module import Module - -import variables -from blockchain.contracts.deposit import DepositContract - -from blockchain.contracts.deposit_security_module import DepositSecurityModuleContract -from blockchain.contracts.lido import LidoContract -from blockchain.contracts.lido_locator import LidoLocatorContract -from blockchain.contracts.staking_router import StakingRouterContract - - -class LidoContracts(Module): - def __init__(self, w3: Web3): - super().__init__(w3) - self._load_contracts() - - def _load_contracts(self): - self.deposit_contract: DepositContract = cast(DepositContract, self.web3.eth.contract( - address=variables.DEPOSIT_CONTRACT, - ContractFactoryClass=DepositContract, - )) - - self.lido_locator: LidoLocatorContract = cast(LidoLocatorContract, self.web3.eth.contract( - address=variables.LIDO_LOCATOR, - ContractFactoryClass=LidoLocatorContract, - )) - - self.lido: LidoContract = cast(LidoContract, self.web3.eth.contract( - address=self.lido_locator.lido(), - ContractFactoryClass=LidoContract, - )) - - self.deposit_security_module = cast(DepositSecurityModuleContract, self.web3.eth.contract( - address=self.lido_locator.deposit_security_module(), - ContractFactoryClass=DepositSecurityModuleContract, - )) - - self.staking_router = cast(StakingRouterContract, self.web3.eth.contract( - address=self.lido_locator.staking_router(), - ContractFactoryClass=StakingRouterContract, - )) diff --git a/src/blockchain/web3_extentions/transaction.py b/src/blockchain/web3_extentions/transaction.py deleted file mode 100644 index c2095bed..00000000 --- a/src/blockchain/web3_extentions/transaction.py +++ /dev/null @@ -1,121 +0,0 @@ -import logging - -from eth_account.datastructures import SignedTransaction -from web3.contract import ContractFunction -from web3.exceptions import ContractLogicError, TransactionNotFound, TimeExhausted -from web3.module import Module -from web3.types import BlockData, Wei - -import variables -from blockchain.constants import SLOT_TIME -from metrics.metrics import TX_SEND - - -logger = logging.getLogger(__name__) - - -class TransactionUtils(Module): - @staticmethod - def check(transaction: ContractFunction) -> bool: - try: - transaction.call() - except (ValueError, ContractLogicError) as error: - logger.error({'msg': 'Local transaction reverted.', 'error': str(error)}) - return False - - logger.info({'msg': 'Tx local call succeed.'}) - return True - - def send( - self, - transaction: ContractFunction, - use_flashbots: bool, - timeout_in_blocks: int, - ) -> bool: - if not variables.ACCOUNT: - logger.info({'msg': 'Account was not provided. Sending transaction skipped.'}) - return True - - if not variables.CREATE_TRANSACTIONS: - logger.info({'msg': 'Dry mode activated. Sending transaction skipped.'}) - return True - - pending: BlockData = self.web3.eth.get_block('pending') - - priority = self._get_priority_fee( - variables.GAS_PRIORITY_FEE_PERCENTILE, - variables.MIN_PRIORITY_FEE, - variables.MAX_PRIORITY_FEE, - ) - - transaction_dict = transaction.build_transaction({ - 'from': variables.ACCOUNT.address, - # TODO Estimate gas and min(contract_gas_limit, estimated_gas * 1.3) - 'gas': variables.CONTRACT_GAS_LIMIT, - 'maxFeePerGas': pending['baseFeePerGas'] * 2 + priority, - 'maxPriorityFeePerGas': priority, - "nonce": self.web3.eth.get_transaction_count(variables.ACCOUNT.address), - }) - - signed = self.web3.eth.account.sign_transaction(transaction_dict, variables.ACCOUNT.privateKey) - - # TODO try to deposit with other relays - if use_flashbots and getattr(self.web3, 'flashbots', None): - status = self.flashbots_send(signed, pending['number'], timeout_in_blocks) - else: - status = self.classic_send(signed, timeout_in_blocks) - - if status: - TX_SEND.labels('success').inc() - logger.info({'msg': 'Transaction found in blockchain.'}) - else: - TX_SEND.labels('failure').inc() - logger.warning({'msg': 'Transaction not found in blockchain.'}) - - return status - - def flashbots_send( - self, - signed_tx: SignedTransaction, - pending_block_num: int, - timeout_in_blocks: int, - ) -> bool: - for i in range(timeout_in_blocks): - result = self.web3.flashbots.send_bundle( - [{"signed_transaction": signed_tx.rawTransaction}], - pending_block_num + i - ) - - logger.info({'msg': 'Transaction sent.'}) - try: - rec = result.receipts() - except TransactionNotFound: - return False - else: - logger.info({'msg': 'Transaction mined.', 'value': rec[-1]['transactionHash'].hex()}) - return True - - def classic_send(self, signed_tx: SignedTransaction, timeout_in_blocks: int) -> bool: - try: - tx_hash = self.web3.eth.send_raw_transaction(signed_tx.rawTransaction) - except Exception as error: - logger.error({'msg': 'Transaction reverted.', 'value': str(error)}) - return False - - logger.info({'msg': 'Transaction sent.', 'value': tx_hash.hex()}) - try: - tx_receipt = self.web3.eth.wait_for_transaction_receipt(tx_hash, (timeout_in_blocks + 1) * SLOT_TIME) - except TimeExhausted: - return False - - logger.info({'msg': 'Transaction found', 'value': tx_receipt['transactionHash'].hex()}) - return True - - def _get_priority_fee(self, percentile: int, min_priority_fee: Wei, max_priority_fee: Wei): - return min( - max( - self.web3.eth.fee_history(1, 'latest', reward_percentiles=[percentile])['reward'][0][0], - min_priority_fee, - ), - max_priority_fee, - ) diff --git a/src/bots/depositor.py b/src/bots/depositor.py deleted file mode 100644 index 3813c075..00000000 --- a/src/bots/depositor.py +++ /dev/null @@ -1,243 +0,0 @@ -import logging -from collections import defaultdict -from typing import Optional, Callable - -from eth_typing import Hash32 -from schema import Or, Schema -from web3.types import BlockData - -import variables - -from blockchain.deposit_strategy.curated_module import CuratedModuleDepositStrategy -from blockchain.deposit_strategy.interface import ModuleDepositStrategyInterface -from blockchain.typings import Web3 -from cryptography.verify_signature import compute_vs -from metrics.metrics import ( - ACCOUNT_BALANCE, CURRENT_QUORUM_SIZE, -) -from metrics.transport_message_metrics import message_metrics_filter -from transport.msg_providers.kafka import KafkaMessageProvider -from transport.msg_providers.rabbit import RabbitProvider, MessageType -from transport.msg_schemas import ( - DepositMessageSchema, - PingMessageSchema, - get_deposit_messages_sign_filter, - DepositMessage, -) -from transport.msg_storage import MessageStorage -from transport.types import TransportType - - -logger = logging.getLogger(__name__) - - -class ModuleNotSupportedError(Exception): - pass - - -class DepositorBot: - _flashbots_works = True - - def __init__(self, w3: Web3): - self.w3 = w3 - - transports = [] - - if TransportType.RABBIT in variables.MESSAGE_TRANSPORTS: - transports.append(RabbitProvider( - client='depositor', - routing_keys=[MessageType.PING, MessageType.DEPOSIT], - message_schema=Schema(Or(DepositMessageSchema, PingMessageSchema)), - )) - - if TransportType.KAFKA in variables.MESSAGE_TRANSPORTS: - transports.append(KafkaMessageProvider( - client=f'{variables.KAFKA_GROUP_PREFIX}deposit', - message_schema=Schema(Or(DepositMessageSchema, PingMessageSchema)), - )) - - if not transports: - logger.warning({'msg': 'No transports found. Dry mode activated.', 'value': variables.MESSAGE_TRANSPORTS}) - - attest_prefix = self.w3.lido.deposit_security_module.get_attest_message_prefix() - - self.message_storage = MessageStorage( - transports, - filters=[ - message_metrics_filter, - get_deposit_messages_sign_filter(attest_prefix), - ], - ) - - def execute(self, block: BlockData) -> bool: - self._check_balance() - - module_ids = self.w3.lido.staking_router.get_staking_module_ids() - - for module_id in module_ids: - logger.info({'msg': f'Do deposit for module with id: {module_id}.'}) - try: - self._deposit_to_module(module_id) - except ModuleNotSupportedError as error: - logger.warning({'msg': 'Module not supported exception.', 'error': str(error)}) - - return True - - def _check_balance(self): - if variables.ACCOUNT: - balance = self.w3.eth.get_balance(variables.ACCOUNT.address) - ACCOUNT_BALANCE.set(balance) - logger.info({'msg': 'Check account balance.', 'value': balance}) - else: - logger.info({'msg': 'No account provided. Dry mode.'}) - ACCOUNT_BALANCE.set(0) - - def _deposit_to_module(self, module_id: int) -> bool: - is_depositable = self._check_module_status(module_id) - logger.info({'msg': 'Fetch module depositable status.', 'value': is_depositable}) - - quorum = self._get_quorum(module_id) - logger.info({'msg': 'Build quorum.', 'value': quorum}) - - module_strategy = self._get_module_strategy(module_id) - - gas_is_ok = module_strategy.is_gas_price_ok() - logger.info({'msg': 'Calculate gas recommendations.', 'value': gas_is_ok}) - - keys_amount_is_profitable = module_strategy.is_deposited_keys_amount_ok() - logger.info({'msg': 'Calculations deposit recommendations.', 'value': keys_amount_is_profitable}) - - if is_depositable and quorum and gas_is_ok and keys_amount_is_profitable: - logger.info({'msg': 'Checks passed. Prepare deposit tx.'}) - return self._build_and_send_deposit_tx(quorum) - - logger.info({'msg': 'Checks failed. Skip deposit.'}) - return False - - def _get_module_strategy(self, module_id: int) -> ModuleDepositStrategyInterface: - # ToDo somehow support different gas strategies for different module types - if module_id == 1: - return CuratedModuleDepositStrategy(self.w3, module_id) - - raise ModuleNotSupportedError(f'Module with id: {module_id} is not supported yet.') - - def _check_module_status(self, module_id: int) -> bool: - """Returns True if module is ready for deposit""" - is_active = self.w3.lido.staking_router.is_staking_module_active(module_id) - is_deposits_paused = self.w3.lido.staking_router.is_staking_module_deposits_paused(module_id) - return is_active and not is_deposits_paused - - def _get_quorum(self, module_id: int) -> Optional[list[DepositMessage]]: - """Returns quorum messages or None is quorum is not ready""" - actualize_filter = self._get_message_actualize_filter(module_id) - messages = self.message_storage.get_messages(actualize_filter) - min_signs_to_deposit = self.w3.lido.deposit_security_module.get_guardian_quorum() - - messages_by_block_hash = defaultdict(dict) - - max_quorum_size = 0 - - for message in messages: - # Remove duplications (blockHash, guardianAddress) - messages_by_block_hash[message['blockHash']][message['guardianAddress']] = message - - for messages_dict in messages_by_block_hash.values(): - unified_messages = messages_dict.values() - - quorum_size = len(unified_messages) - - if quorum_size >= min_signs_to_deposit: - CURRENT_QUORUM_SIZE.set(quorum_size) - return list(unified_messages) - - max_quorum_size = max(quorum_size, max_quorum_size) - - CURRENT_QUORUM_SIZE.set(max_quorum_size) - - def _get_message_actualize_filter(self, module_id: int) -> Callable[[DepositMessage], bool]: - latest = self.w3.eth.get_block('latest') - - deposit_root = '0x' + self.w3.lido.deposit_contract.get_deposit_root().hex() - nonce = self.w3.lido.staking_router.get_staking_module_nonce(module_id) - guardians_list = self.w3.lido.deposit_security_module.get_guardians() - - def message_filter(message: DepositMessage) -> bool: - if message['guardianAddress'] not in guardians_list: - return False - - if message['blockNumber'] < latest['number'] - 200: - return False - - # Message from council is newer than depositor node latest block - if message['blockNumber'] > latest['number']: - # can't be verified, so skip - return True - - if message['nonce'] != nonce: - return False - - if message['depositRoot'] != deposit_root: - return False - - return True - - return message_filter - - def _build_and_send_deposit_tx(self, quorum: list[DepositMessage]) -> bool: - signs = self._prepare_signs_for_deposit(quorum) - - return self._send_deposit_tx( - quorum[0]['blockNumber'], - Hash32(bytes.fromhex(quorum[0]['blockHash'][2:])), - Hash32(bytes.fromhex(quorum[0]['depositRoot'][2:])), - quorum[0]['stakingModuleId'], - quorum[0]['nonce'], - b'', - signs, - ) - - @staticmethod - def _prepare_signs_for_deposit(quorum: list[DepositMessage]) -> tuple[tuple[str, str]]: - sorted_messages = sorted(quorum, key=lambda msg: int(msg['guardianAddress'], 16)) - - return tuple( - (msg['signature']['r'], compute_vs(msg['signature']['v'], msg['signature']['s'])) - for msg in sorted_messages - ) - - def _send_deposit_tx( - self, - block_number: int, - block_hash: Hash32, - deposit_root: Hash32, - staking_module_id: int, - staking_module_nonce: int, - payload: bytes, - guardian_signs: tuple[tuple[str, str]] - ) -> bool: - """Returns transactions success status""" - # Prepare transaction and send - deposit_tx = self.w3.lido.deposit_security_module.deposit_buffered_ether( - block_number, - block_hash, - deposit_root, - staking_module_id, - staking_module_nonce, - payload, - guardian_signs, - ) - - if not self.w3.transaction.check(deposit_tx): - return False - - logger.info({'msg': 'Send deposit transaction.', 'with_flashbots': self._flashbots_works}) - success = self.w3.transaction.send(deposit_tx, self._flashbots_works, 6) - - logger.info({'msg': f'Tx send. Result is {success}.'}) - - if self._flashbots_works and not success: - self._flashbots_works = False - else: - self._flashbots_works = True - - return success diff --git a/src/bots/depositor_bot.py b/src/bots/depositor_bot.py new file mode 100644 index 00000000..156ec3dc --- /dev/null +++ b/src/bots/depositor_bot.py @@ -0,0 +1,516 @@ +import logging +import traceback +import time +from collections import defaultdict +from typing import List, Tuple, Optional + +import timeout_decorator +from schema import Or, Schema +from web3 import Web3 +from web3.exceptions import BlockNotFound, ContractLogicError, TransactionNotFound +from web3_multi_provider import NoActiveProviderError + +import variables +from blockchain.buffered_eth import get_recommended_buffered_ether_to_deposit +from blockchain.constants import FLASHBOTS_RPC +from blockchain.contracts import contracts +from blockchain.fetch_latest_block import fetch_latest_block +from blockchain.gas_strategy import GasFeeStrategy +from cryptography.verify_signature import compute_vs +from metrics import healthcheck_pulse +from metrics.metrics import ( + BUILD_INFO, + ACCOUNT_BALANCE, + BUFFERED_ETHER, + REQUIRED_BUFFERED_ETHER, + GAS_FEE, + CAN_DEPOSIT_KEYS, + CURRENT_QUORUM_SIZE, + DEPOSIT_FAILURE, + SUCCESS_DEPOSIT, +) +from metrics.transport_message_metrics import message_metrics +from transport.msg_providers.kafka import KafkaMessageProvider +from transport.msg_providers.rabbit import RabbitProvider, MessageType +from transport.msg_schemas import ( + DepositMessageSchema, + PingMessageSchema, + get_deposit_messages_sign_filter, + DepositMessage, +) +from transport.msg_storage import MessageStorage +from variables_types import TransportType + + +logger = logging.getLogger(__name__) + + +MODULE_ID = 1 + + +class DepositorBot: + NOT_ENOUGH_BALANCE_ON_ACCOUNT = 'Account balance is too low.' + GAS_FEE_HIGHER_THAN_RECOMMENDED = 'Gas fee is higher than recommended fee.' + DEPOSIT_SECURITY_ISSUE = 'Deposit security module prohibits the deposit.' + LIDO_CONTRACT_HAS_NOT_ENOUGH_BUFFERED_ETHER = 'Lido contract has not enough buffered ether.' + DEPOSITOR_CAN_DEPOSIT_KEYS = 'Depositor can not deposit keys. ' \ + 'No keys, paused staking module or not enough reserved ether.' + QUORUM_IS_NOT_READY = 'Quorum is not ready.' + + current_block = None + deposit_root: str = None + nonce: int = None + last_fb_deposit_failed = False + + def __init__(self, w3: Web3): + logger.info({'msg': 'Initialize DepositorBot.'}) + self.w3 = w3 + + self.gas_fee_strategy = GasFeeStrategy(w3, blocks_count_cache=150, max_gas_fee=variables.MAX_GAS_FEE) + + self.min_signs_to_deposit = contracts.deposit_security_module.functions.getGuardianQuorum().call() + logger.info({'msg': f'Call `getGuardianQuorum()`.', 'value': self.min_signs_to_deposit}) + + self.guardians_list = contracts.deposit_security_module.functions.getGuardians().call() + logger.info({'msg': f'Call `getGuardians()`.', 'value': self.guardians_list}) + + self.deposit_prefix = contracts.deposit_security_module.functions.ATTEST_MESSAGE_PREFIX().call() + logger.info({'msg': 'Call `ATTEST_MESSAGE_PREFIX()`.', 'value': str(self.deposit_prefix)}) + + transports = [] + + if TransportType.RABBIT in variables.MESSAGE_TRANSPORTS: + transports.append(RabbitProvider( + client='depositor', + routing_keys=[MessageType.PING, MessageType.DEPOSIT], + message_schema=Schema(Or(DepositMessageSchema, PingMessageSchema)), + )) + + if TransportType.KAFKA in variables.MESSAGE_TRANSPORTS: + transports.append(KafkaMessageProvider( + client=f'{variables.KAFKA_GROUP_PREFIX}deposit', + message_schema=Schema(Or(DepositMessageSchema, PingMessageSchema)), + )) + + if not transports: + logger.error({'msg': 'No transports found', 'value': variables.MESSAGE_TRANSPORTS}) + raise ValueError(f'No transports found. Provided value: {variables.MESSAGE_TRANSPORTS}') + + self.message_storage = MessageStorage( + transports, + filters=[ + message_metrics, + get_deposit_messages_sign_filter(self.deposit_prefix), + ], + ) + + BUILD_INFO.labels( + 'Depositor bot', + variables.NETWORK, + variables.MAX_GAS_FEE, + variables.MAX_BUFFERED_ETHERS, + variables.CONTRACT_GAS_LIMIT, + variables.GAS_FEE_PERCENTILE_1, + variables.GAS_FEE_PERCENTILE_DAYS_HISTORY_1, + variables.GAS_PRIORITY_FEE_PERCENTILE, + variables.MIN_PRIORITY_FEE, + variables.MAX_PRIORITY_FEE, + variables.KAFKA_TOPIC, + variables.ACCOUNT.address if variables.ACCOUNT else '0x0', + variables.CREATE_TRANSACTIONS, + ) + + # ------------ CYCLE STAFF ------------------- + def run_as_daemon(self): + """Super-Mega infinity cycle!""" + while True: + self._waiting_for_new_block_and_run_cycle() + + @timeout_decorator.timeout(variables.MAX_CYCLE_LIFETIME_IN_SECONDS) + def _waiting_for_new_block_and_run_cycle(self): + try: + self.run_cycle() + except BlockNotFound as error: + logger.warning({'msg': 'Fetch block exception.', 'error': str(error)}) + # Waiting for new block + time.sleep(15) + except timeout_decorator.TimeoutError as exception: + # Bot is stuck. Drop bot and restart using Docker service + logger.error({'msg': 'Depositor bot do not respond.', 'error': str(exception)}) + raise timeout_decorator.TimeoutError('Depositor bot stuck. Restarting using docker service.') from exception + except NoActiveProviderError as exception: + logger.error({'msg': 'No active node available.', 'error': str(exception)}) + raise NoActiveProviderError from exception + except ConnectionError as error: + logger.error({'msg': error.args, 'error': str(error)}) + raise ConnectionError from error + except ValueError as error: + logger.error({'msg': error.args, 'error': str(error)}) + time.sleep(15) + except Exception as error: + logger.warning({'msg': 'Unexpected exception.', 'error': str(error), 'details': traceback.format_exc()}) + time.sleep(15) + else: + time.sleep(15) + + def run_cycle(self): + logger.info({'msg': 'New deposit cycle.'}) + self._update_state() + + deposit_issues = self.get_deposit_issues() + + if not deposit_issues: + logger.info({'msg': f'No issues found.', 'value': deposit_issues}) + return self.do_deposit() + + logger.info({'msg': f'Issues found.', 'value': deposit_issues}) + + long_issues = [ + self.NOT_ENOUGH_BALANCE_ON_ACCOUNT, + self.DEPOSIT_SECURITY_ISSUE, + self.LIDO_CONTRACT_HAS_NOT_ENOUGH_BUFFERED_ETHER, + self.DEPOSITOR_CAN_DEPOSIT_KEYS, + ] + + for long_issue in long_issues: + if long_issue in deposit_issues: + logger.info({'msg': f'Long issue found. Sleep for 1 minute.', 'value': long_issue}) + time.sleep(60) + break + + def _update_state(self): + healthcheck_pulse.pulse() + + self.current_block = fetch_latest_block(self.w3, self.current_block.number if self.current_block else 0) + + self.deposit_root = '0x' + contracts.deposit_contract.functions.get_deposit_root().call(block_identifier=self.current_block.hash.hex()).hex() + logger.info({'msg': f'Call `get_deposit_root()`.', 'value': str(self.deposit_root)}) + + # TODO replace nonce with getStakingModuleNonce + self.nonce = self._get_nonce() + logger.info({'msg': f'Call `getKeysOpIndex()`.', 'value': self.nonce}) + + def _get_nonce(self) -> int: + return contracts.node_operator_registry.functions.getKeysOpIndex().call(block_identifier=self.current_block.hash.hex()) + + def get_deposit_issues(self) -> List[str]: + # Filter non-valid messages. Actualized messages will be used in various checks. + self.actualize_messages() + + deposit_issues = [] + + if self._account_balance_issue(): + deposit_issues.append(self.NOT_ENOUGH_BALANCE_ON_ACCOUNT) + + if self._buffered_ether_issue(): + deposit_issues.append(self.LIDO_CONTRACT_HAS_NOT_ENOUGH_BUFFERED_ETHER) + + if self._high_gas_fee_issue(): + deposit_issues.append(self.GAS_FEE_HIGHER_THAN_RECOMMENDED) + + if self._quorum_issue(): + deposit_issues.append(self.QUORUM_IS_NOT_READY) + + # if staking_module_id is None deposit_issues would contain QUORUM_IS_NOT_READY because there is no messages + staking_module_id = self._get_latest_staking_module_id_in_messages() + if staking_module_id: + if self._prohibit_to_deposit_issue(staking_module_id): + deposit_issues.append(self.DEPOSIT_SECURITY_ISSUE) + + if self._cen_deposit_keys_issue(staking_module_id): + deposit_issues.append(self.DEPOSITOR_CAN_DEPOSIT_KEYS) + + return deposit_issues + + def _account_balance_issue(self) -> bool: + if variables.ACCOUNT: + balance = self.w3.eth.get_balance(variables.ACCOUNT.address, block_identifier={"blockHash": self.current_block.hash.hex()}) + ACCOUNT_BALANCE.set(balance) + logger.info({'msg': 'Check account balance.', 'value': balance}) + if balance < self.w3.toWei(0.05, 'ether'): + logger.warning({'msg': self.NOT_ENOUGH_BALANCE_ON_ACCOUNT, 'value': balance}) + return True + else: + logger.info({'msg': 'Check account balance. No account provided.'}) + ACCOUNT_BALANCE.set(0) + + def _buffered_ether_issue(self) -> bool: + pending_gas_fee = self.w3.eth.get_block('pending').baseFeePerGas + logger.info({'msg': 'Get pending `baseFeePerGas`.', 'value': pending_gas_fee}) + + buffered_ether = contracts.lido.functions.getDepositableEther().call( + block_identifier=self.current_block.hash.hex(), + ) + logger.info({'msg': 'Call `getDepositableEther()`.', 'value': buffered_ether}) + BUFFERED_ETHER.set(buffered_ether) + + recommended_buffered_ether = get_recommended_buffered_ether_to_deposit(pending_gas_fee) + logger.info({'msg': 'Recommended min buffered ether to deposit.', 'value': recommended_buffered_ether}) + REQUIRED_BUFFERED_ETHER.set(recommended_buffered_ether) + + if buffered_ether < recommended_buffered_ether: + logger.warning({'msg': self.LIDO_CONTRACT_HAS_NOT_ENOUGH_BUFFERED_ETHER, 'value': buffered_ether}) + return True + + def _high_gas_fee_issue(self) -> bool: + current_gas_fee = self.w3.eth.get_block('pending').baseFeePerGas + buffered_ether = contracts.lido.functions.getDepositableEther().call( + block_identifier=self.current_block.hash.hex(), + ) + + is_high_buffer = buffered_ether >= variables.MAX_BUFFERED_ETHERS + logger.info({'msg': 'Check max ether in buffer.', 'value': is_high_buffer}) + + recommended_gas_fee = self.gas_fee_strategy.get_recommended_gas_fee(( + (variables.GAS_FEE_PERCENTILE_DAYS_HISTORY_1, variables.GAS_FEE_PERCENTILE_1), + ), force=is_high_buffer) + + GAS_FEE.labels('max_fee').set(variables.MAX_GAS_FEE) + GAS_FEE.labels('current_fee').set(current_gas_fee) + GAS_FEE.labels('recommended_fee').set(recommended_gas_fee) + + if current_gas_fee > recommended_gas_fee: + logger.info({ + 'msg': self.GAS_FEE_HIGHER_THAN_RECOMMENDED, + 'values': { + 'max_fee': variables.MAX_GAS_FEE, + 'current_fee': current_gas_fee, + 'recommended_fee': recommended_gas_fee, + 'buffered_ether': buffered_ether, + } + }) + return True + + def _prohibit_to_deposit_issue(self, staking_module_id: int) -> bool: + can_deposit = contracts.deposit_security_module.functions.canDeposit(staking_module_id).call( + block_identifier=self.current_block.hash.hex(), + ) + logger.info({'msg': 'Call canDeposit().', 'value': can_deposit}) + + if not can_deposit: + logger.warning({'msg': self.DEPOSIT_SECURITY_ISSUE, 'value': can_deposit}) + return True + + def _cen_deposit_keys_issue(self, staking_module_id: int) -> bool: + depositable_ether = contracts.lido.functions.getDepositableEther().call( + block_identifier=self.current_block.hash.hex(), + ) + possible_deposits = contracts.staking_router.functions.getStakingModuleMaxDepositsCount( + staking_module_id, + depositable_ether, + ).call( + block_identifier=self.current_block.hash.hex(), + ) + logger.info({ + 'msg': f'Call getStakingModuleMaxDepositsCount({staking_module_id}, {depositable_ether}).', + 'value': possible_deposits, + }) + + CAN_DEPOSIT_KEYS.set(1 if possible_deposits else 0) + + if not possible_deposits: + logger.warning({'msg': self.DEPOSITOR_CAN_DEPOSIT_KEYS}) + return True + + def _quorum_issue(self) -> bool: + quorum_messages = self._form_a_quorum() + + CURRENT_QUORUM_SIZE.set(len(quorum_messages)) + + if len(quorum_messages) < self.min_signs_to_deposit: + logger.warning({'msg': self.QUORUM_IS_NOT_READY}) + return True + + def actualize_messages(self): + def _actualize_messages(message: DepositMessage): + if message['type'] != 'deposit': + logger.info({'msg': f'_actualize_message message.type issue', 'value': message['type']}) + return False + + # Maybe council daemon already reports next block + if message['blockNumber'] <= self.current_block.number: + if message['nonce'] != self.nonce: + logger.info({'msg': f'_actualize_message message.nonce issue', 'value': message['nonce']}) + return False + + if message['depositRoot'] != self.deposit_root: + logger.info({'msg': f'_actualize_message message.depositRoot issue', 'value': message['depositRoot']}) + return False + + if message['blockNumber'] + 200 < self.current_block.number: + logger.info({'msg': f'_actualize_message message.blockNumber issue', 'value': message['blockNumber']}) + return False + + if message['guardianAddress'] not in self.guardians_list: + logger.info({'msg': f'_actualize_message message.guardianAddress issue', 'value': message['guardianAddress']}) + return False + + return True + + self.message_storage.update_messages() + self.message_storage.get_messages(_actualize_messages) + + def _get_latest_staking_module_id_in_messages(self) -> Optional[int]: + messages = self._form_a_quorum() + if messages: + return messages[0]['stakingModuleId'] + + def _form_a_quorum(self) -> List[DepositMessage]: + dict_for_sort = defaultdict(lambda: defaultdict(list)) + + for message in self.message_storage.messages: + logger.debug({'msg': f'dict_for_sort message.', 'value': message}) + dict_for_sort[message['blockNumber']][message['blockHash']].append(message) + + max_quorum = 0 + quorum_block_number = 0 + quorum_block_hash = '' + + for block_num, blocks_by_number in dict_for_sort.items(): + for block_hash, block_messages in blocks_by_number.items(): + + if max_quorum < len(block_messages) and block_num > quorum_block_number: + max_quorum = len(block_messages) + quorum_block_number = block_num + quorum_block_hash = block_hash + + quorum_messages = self._remove_address_duplicates(dict_for_sort[quorum_block_number][quorum_block_hash]) + + if max_quorum >= self.min_signs_to_deposit: + logger.info({'msg': f'Quorum ready.', 'value': quorum_messages}) + else: + logger.warning({'msg': 'Not enough signs for quorum.', 'value': max_quorum}) + + return quorum_messages + + @staticmethod + def _remove_address_duplicates(messages: List[DepositMessage]) -> List[DepositMessage]: + guardian_address = [] + + def _filter(msg: DepositMessage) -> bool: + if msg['guardianAddress'] not in guardian_address: + guardian_address.append(msg['guardianAddress']) + return True + + return list(filter(_filter, messages)) + + @staticmethod + def _check_transaction(transaction) -> bool: + try: + transaction.call() + except ContractLogicError as error: + logger.error({'msg': 'Local transaction reverted.', 'error': str(error)}) + return False + + return True + + def do_deposit(self): + quorum = self._form_a_quorum() + + priority = self.gas_fee_strategy.get_priority_fee( + variables.GAS_PRIORITY_FEE_PERCENTILE, + variables.MIN_PRIORITY_FEE, + variables.MAX_PRIORITY_FEE, + ) + + signs = self._prepare_signs(quorum) + + logger.info({'msg': 'Sending deposit transaction.', 'values': { + 'deposit_root': str(self.deposit_root), + 'nonce': self.nonce, + 'block_number': quorum[0]['blockNumber'], + 'block_hash': quorum[0]['blockHash'], + 'signs': signs, + 'gas_limit': variables.CONTRACT_GAS_LIMIT, + 'priority_fee': priority, + }}) + + deposit_function = contracts.deposit_security_module.functions.depositBufferedEther( + quorum[0]['blockNumber'], + quorum[0]['blockHash'], + self.deposit_root, + quorum[0]['stakingModuleId'], + self.nonce, + b'', + signs, + ) + + if not self._check_transaction(deposit_function): + return + + logger.info({'msg': 'Deposit local call succeed.'}) + + if not variables.ACCOUNT: + logger.info({'msg': 'Account was not provided.'}) + return + + if not variables.CREATE_TRANSACTIONS: + logger.info({'msg': 'Run in dry mode.'}) + return + + logger.info({'msg': 'Transaction call completed successfully.'}) + + transaction = deposit_function.build_transaction({ + 'from': variables.ACCOUNT.address, + 'gas': variables.CONTRACT_GAS_LIMIT, + 'maxFeePerGas': self.current_block.baseFeePerGas * 2 + priority, + 'maxPriorityFeePerGas': priority, + "nonce": self.w3.eth.get_transaction_count(variables.ACCOUNT.address), + }) + + signed = self.w3.eth.account.sign_transaction(transaction, variables.ACCOUNT.privateKey) + + if ( + variables.FLASHBOT_SIGNATURE is not None + and variables.WEB3_CHAIN_ID in FLASHBOTS_RPC + and not self.last_fb_deposit_failed + ): + self._do_flashbots_deposit(signed) + else: + self._do_classic_deposit(signed) + + logger.info({'msg': f'Deposit method end. Sleep for 1 minute.'}) + time.sleep(60) + + def _do_classic_deposit(self, signed_transaction): + self.last_fb_deposit_failed = False + + logger.info({'msg': 'Try to deposit. Classic mode.'}) + + try: + result = self.w3.eth.send_raw_transaction(signed_transaction.rawTransaction) + except Exception as error: + logger.error({'msg': 'Transaction reverted.', 'value': str(error)}) + DEPOSIT_FAILURE.inc() + else: + logger.info({'msg': 'Transaction mined.', 'value': result.hex()}) + SUCCESS_DEPOSIT.inc() + + def _do_flashbots_deposit(self, signed_transaction): + logger.info({'msg': 'Try to deposit. Flashbots mode.'}) + + for i in range(7): + # Try to get in next 7 blocks + result = self.w3.flashbots.send_bundle( + [{"signed_transaction": signed_transaction.rawTransaction}], + self.current_block.number + 1 + i + ) + + try: + rec = result.receipts() + except TransactionNotFound as error: + self.last_fb_deposit_failed = True + logger.error({'msg': f'Deposit failed.', 'error': str(error)}) + DEPOSIT_FAILURE.inc() + else: + logger.info({'msg': 'Transaction mined.', 'value': rec[-1]['transactionHash'].hex()}) + SUCCESS_DEPOSIT.inc() + + @staticmethod + def _prepare_signs(messages: List[DepositMessage]) -> List[Tuple[str, str]]: + sorted_messages = sorted(messages, key=lambda msg: int(msg['guardianAddress'], 16)) + + return [ + (msg['signature']['r'], compute_vs(msg['signature']['v'], msg['signature']['s'])) + for msg in sorted_messages + ] diff --git a/src/bots/pause.py b/src/bots/pause.py deleted file mode 100644 index 36546411..00000000 --- a/src/bots/pause.py +++ /dev/null @@ -1,98 +0,0 @@ -import logging -from typing import Callable - -from schema import Schema, Or -from web3.types import BlockData - -import variables -from blockchain.typings import Web3 -from cryptography.verify_signature import compute_vs -from metrics.transport_message_metrics import message_metrics_filter -from transport.msg_providers.kafka import KafkaMessageProvider -from transport.msg_providers.rabbit import RabbitProvider, MessageType -from transport.msg_schemas import PauseMessageSchema, get_pause_messages_sign_filter, PauseMessage, PingMessageSchema -from transport.msg_storage import MessageStorage -from transport.types import TransportType - - -logger = logging.getLogger(__name__) - - -class PauserBot: - def __init__(self, w3: Web3): - self.w3 = w3 - - transports = [] - - if TransportType.RABBIT in variables.MESSAGE_TRANSPORTS: - transports.append(RabbitProvider( - client='pauser', - routing_keys=[MessageType.PING, MessageType.PAUSE], - message_schema=Schema(Or(PauseMessageSchema, PingMessageSchema)), - )) - - if TransportType.KAFKA in variables.MESSAGE_TRANSPORTS: - transports.append(KafkaMessageProvider( - client=f'{variables.KAFKA_GROUP_PREFIX}pause', - message_schema=Schema(Or(PauseMessageSchema, PingMessageSchema)), - )) - - if not transports: - logger.warning({'msg': 'No transports found', 'value': variables.MESSAGE_TRANSPORTS}) - - pause_prefix = self.w3.lido.deposit_security_module.get_pause_message_prefix() - - self.message_storage = MessageStorage( - transports, - filters=[ - message_metrics_filter, - get_pause_messages_sign_filter(pause_prefix), - ], - ) - - def execute(self, block: BlockData) -> bool: - messages = self.receive_pause_messages() - logger.info({'msg': f'Received {len(messages)} pause messages.'}) - - for message in messages: - self._send_pause_message(message) - - return True - - def receive_pause_messages(self) -> list[PauseMessage]: - actualize_filter = self._get_message_actualize_filter() - return self.message_storage.get_messages(actualize_filter) - - def _get_message_actualize_filter(self) -> Callable[[PauseMessage], bool]: - current_block = self.w3.eth.get_block('latest') - message_validity_time = self.w3.lido.deposit_security_module.get_pause_intent_validity_period_blocks() - - def message_filter(message: PauseMessage) -> bool: - # TODO Metrics for filtered messages - return message['blockNumber'] > current_block['number'] - message_validity_time - - return message_filter - - def _send_pause_message(self, message: PauseMessage) -> bool: - module_id = message['stakingModuleId'] - - logger.warning({'msg': f'Handle pause message for module: {module_id}', 'value': message}) - - if not self.w3.lido.staking_router.is_staking_module_active(module_id): - # Module already deactivated - self._clear_outdated_messages_for_module(module_id) - logger.info({'msg': f'Module {module_id} already paused. Skip message.'}) - return False - - pause_tx = self.w3.lido.deposit_security_module.pause_deposits( - message['blockNumber'], - module_id, - (message['signature']['r'], compute_vs(message['signature']['v'], message['signature']['s'])) - ) - - result = self.w3.transaction.send(pause_tx, False, 6) - logger.info({'msg': f'Transaction send. Result is {result}.', 'value': result}) - return result - - def _clear_outdated_messages_for_module(self, module_id: int) -> None: - self.message_storage.get_messages(lambda message: message['stakingModuleId'] != module_id) diff --git a/src/bots/pause_bot.py b/src/bots/pause_bot.py new file mode 100644 index 00000000..fe0a7896 --- /dev/null +++ b/src/bots/pause_bot.py @@ -0,0 +1,207 @@ +import logging +import time +from typing import List + +import timeout_decorator +from schema import Schema, Or +from web3 import Web3 +from web3.exceptions import BlockNotFound, ContractLogicError +from web3_multi_provider import NoActiveProviderError + +import variables +from blockchain.contracts import contracts +from blockchain.fetch_latest_block import fetch_latest_block +from cryptography.verify_signature import compute_vs +from metrics import healthcheck_pulse +from metrics.metrics import BUILD_INFO +from metrics.transport_message_metrics import message_metrics +from transport.msg_providers.kafka import KafkaMessageProvider +from transport.msg_providers.rabbit import RabbitProvider, MessageType +from transport.msg_schemas import PauseMessageSchema, get_pause_messages_sign_filter, PauseMessage, PingMessageSchema +from transport.msg_storage import MessageStorage +from variables_types import TransportType + +logger = logging.getLogger(__name__) + + +class PauserBot: + current_block = None + + def __init__(self, w3: Web3): + logger.info({'msg': 'Initialize PauserBot.'}) + self.w3 = w3 + + self.blocks_till_pause_is_valid = contracts.deposit_security_module.functions.getPauseIntentValidityPeriodBlocks().call() + logger.info({ + 'msg': f'Call `getPauseIntentValidityPeriodBlocks()`.', + 'value': self.blocks_till_pause_is_valid, + }) + + self.pause_prefix = contracts.deposit_security_module.functions.PAUSE_MESSAGE_PREFIX().call() + logger.info({'msg': f'Call `PAUSE_MESSAGE_PREFIX()`.', 'value': str(self.pause_prefix)}) + + transports = [] + + if TransportType.RABBIT in variables.MESSAGE_TRANSPORTS: + transports.append(RabbitProvider( + client='pauser', + routing_keys=[MessageType.PING, MessageType.PAUSE], + message_schema=Schema(Or(PauseMessageSchema, PingMessageSchema)), + )) + + if TransportType.KAFKA in variables.MESSAGE_TRANSPORTS: + transports.append(KafkaMessageProvider( + client=f'{variables.KAFKA_GROUP_PREFIX}pause', + message_schema=PauseMessageSchema, + )) + + if not transports: + logger.error({'msg': 'No transports found', 'value': variables.MESSAGE_TRANSPORTS}) + raise ValueError(f'No transports found. Provided value: {variables.MESSAGE_TRANSPORTS}') + + self.message_storage = MessageStorage( + transports, + filters=[ + message_metrics, + get_pause_messages_sign_filter(self.pause_prefix), + ], + ) + + BUILD_INFO.labels( + 'Pauser bot', + variables.NETWORK, + None, + None, + None, + None, + None, + None, + None, + None, + variables.KAFKA_TOPIC, + variables.ACCOUNT.address if variables.ACCOUNT else '0x0', + variables.CREATE_TRANSACTIONS, + ) + + def run_as_daemon(self): + """Super-Mega infinity cycle!""" + while True: + self._waiting_for_new_block_and_run_cycle() + + @timeout_decorator.timeout(variables.MAX_CYCLE_LIFETIME_IN_SECONDS) + def _waiting_for_new_block_and_run_cycle(self): + try: + self.run_cycle() + except timeout_decorator.TimeoutError as exception: + # Bot is stuck. Drop bot and restart using Docker service + logger.error({'msg': 'Pauser bot do not respond.', 'error': str(exception)}) + raise timeout_decorator.TimeoutError('Pauser bot stuck. Restarting using docker service.') from exception + except BlockNotFound as error: + logger.warning({'msg': 'Fetch block exception (BlockNotFound)', 'error': str(error)}) + time.sleep(15) + except NoActiveProviderError as exception: + logger.error({'msg': 'No active node available.', 'error': str(exception)}) + raise NoActiveProviderError from exception + except Exception as exception: + logger.warning({'msg': 'Unexpected exception.', 'error': str(exception)}) + time.sleep(15) + else: + time.sleep(15) + + def run_cycle(self): + logger.info({'msg': 'New pause cycle.'}) + self._update_state() + + messages = self.receive_pause_messages() + + if not messages: + return + + staking_module_id = messages[0]['stakingModuleId'] + is_active = contracts.staking_router.functions.getStakingModuleIsActive(staking_module_id).call( + block_identifier=self.current_block.hash.hex(), + ) + + logger.info({ + 'msg': f'Call `getStakingModuleIsActive()`.', + 'value': is_active, + 'stakingModuleId': staking_module_id, + }) + + if not is_active: + self.message_storage.clear() + return + + self.pause_protocol(messages) + + def _update_state(self): + healthcheck_pulse.pulse() + + self.current_block = fetch_latest_block(self.w3, self.current_block.number if self.current_block else 0) + + def receive_pause_messages(self) -> List[PauseMessage]: + def validate_messages(messages: List[PauseMessage]): + return filter(lambda msg: msg['blockNumber'] > self.current_block.number - self.blocks_till_pause_is_valid, messages) + + self.message_storage.update_messages() + return self.message_storage.get_messages(actualize_rule=validate_messages) + + def pause_protocol(self, messages: List[PauseMessage]): + logger.warning({'msg': 'Message pause protocol initiate.', 'value': messages}) + + if not variables.ACCOUNT: + logger.warning({'msg': 'No account provided. Skip creating tx.'}) + return + + if not variables.CREATE_TRANSACTIONS: + logger.warning({'msg': 'Running in DRY mode.'}) + return + + for message in messages: + if self.send_pause_transaction(message): + break + + def send_pause_transaction(self, message: PauseMessage): + priority_fee = self.w3.eth.max_priority_fee * 2 + + logger.info({ + 'msg': 'Send pause transaction.', + 'values': { + 'block_number': message['blockNumber'], + 'signature': (message['signature']['r'], compute_vs(message['signature']['v'], message['signature']['s'])), + 'priority_fee': priority_fee, + }, + }) + + pause_function = contracts.deposit_security_module.functions.pauseDeposits( + message['blockNumber'], + message['stakingModuleId'], + (message['signature']['r'], compute_vs(message['signature']['v'], message['signature']['s'])) + ) + + try: + pause_function.call() + except ContractLogicError as error: + logger.error({'msg': 'Local transaction reverted.', 'error': str(error)}) + return False + + logger.info({'msg': 'Transaction call completed successfully.'}) + + transaction = pause_function.build_transaction({ + 'from': variables.ACCOUNT.address, + 'gas': variables.CONTRACT_GAS_LIMIT, + 'maxFeePerGas': self.current_block.baseFeePerGas * 2 + priority_fee, + 'maxPriorityFeePerGas': priority_fee, + "nonce": self.w3.eth.get_transaction_count(variables.ACCOUNT.address), + }) + + signed = self.w3.eth.account.sign_transaction(transaction, variables.ACCOUNT.privateKey) + + try: + result = self.w3.eth.send_raw_transaction(signed.rawTransaction) + except Exception as error: + logger.error({'msg': 'Transaction reverted.', 'value': str(error)}) + return False + else: + logger.info({'msg': 'Transaction mined.', 'value': result.hex()}) + return True diff --git a/src/depositor.py b/src/depositor.py index 23849526..bafb61ba 100644 --- a/src/depositor.py +++ b/src/depositor.py @@ -1,74 +1,48 @@ from prometheus_client import start_http_server from flashbots import flashbot from web3 import Web3 -from web3_multi_provider import FallbackProvider +from web3_multi_provider import MultiProvider import variables -from blockchain.executer import Executor -from blockchain.web3_extentions.lido_contracts import LidoContracts -from blockchain.web3_extentions.transaction import TransactionUtils -from bots.depositor import DepositorBot +from blockchain.constants import FLASHBOTS_RPC +from blockchain.contracts import contracts from metrics.healthcheck_pulse import start_pulse_server from metrics.logging import logging -from blockchain.web3_extentions.requests_metric_middleware import add_requests_metric_middleware -from metrics.metrics import BUILD_INFO +from blockchain.requests_metric_middleware import add_requests_metric_middleware logger = logging.getLogger(__name__) def main(): + logger.info({'msg': 'Start Depositor bot.'}) + logger.info({'msg': f'Start up healthcheck service on port: {variables.PULSE_SERVER_PORT}.'}) start_pulse_server() logger.info({'msg': f'Start up metrics service on port: {variables.PROMETHEUS_PORT}.'}) start_http_server(variables.PROMETHEUS_PORT) - # Send vars to metrics - BUILD_INFO.labels( - 'Depositor bot', - variables.MAX_GAS_FEE, - variables.MAX_BUFFERED_ETHERS, - variables.CONTRACT_GAS_LIMIT, - variables.GAS_FEE_PERCENTILE_1, - variables.GAS_FEE_PERCENTILE_DAYS_HISTORY_1, - variables.GAS_PRIORITY_FEE_PERCENTILE, - variables.MIN_PRIORITY_FEE, - variables.MAX_PRIORITY_FEE, - variables.KAFKA_TOPIC, - variables.ACCOUNT.address if variables.ACCOUNT else '0x0', - variables.CREATE_TRANSACTIONS, - ) - logger.info({'msg': 'Connect MultiHTTPProviders.', 'rpc_count': len(variables.WEB3_RPC_ENDPOINTS)}) - w3 = Web3(FallbackProvider(variables.WEB3_RPC_ENDPOINTS)) - - logger.info({'msg': 'Initialize Lido contracts.'}) - w3.attach_modules({ - 'lido': LidoContracts, - 'transaction': TransactionUtils, - }) + w3 = Web3(MultiProvider(variables.WEB3_RPC_ENDPOINTS)) - if variables.FLASHBOT_SIGNATURE and variables.FLASHBOTS_RPC: + if variables.FLASHBOT_SIGNATURE is None: + logger.info({'msg': 'No flashbots middleware.'}) + elif variables.WEB3_CHAIN_ID in FLASHBOTS_RPC: logger.info({'msg': 'Add flashbots middleware.'}) - flashbot(w3, w3.eth.account.from_key(variables.FLASHBOT_SIGNATURE), variables.FLASHBOTS_RPC) + flashbot(w3, w3.eth.account.from_key(variables.FLASHBOT_SIGNATURE), FLASHBOTS_RPC[variables.WEB3_CHAIN_ID]) else: logger.info({'msg': 'No flashbots available for this network.'}) logger.info({'msg': 'Add metrics to web3 requests.'}) add_requests_metric_middleware(w3) - logger.info({'msg': 'Initialize Depositor bot.'}) - depositor_bot = DepositorBot(w3) + logger.info({'msg': 'Load contracts.'}) + contracts.initialize(w3) - e = Executor( - w3, - depositor_bot.execute, - 5, - variables.MAX_CYCLE_LIFETIME_IN_SECONDS, - ) - logger.info({'msg': 'Rum executor.'}) - e.execute_as_daemon() + from bots.depositor_bot import DepositorBot + depositor_bot = DepositorBot(w3) + depositor_bot.run_as_daemon() if __name__ == '__main__': diff --git a/src/metrics/healthcheck_pulse.py b/src/metrics/healthcheck_pulse.py index 57e69691..88626eec 100644 --- a/src/metrics/healthcheck_pulse.py +++ b/src/metrics/healthcheck_pulse.py @@ -5,7 +5,6 @@ import requests - SERVER_PORT = int(os.getenv('PULSE_SERVER_PORT', 9010)) _last_pulse = datetime.now() diff --git a/src/metrics/logging.py b/src/metrics/logging.py index 5007882a..cbec5a4d 100644 --- a/src/metrics/logging.py +++ b/src/metrics/logging.py @@ -1,6 +1,5 @@ import json import logging -from time import time class JsonFormatter(logging.Formatter): @@ -15,7 +14,6 @@ def format(self, record: logging.LogRecord) -> str: 'lineno': record.lineno, 'module': record.module, 'pathname': record.pathname, - 'timestamp': int(time()), **message, }) return to_json_msg diff --git a/src/metrics/metrics.py b/src/metrics/metrics.py index eedae177..fa6fa375 100644 --- a/src/metrics/metrics.py +++ b/src/metrics/metrics.py @@ -4,6 +4,7 @@ BUILD_INFO = Gauge('build_info', 'Build info', [ 'name', + 'network', 'max_gas_fee', 'max_buffered_ethers', 'contract_gas_limit', @@ -17,26 +18,27 @@ 'create_transactions', ], namespace=PREFIX) -GAS_FEE = Gauge('gas_fee', 'Gas fee', ['type', 'module_id'], namespace=PREFIX) +GAS_FEE = Gauge('gas_fee', 'Gas fee', ['type'], namespace=PREFIX) -TX_SEND = Counter('transactions_send', 'Amount of send transaction from bot.', ['status'], namespace=PREFIX) +DEPOSIT_FAILURE = Counter('deposit_failure', 'Deposit failure', namespace=PREFIX) +SUCCESS_DEPOSIT = Counter('deposit_success', 'Deposit done', namespace=PREFIX) ACCOUNT_BALANCE = Gauge('account_balance', 'Account balance', namespace=PREFIX) -DEPOSIT_MESSAGES = Gauge( - 'deposit_messages', +KAFKA_DEPOSIT_MESSAGES = Gauge( + 'kafka_deposit_messages', 'Guardians deposit messages', ['address', 'version'], namespace=PREFIX, ) -PAUSE_MESSAGES = Gauge( - 'pause_messages', +KAFKA_PAUSE_MESSAGES = Gauge( + 'kafka_pause_messages', 'Guardians pause messages', ['address', 'version'], namespace=PREFIX, ) -PING_MESSAGES = Gauge( - 'ping_messages', +KAFKA_PING_MESSAGES = Gauge( + 'kafka_ping_messages', 'Guardians ping messages', ['address', 'version'], namespace=PREFIX, @@ -48,16 +50,12 @@ namespace=PREFIX, ) -DEPOSITABLE_ETHER = Gauge( - 'depositable_ether', - 'Depositable Ether', - ['module_id'], - namespace=PREFIX, -) -POSSIBLE_DEPOSITS_AMOUNT = Gauge( - 'possible_deposits_amount', - 'Possible deposits amount.', - ['module_id'], +BUFFERED_ETHER = Gauge('buffered_ether', 'Buffered ether', namespace=PREFIX) +CAN_DEPOSIT_KEYS = Gauge('can_deposit_keys', 'Can depositor bot deposit keys.', namespace=PREFIX) + +REQUIRED_BUFFERED_ETHER = Gauge( + 'required_buffered_ether', + 'Buffered ether amount required for deposit', namespace=PREFIX, ) diff --git a/src/metrics/transport_message_metrics.py b/src/metrics/transport_message_metrics.py index f2747c80..6cedfc7f 100644 --- a/src/metrics/transport_message_metrics.py +++ b/src/metrics/transport_message_metrics.py @@ -1,6 +1,6 @@ import logging -from metrics.metrics import DEPOSIT_MESSAGES, PING_MESSAGES, PAUSE_MESSAGES +from metrics.metrics import KAFKA_DEPOSIT_MESSAGES, KAFKA_PING_MESSAGES from transport.msg_providers.rabbit import MessageType from transport.msg_schemas import DepositMessage @@ -8,23 +8,20 @@ logger = logging.getLogger(__name__) -def message_metrics_filter(msg: DepositMessage) -> bool: +def message_metrics(msg: DepositMessage) -> bool: + # Remove all ping messages, because we use them only for metrics msg_type = msg.get('type', None) logger.info({'msg': 'Guardian message received.', 'value': msg, 'type': msg_type}) address, version = msg.get('guardianAddress'), msg.get('app', {}).get('version') if msg_type == MessageType.PAUSE: - PAUSE_MESSAGES.labels(address, version).inc() return True if msg_type == MessageType.DEPOSIT: - DEPOSIT_MESSAGES.labels(address, version).inc() + KAFKA_DEPOSIT_MESSAGES.labels(address, version).inc() return True elif msg_type == MessageType.PING: - # Filter all ping messages, because we use them only for metrics - PING_MESSAGES.labels(address, version).inc() + KAFKA_PING_MESSAGES.labels(address, version).inc() return False - - # TODO Log all filtered messages diff --git a/src/pauser.py b/src/pauser.py index a83ad537..7bf0eb20 100644 --- a/src/pauser.py +++ b/src/pauser.py @@ -1,67 +1,37 @@ from prometheus_client import start_http_server from web3 import Web3 -from web3_multi_provider import FallbackProvider +from web3_multi_provider import MultiProvider import variables -from blockchain.executer import Executor -from blockchain.web3_extentions.lido_contracts import LidoContracts -from blockchain.web3_extentions.transaction import TransactionUtils -from bots.pause import PauserBot from metrics.healthcheck_pulse import start_pulse_server from metrics.logging import logging -from blockchain.web3_extentions.requests_metric_middleware import add_requests_metric_middleware -from metrics.metrics import BUILD_INFO - +from blockchain.requests_metric_middleware import add_requests_metric_middleware +from blockchain.contracts import contracts logger = logging.getLogger(__name__) def main(): + logger.info({'msg': 'Start Pause bot.'}) + logger.info({'msg': f'Start up healthcheck service on port: {variables.PULSE_SERVER_PORT}.'}) start_pulse_server() logger.info({'msg': f'Start up metrics service on port: {variables.PROMETHEUS_PORT}.'}) start_http_server(variables.PROMETHEUS_PORT) - BUILD_INFO.labels( - 'Pause bot', - variables.MAX_GAS_FEE, - variables.MAX_BUFFERED_ETHERS, - variables.CONTRACT_GAS_LIMIT, - None, - None, - None, - None, - None, - variables.KAFKA_TOPIC, - variables.ACCOUNT.address if variables.ACCOUNT else '0x0', - variables.CREATE_TRANSACTIONS, - ) - logger.info({'msg': 'Connect MultiHTTPProviders.', 'rpc_count': len(variables.WEB3_RPC_ENDPOINTS)}) - w3 = Web3(FallbackProvider(variables.WEB3_RPC_ENDPOINTS)) + w3 = Web3(MultiProvider(variables.WEB3_RPC_ENDPOINTS)) logger.info({'msg': 'Add metrics to web3 requests.'}) add_requests_metric_middleware(w3) logger.info({'msg': 'Load contracts.'}) - w3.attach_modules({ - 'lido': LidoContracts, - 'transaction': TransactionUtils, - }) - - logger.info({'msg': 'Add metrics to web3 requests.'}) - add_requests_metric_middleware(w3) + contracts.initialize(w3) - pause = PauserBot(w3) - e = Executor( - w3, - pause.execute, - 1, - variables.MAX_CYCLE_LIFETIME_IN_SECONDS, - ) - logger.info({'msg': 'Rum executor.'}) - e.execute_as_daemon() + from bots.pause_bot import PauserBot + deposit_pause_bot = PauserBot(w3) + deposit_pause_bot.run_as_daemon() if __name__ == '__main__': diff --git a/src/transport/msg_providers/kafka.py b/src/transport/msg_providers/kafka.py index 633d0365..df2c1b20 100644 --- a/src/transport/msg_providers/kafka.py +++ b/src/transport/msg_providers/kafka.py @@ -11,10 +11,9 @@ KAFKA_USERNAME, KAFKA_PASSWORD, KAFKA_TOPIC, - KAFKA_NETWORK, + NETWORK, ) - logger = logging.getLogger(__name__) @@ -29,7 +28,7 @@ class KafkaMessageProvider(BaseMessageProvider): def __init__(self, message_schema: Schema, client: str): logger.info({'msg': 'Kafka initialize.'}) - kafka_topic = f'{KAFKA_NETWORK}-{KAFKA_TOPIC}' + kafka_topic = f'{NETWORK}-{KAFKA_TOPIC}' self.kafka = Consumer({ 'client.id': kafka_topic + f'-{client}-client', diff --git a/src/transport/msg_providers/rabbit.py b/src/transport/msg_providers/rabbit.py index c9d126ae..4f0c260d 100644 --- a/src/transport/msg_providers/rabbit.py +++ b/src/transport/msg_providers/rabbit.py @@ -9,7 +9,7 @@ import variables from transport.msg_providers.common import BaseMessageProvider from transport.msg_providers.stomp.client import Client - +from variables import NETWORK, KAFKA_TOPIC logger = logging.getLogger(__name__) diff --git a/src/transport/msg_schemas.py b/src/transport/msg_schemas.py index a906615e..ded2d5c0 100644 --- a/src/transport/msg_schemas.py +++ b/src/transport/msg_schemas.py @@ -1,4 +1,3 @@ -import logging import re from typing import Callable, TypedDict @@ -7,9 +6,6 @@ from cryptography.verify_signature import verify_message_with_signature -logger = logging.getLogger(__name__) - - HASH_REGREX = Regex('^0x[0-9,A-F]{64}$', flags=re.IGNORECASE) ADDRESS_REGREX = Regex('^0x[0-9,A-F]{40}$', flags=re.IGNORECASE) @@ -64,20 +60,18 @@ class Signature(TypedDict): class DepositMessage(TypedDict): type: str depositRoot: str - nonce: int + nonce: str blockNumber: int blockHash: str guardianAddress: str signature: Signature stakingModuleId: int - app: dict -def get_deposit_messages_sign_filter(attestation_prefix: bytes) -> Callable: - """Returns filter that checks message validity""" +def get_deposit_messages_sign_filter(deposit_prefix) -> Callable: def check_deposit_messages(msg: DepositMessage) -> bool: - verified = verify_message_with_signature( - data=[attestation_prefix, msg['blockNumber'], msg['blockHash'], msg['depositRoot'], msg['stakingModuleId'], msg['nonce']], + return verify_message_with_signature( + data=[deposit_prefix, msg['blockNumber'], msg['blockHash'], msg['depositRoot'], msg['stakingModuleId'], msg['nonce']], abi=['bytes32', 'uint256', 'bytes32', 'bytes32', 'uint256', 'uint256'], address=msg['guardianAddress'], vrs=( @@ -87,11 +81,6 @@ def check_deposit_messages(msg: DepositMessage) -> bool: ), ) - if not verified: - logger.error({'msg': 'Message verification failed.', 'value': msg}) - - return verified - return check_deposit_messages @@ -129,10 +118,10 @@ class PauseMessage(TypedDict): stakingModuleId: int -def get_pause_messages_sign_filter(attestation_prefix: bytes) -> Callable: +def get_pause_messages_sign_filter(pause_prefix: str) -> Callable: def check_pause_message(msg: PauseMessage) -> bool: - verified = verify_message_with_signature( - data=[attestation_prefix, msg['blockNumber'], msg['stakingModuleId']], + return verify_message_with_signature( + data=[pause_prefix, msg['blockNumber'], msg['stakingModuleId']], abi=['bytes32', 'uint256', 'uint256'], address=msg['guardianAddress'], vrs=( @@ -142,11 +131,6 @@ def check_pause_message(msg: PauseMessage) -> bool: ), ) - if not verified: - logger.error({'msg': 'Message verification failed.', 'value': msg}) - - return verified - return check_pause_message diff --git a/src/transport/msg_storage.py b/src/transport/msg_storage.py index f365d849..8ec6a53e 100644 --- a/src/transport/msg_storage.py +++ b/src/transport/msg_storage.py @@ -1,7 +1,6 @@ from typing import List, Callable, Iterable from transport.msg_providers.common import BaseMessageProvider -from transport.msg_schemas import DepositMessage class MessageStorage: @@ -28,11 +27,13 @@ def _receive_messages(self) -> Iterable[dict]: return self.messages - def get_messages(self, actualize_rule: Callable[[DepositMessage], bool]) -> List[dict]: + def update_messages(self): + self._receive_messages() + + def get_messages(self, actualize_rule: Callable) -> List[dict]: """ - actualize_rule - is filter that filters all outdated messages + actualize_rule - function that will filter messages based on all messages in memory and last data from blockchain """ - self._receive_messages() self.messages = list(filter(actualize_rule, self.messages)) return self.messages diff --git a/src/utils/__init__.py b/src/utils/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/src/utils/timeout.py b/src/utils/timeout.py deleted file mode 100644 index 968b1c6e..00000000 --- a/src/utils/timeout.py +++ /dev/null @@ -1,27 +0,0 @@ -import signal - - -class TimeoutManagerError(Exception): - pass - - -class TimeoutManager: - """Simple timeout manager """ - @staticmethod - def handler(signum, frame): - raise TimeoutManagerError - - def __init__(self, seconds: int): - self.old = -1 - self.seconds = seconds - - def __enter__(self): - # Set timer - self.old = signal.signal(signal.SIGALRM, self.handler) - signal.setitimer(signal.ITIMER_REAL, self.seconds) - return self - - def __exit__(self, exception_type, exception_value, exception_traceback): - # Remove timer - signal.setitimer(signal.ITIMER_REAL, 0) - signal.signal(signal.SIGALRM, self.old) diff --git a/src/variables.py b/src/variables.py index 236e3e81..42c271b4 100644 --- a/src/variables.py +++ b/src/variables.py @@ -4,74 +4,63 @@ from eth_account import Account from web3 import Web3 +from blockchain.constants import NETWORK_CHAIN_ID, Network +from variables_types import TransportType logger = logging.getLogger(__name__) -# EL node -WEB3_RPC_ENDPOINTS = os.getenv('WEB3_RPC_ENDPOINTS', '').split(',') +NETWORK = os.getenv('NETWORK') -# Account private key -WALLET_PRIVATE_KEY = os.getenv('WALLET_PRIVATE_KEY', None) +# Transaction limits +MAX_GAS_FEE = Web3.toWei(*os.getenv('MAX_GAS_FEE', '100 gwei').split(' ')) +CONTRACT_GAS_LIMIT = int(os.getenv('CONTRACT_GAS_LIMIT', 15 * 10**6)) -if WALLET_PRIVATE_KEY: - ACCOUNT = Account.from_key(WALLET_PRIVATE_KEY) - logger.info({'msg': 'Load account from private key.', 'value': ACCOUNT.address}) -else: - ACCOUNT = None - logger.warning({'msg': 'Account not provided. Run in dry mode.'}) +# Gas fee percentile +GAS_FEE_PERCENTILE_1: int = int(os.getenv('GAS_FEE_PERCENTILE_1', 5)) +GAS_FEE_PERCENTILE_DAYS_HISTORY_1: int = int(os.getenv('GAS_FEE_PERCENTILE_DAYS_HISTORY_1', 1)) -# App specific -# LIDO_LOCATOR ADDRESS -# Mainnet: 0xC1d0b3DE6792Bf6b4b37EccdcC24e45978Cfd2Eb -# Görli: 0x1eDf09b5023DC86737b59dE68a8130De878984f5 -LIDO_LOCATOR = os.getenv('LIDO_LOCATOR', '0xC1d0b3DE6792Bf6b4b37EccdcC24e45978Cfd2Eb') +GAS_PRIORITY_FEE_PERCENTILE = int(os.getenv('GAS_PRIORITY_FEE_PERCENTILE', 25)) -# DEPOSIT_CONTRACT ADDRESS -# Mainnet: 0x00000000219ab540356cBB839Cbe05303d7705Fa -# Görli: 0xff50ed3d0ec03aC01D4C79aAd74928BFF48a7b2b -DEPOSIT_CONTRACT = os.getenv('DEPOSIT_CONTRACT', '0x00000000219ab540356cBB839Cbe05303d7705Fa') +MIN_PRIORITY_FEE = Web3.toWei(*os.getenv('MIN_PRIORITY_FEE', '50 mwei').split(' ')) +MAX_PRIORITY_FEE = Web3.toWei(*os.getenv('MAX_PRIORITY_FEE', '10 gwei').split(' ')) -# rabbit / kafka / rabbit,kafka -MESSAGE_TRANSPORTS = os.getenv('MESSAGE_TRANSPORTS', '').split(',') +MAX_BUFFERED_ETHERS = Web3.toWei(*os.getenv('MAX_BUFFERED_ETHERS', '5000 ether').split(' ')) # Kafka secrets KAFKA_BROKER_ADDRESS_1 = os.getenv('KAFKA_BROKER_ADDRESS_1') KAFKA_USERNAME = os.getenv('KAFKA_USERNAME') KAFKA_PASSWORD = os.getenv('KAFKA_PASSWORD') -KAFKA_NETWORK = os.getenv('KAFKA_NETWORK', 'mainnet') # or goerli KAFKA_TOPIC = os.getenv('KAFKA_TOPIC') KAFKA_GROUP_PREFIX = os.getenv('KAFKA_GROUP_PREFIX', '') -# rabbit secrets -RABBIT_MQ_URL = os.getenv('RABBIT_MQ_URL', 'ws://127.0.0.1:15674/ws') -RABBIT_MQ_USERNAME = os.getenv('RABBIT_MQ_USERNAME', 'guest') -RABBIT_MQ_PASSWORD = os.getenv('RABBIT_MQ_PASSWORD', 'guest') - -# Transactions settings -CREATE_TRANSACTIONS = os.getenv('CREATE_TRANSACTIONS') == 'true' - -MIN_PRIORITY_FEE = Web3.toWei(*os.getenv('MIN_PRIORITY_FEE', '50 mwei').split(' ')) -MAX_PRIORITY_FEE = Web3.toWei(*os.getenv('MAX_PRIORITY_FEE', '10 gwei').split(' ')) +# Should be reinitialized after brownie pre-script +WEB3_CHAIN_ID = NETWORK_CHAIN_ID.get(NETWORK, Network.Mainnet) -MAX_GAS_FEE = Web3.toWei(*os.getenv('MAX_GAS_FEE', '100 gwei').split(' ')) -CONTRACT_GAS_LIMIT = int(os.getenv('CONTRACT_GAS_LIMIT', 15 * 10**6)) - -# FLASHBOTS_RPC URL -# Mainnet: "https://relay.flashbots.net", -# Görli: "https://relay-goerli.flashbots.net", -FLASHBOTS_RPC = os.getenv('FLASHBOTS_RPC', None) +# Account private key +WALLET_PRIVATE_KEY = os.getenv('WALLET_PRIVATE_KEY', None) FLASHBOT_SIGNATURE = os.getenv('FLASHBOT_SIGNATURE', None) -# Curated module strategy -GAS_FEE_PERCENTILE_1: int = int(os.getenv('GAS_FEE_PERCENTILE_1', 20)) -GAS_FEE_PERCENTILE_DAYS_HISTORY_1: int = int(os.getenv('GAS_FEE_PERCENTILE_DAYS_HISTORY_1', 1)) +if WALLET_PRIVATE_KEY: + ACCOUNT = Account.from_key(WALLET_PRIVATE_KEY) + logger.info({'msg': 'Load account from private key.', 'value': ACCOUNT.address}) +else: + ACCOUNT = None + logger.warning({'msg': 'Account not provided. Run in dry mode.'}) -GAS_PRIORITY_FEE_PERCENTILE = int(os.getenv('GAS_PRIORITY_FEE_PERCENTILE', 25)) +CREATE_TRANSACTIONS = os.getenv('CREATE_TRANSACTIONS') == 'true' -MAX_BUFFERED_ETHERS = Web3.toWei(*os.getenv('MAX_BUFFERED_ETHERS', '5000 ether').split(' ')) +WEB3_RPC_ENDPOINTS = os.getenv('WEB3_RPC_ENDPOINTS', '').split(',') -# Metrics PROMETHEUS_PORT = int(os.getenv('PROMETHEUS_PORT', '9000')) PULSE_SERVER_PORT = int(os.getenv('PULSE_SERVER_PORT', '9010')) -MAX_CYCLE_LIFETIME_IN_SECONDS = int(os.getenv('MAX_CYCLE_LIFETIME_IN_SECONDS', '1200')) + +MAX_CYCLE_LIFETIME_IN_SECONDS = int(os.getenv('MAX_CYCLE_LIFETIME_IN_SECONDS', '30000')) + +RABBIT_MQ_URL = os.getenv('RABBIT_MQ_URL', 'ws://127.0.0.1:15674/ws') + +RABBIT_MQ_USERNAME = os.getenv('RABBIT_MQ_USERNAME', 'guest') +RABBIT_MQ_PASSWORD = os.getenv('RABBIT_MQ_PASSWORD', 'guest') + +# rabbit / kafka or rabbit,kafka +MESSAGE_TRANSPORTS = os.getenv('MESSAGE_TRANSPORTS', TransportType.RABBIT).split(',') diff --git a/src/transport/types.py b/src/variables_types.py similarity index 100% rename from src/transport/types.py rename to src/variables_types.py diff --git a/static/img.png b/static/img.png deleted file mode 100644 index 3bd5c83741e031194e7c2600fbea7b172a512033..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 39855 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 diff --git a/static/img1.png b/static/img1.png deleted file mode 100644 index 3228000335ad9b823f83747085792a75a6166a48..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 36369 zcmeFZc{r4P_%=Q*QX{P+WiKsKNLeabYiL1a%^GDLW65qpDXJ0L3)zMkJ7KItl(b29 zX6$4i62{JZ-BQovLa2U4fbUk!s=Z-; z=1YqU)Na&ZMV0)Ls>a%zm_0(P&r101*&^b%2NkznajODpE9RCpTr3c=o`~8O6utgT zVDx&_z!~JWYq0_bYq6-a2mJQjJR>Nyx*EQ%a1yyQm*UoYI~2E~YVJp`7pPuORLF*J zKU9Z{@56wQ;Gu51{J)?2|2=>;J1{CiTo$w(TpuqhN$Jn%WzViBqD|ffu#X2f*15NP zThVeI9CnDA7$EP0mMqRDmt}sA zlvZyq_MZDn!Uh&~v%_Sq%xwM^497Ydmwt`iM5JkBwj#8V!(pv`niy)Vl4*PRcg~-)DT;@~5^FIrvSK5; z!h4U6_QGp`b1Ri!Yn(XP%%Q@%7aS=dU%dFQ{p1KC)>m%D1VF z588FyF?#0L7qLSVtvR?C)Q2V+S8grLWLEGU3*wfhRFp|Mw7ohp^|SNcp;xE-iiXk( zRU6Zc8QwPM`xv?H_Mg9eIW+NQ2c~s=z$tHv*JC8V&(<{xEi!V#Ajj5%-qOb#Kk$S~ zn4cTOf(4jF|Cssz7O;rFg{8E&e6<@8|}v*gKvi&7;^i-h

Qo!9 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� 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 Usn2h#bl>;M1& diff --git a/static/img2.png b/static/img2.png deleted file mode 100644 index 8523e240bdb2aac213dc7a86e68e38b7d434d63c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 51833 zcmeFZXH-+|)-H_tU_mJ=pwh8Yq$o{6iXez0QWHWKkkCP-Nk*{140sd?-sy9 zFQFF|6$k`W2nYy#bH)Aaz27p<7~j7$&e%T~3Q1P(b>FjI*EQEe?dz8r88{f|=;#=) zs9(~hquW7%pUT}k;V;e0J=Sz|L3CFxUDUs0HaE7OrfEI7^`mpbRqr-e=<{$E-Hziz znZeEAEsd@~(g)BCL|PTK!+?VE&<|L}Q+ zp^$%-=2&2fu&zOV^fu%_#VW+@$iJ4M7&LfH-hka>r><km`b@;8gT$DMYi@l~UVOESHzA5sCaH2FVB`X| zPcJ7o_gx>+P=eLxN+w_Zrw5#88$uPge)me+^)$_m*UL%re3iKQj%9s));Z=FnD+yk zL!4_O510pX*HGFLCBAjYEl9!|WO)6Tbf%YaYa+VJ5q+r^J^CxM*P-hUL3J=Uc=KRrK)rA>zjE9jO~mXU_Oj+j-?c?T z)W--nVz{!7)%EA+KDmt4d6zOKH*Qi3u^VetEbO54OID@zWy<1P@8aAy&TOLL{Z?nbpLl?#F|uOv6&_&@KHsdh=uSxX+F)kw>ub@nsh5 zMx$k$zn>VIDnDIZuDP`_U%PNxY);y7@J3_dc)f4(*Vg!v1D7Yx9vqW_Mok9+W~;sWKCOR+aJ_ zOTC-3xy&-|wPriyqce>Qd!LCIw@r6vQGS6X%9m|@fC$@-gz=Y$Rxs4h&Ql#J%MSF9 zvEO*^e7qa!y0x(o*sduvcGJ0W!!t1XPz1NEd(l+*&bPkBm3F-+1Cy8Y=u@w!DWsf1 zcWUudN8LJCN7ksbHuF`J(UGpAGHBJ%E&F8O!$sILY?yiyDW zuWVIj3*J^5JyOEG^TM6)H{=}FTg4i0I`S&`RYiTr|1v%G&(rrM+V9l1l61=}^f*jt z=yyz%^X$vjkxs2kyeh`-fx*k6f8-?Uv{%hI&?h$ZUrUigOX}su`PUbEOcPpWSw#llRqAXrek|^#gS>nC-^uk44k`ED#Vn1-FX?mNdGjus?$V4Vnc<q+k0MjJB7uSc1%}(3z>>4X9a~$f~cUb)8=GLQQm*+6t9Ugn>Xs_HHI-J@fa!!CD^Ehsqj6N~pAw4M|h zoNUhQQ1n<4mW?Mxpi=bmie*=NxKD)(jLkRWFJFAI0XESxu3+){udNDL3|75-1CC~& ze1-em;28%Z*+kRJQ5w$sg1J96F3NSxh1{2y;V*R4L!hjdH%8_lVJg?ZElp9eEGGT2 zC2D{E`sIhPw55yp*8MIRT^aO`^gH&?vvng1dAdhupo!E9|6iX%mlYNo)}3wZS|gf2 zR_E~0M>zLNnNrJ{P$c`BZ0?=Jb8eNs?x{1lD^KPW>Pfd-4-$9-e;1FXI`wzT?YlGG zm9bgzv&9~^se87&!QYqj9m5^&lf=02U@M=cX$zxrd$yWF4dI=_mo$8w(f2c-Q*u{d6_9Mg!U7ZB#|oVd$Sa}+`bU)Mrt#=wT;(>|EOtCbA4HO zYlJHI{A@G{Ur{4cW&6ldTW4AngHzF9Gq!4p+#|0R%e13kp}zI)%?K2C1;Hul)4p+o zV#1<|l-?1OCiObQfsfX9A2aVqq+Xn$yoU3?-tA zYi%MLS9WY}#qz7nolX`#QtC0=-?br$F10brKu;x*AB)LO>D^^}u1d8mhL@I~YvrFN z9?@Lz$w(?@EI9DHS4(k7^=X-GL25Ggm$Tu~ z=;%-M!47tUY$T>TSL4&Pu9%MkN2&6pPp#+?pSGHKbfy`NldU!3*PO~i$GwQoRk zTcN)L%G_lHVz}6Pz5MU*Z#Jb zYF(@EIV@6^ZOb&DRl@Sm6Xi$CC)Mj877CI~Mh~BUUa+1Q)O)A-@#{r(VsGh6hjrpu;5}O9nlT~ReqlCvH^sa#U*T}q)uwSuO=PsP0e|6u+9Z$9G(TrO z$7~Cp>7YT8eG9tuWyB$|jw(%I`Pr#VrGZahjH(l6iQ9juA(a)>PxcLv5{Fb)q|?v- z)1cXui8T_*O4k2$LHN(_|NR#YH{y2Ji+?AU%f#)g@bf3j{O1?Cm;bNr!Bn$-p;`U4 zGzEXUFBc)nhoShkTe8v7{i?&z$C@_@X-gx&@xAh#8?<;PYRWOpM0W-DfR66?V3q4+ zn^WZ&`@jBlxR`-2A1U5~{yK)}==OjKs|)}6KDdgVD(!pzbJ72s_mn^2*QZ^j-iz49skFegk&jE>~ z6=m9qH$k2InSSpC2Hj`-MJ6jC0ff%~^KI|aF9x5@luTZxj3h(AeK5cG z?+d(xuF%D(!tn@0UpkvG`u_Ybx+^pQ;&>Z$Zz^}m)w2b)bE|}Te>y%pn!Vm%h5Vs8 zP++Q(A+(E$Yj@PHpyPjRR$X|jCSwhXxP9GHF`vKKo)TAg#{$;ljOVXd;rlx{F0DjC}pw*QiF&?Rs~fOO{IuCc>qc1Y)|M*jZkO?!9N zWtGVb;lt1?jr=ex+nL2q_xK*N_Aq``GAv6IS}Z4=!rFA!*CatySx3T|H+_ZX6Z!;n z`@SP*o491%1tgj1KGQrn>=6{b)|Zf?vz0BcU~#H5*}%-Z8QS2N^DZA>-bL2IM_Y%I z@T$G4dHx(BmrKh2>G^=)cWg}xMne)=^J#m&BdCh@K78y^l<+V66XvS8&Bmk0NZGdj zl=6Y!w)In~zHJTu>&laK>3G^npp-(FcOIkWy-3CP&Em}J?sV5}uFdA?WT`Fx@THPf z%eIHHA@L;rfSt9O$TM7=58Fei)y@EfwJ(ZrI=mn0gIl6FN2Ypfyx!a8yDv_rcMfP zoUf|VE^GMF!kGgtr?ior=bSBclPny&=vHYd`paGPFe$v2LE(sEfFJRgRC37PLu(TG zW@Tp8w@<*P{=AEvL#~n$PF;9T=({}$Z*6wx6TREo(o9#?al^Vh#no_e%1U2>sa&ZK z)!uFO=T~Ia>aQo$+5=Dt?95*T0#g znT+j7mFMJ$$1c<@M%(q~MENtiCwzZ=LL&@K$40YGfl$gwCkpK z8!}GTOkds;#v*Ws#Gz7~q#>`GGKqFjJ7@HL_*KUuJTL4 zkA|yUtt7nWP3{q%LrnS7_y8>OC(XMz6;;VeQVw(Fm)J0x$=5f|ReZsIyhDgj z#C8$W8c9hew%Iq#ijsgj$#pZN(|lauTn+K6xUNgh%*n;&5tq;w{zlJ*aVJ{CZ7Z_W zO1Dh_F_EBq8S18R&M6mBe1d4U{P}bG1@*owNwxDet((`v!^7JEjDh__4qRPPMi+L| z0fGb@M<~8La4Vp<(7Z9yR^IK~HCwKr*9Zz5)Yl`_@JiijqM_a!Kr`h@7BO%*@f|z& z6)Bd=dXN(!DDBTz+J@|j5?MfZsy*38>`CUwYHGi6dyU5|e86QFGmqrTm=|w11FHaX zzqkkJr;KX$FRrJwfdi>b#-0vk;y$}$7gJkUKg0uwmgln(+D;>O(u|#nawm->rvIV|A9C2yB;xbD|ab2X(0QX|&2zA#fV>)v7zAe3O zG~yQzv(!mfi;d2pU)^4(R3*q^w+c#;qVrlD|as#(K zKQ=%2sd?kC<1#oLlcx#baX-~ zM^T}chnP00^&y7V3a_25Uce!p({MqTsb(oS@@ z!$D$80HYY5XuZ2**MWSceaIX67FhFC9_%YFH3+}^md7^|Ww>9?rZZIvOhF17!eg*B z+BT0@J(9KW6Yyn(tFfE{#7aT}+a?bAawRKH1(dsovC zlnd>`g>{xlAPJ0FUs=#9+a3ovFT7Lj5#CUszBvAjRm-4*NzG)?@oMPl6QvxU*$o!) zcQfeIoYO?A-gV_DYM`jE{IrLrh8I`t%|l{ll7)?%HPw(XHf+Z#UChC3!lCh@3wkc7 zyHGvF6L>OCU6o(EOw^>ROVW9CaC3ZxOag!ZN#i@d=E!_A!;v}SYS7sQhBMJSdfFoT zA+duY^UyY=1aVmf|FuDxZ#5^g3pDc_^kI3*rMBHi-2la1>xMn-?>bEP6{$>u&e~O| zyS${T)j^8BmMq$5}vg$EUd$7;P~Mk-yHqqhC&`mZj59j{8{!RD66 z|KQWTTOwlKFq&ouMleeI{!1=I>P};qGLNYDi4r!$4%cfY>3~oA5SN2=|DC#s=RzD; zwxYX9E9lL|bv-oS519G3n_0nkr~4tO+0xPLewAA#x?(ogBU6mdCj7 zf_yJzW5^V@zg~q*0j3;uk3F*Qq-Iir_u{wxc}gcRmCh+MT^Yd}r4UZ#IEya{(^#Z* zIy>phrLsO*M2Aacqeqv7v{$8_M{Q+2=hVx#8zQS`jlF>zzx9T3c{q0dFkPI>;gHWlIp7WNdoMYL!81Z5vfz5oXC8^LUqJrKHk zHDwYj$9;q)nUsD*@%3hDZs>`v>P5t1)Q_m*nfUuM?!S_$nLkJOqtbW9xtCy27^&C_ zF^eH;M-O6bd?!ZL>sP-ew*z<&neQeIUj?B3TI(~Bc8D1^g~qFCTfa|9ii#MO*;+hc z;^r7m)nD^w!aP(37)NrYtjz3d5yDM>l>-*3U~DNf3ZwIY=walX=JBGT6SgbS_FQc|AzT@IUe zyHy0i$03zxl5}_NJIpeiif*z$X<0r9-g*s!7G*ZW;dp17Vw$Zg8QI0-kw;Ne`7^(z z>UHWV6(el`0jo^*Os~xr%4jL9-n8|F<}5LcR2006ISHWacw1Ef%HU)7IrCEFyebGA zHSlhzo-04)EXYmI7B()woi3jlE+;^+d6s8dTVeVXJKLY1;V-{DX!R{4l;`XrQ4?{b z3S;Du6!#$aol)Fa(zA7p6P85_9w)pWRH;H zPKEWhQ2?5jr?e}bO(Cx;E&}MEWb9He#Y&JRt`FIyF;XU>a9XyxVAH`BXndu34M>w@ zgw{xlNKNK>(Z$ZDS4J*pR3ikug+Tlm+3=?4oO!aWo?ta_NI8SL=>ktBdvmuAH9vC> zoUfjmbC9_GMcr3mNp7LeDp+S^)Zv2=+T#jKvp!G;bE}0vq0xH4Gavy-ts5{h2?%Yl zvq*FsPBqoNBRx~-9J+g{O`>y9rOa!7)XvQBhwAzT*1NA<7aF%3^3eH7^<}a5u0>dA zrd}924H1Jk3qw*iOwvIY&2l_nGqpuZIgx&snL%9%0~TJlu=7U}lE8EW@jww##-A+ZUP%<2d$fny80No)$6 z`%HUdOJ}l-m{sk)E5$j7Jr*W=ERw=y79845go>6VsQ2VJoAEp>WGx zE<$dlT<5n#?a^OQv9(q?egF6>2kMf|fpLI=3)X$?TzM&%FOr>Rfn8#>^NPc^f3bH| zeTz>;VpF?V$3@9@5qScL9)}LB^64Pj2}aQ$c*irgc?_+a)!lx!*7%#+TKRK zg;{VgmDB6YAd({42ndqXAv%7c(eH^d$eK!)rbeb(d!y zBfK^M;YOOj2N?~U;Hne{>Qb*(XbX9z1}bSb4npJBX6@M2Vy7Z+%@!2@a~S!+l?vrd zW?9K~?#O;+#yiKEp=40HR`tl|Ew|TTuIpR2631e^%;#4u`+AaZ*FQUW>iSZpAXD9R=?I-z{XA;)$TntCGbJdKfh7MyR z>iERwC0oCZ=S*e2i5sJc)h|7+k5Se)_w6jlx!v?QTzaT4Ts?|ZO`Jd1ozcs7gurlS zW$M!h_Ms4U-i`}D-yK_)>fW_)jpc!@>L{|;`e$Txp)I+-2pKY@g&&wCbRq87X+d;w zX!SGI&;zr#bVY7F(fl5(zhLqn7{g%}Ql_SCp}z3pT~?^6Zu{r+3kqi1c7$#5r_f{c z4=;7Tm6t({Vo2UE){H`VYOS)NGz%aGK>g`S?AYe{_96SNa1KI};6TIG2$Wc~R4IAW zfOk$ZJ-&>jKyx7LB8rd+Lh zg&|d^Fx+>HV5e{9M^k^71wCTYSn05$-YG3G8X6qQal2D~>q%`wC-emrj0~DOr4(P` zn)VjxBoi$0!w%*PH#!@me3;IjwJR1`2%|H7eP!z6!ThkjNC9y*Q=L@K?7?`c{!AZ3 z@g@6JAX9!|4X8Qm!ORLpKX49t_Q|#3F5Xrs_xBtW4V`R5Bg$5k%y`k%6Z<%07Zd2q zDIS{T=}(xx_J3`XADyXI zniSso(K>K*xw3JHdAGYLf&F~X>5_u4c(!|N6lbEn;&|tkQh%R!FZTBqOuAPVgOF!G9^xOZ6^C&o4A}k1mY96^J z!zU}BMei@?;W9x<(Rd7-Y7&;Q+$F^(&tKqpZK9Ta;P5 zdu=gZW5qVaNJKw-Kxuto7h{qjX*ok8$wa-7TUwY9rs(*ti9@OI1m|q5V1WjJ8NCjaFq;v>yzo*C!p?B7dFkA2Ejy0 z;I0qQ5IP$?@!TP$9>ScH?_S3AcZc@yht0CVq045;vbt&IEUO^E?sy( z)XuBIbhDZ-0ZjpXi7(G{e)LGV{)!(ero#8)m$h%nF3OWSt4l7=0(hVoVjg2Zgp|2# z>H}y-H3uXc0oJGj9~7)`nQ%rZ(5>sj3tt_iUB(@2+-Dx|Cy3R3SGMKCt97Qzwl5f#cUw zFPuMyflF|5gnp0#w80Hh!~Kf4^hl`V0nwP?F(ZVu{??HKEku}z>8^5sD-F2w3JM$6 zJ~ZN@I#S$SE`K#Hw~yQKp58&fQgIIH5Oerxz#wfv9yB1}Wi`E1S0=D>zXDNS0ceJ)4CoASI8R;Q2=+LhIIgl z3cD?tBI{A&!Z%AI*yLPK`4FCXCOz#gwn6w9dM^n`a|@_1c`T(mm)56J?Cj330sTU@q&ypg`YhxVC zj7nQ(1EAZeOt4Aw?=Ki6qIAkNV>ofGEHe$V1HX`%{K#X2I*>eE?vOmAKpIB`w8`n{Uej zz|=1^lV2Lu*o&1<3+3^77hqnqoO#r=Q)_*x#g?Bve;S`fhbWt%P78719_ASxK=1-y zv5{S(U@ql_ahv9)@1ZT*E#C=k(As3+2Gu|UprZAhwPAF-I zJBNM%(Da@6lrd3gkTvC%%tN?-#f-0hIydOIqI(k@3aVQ!EVfB(Vwy(~t<<5`?(-EK zl|Z}n;;tO*Eq5^BY;OGhQ)AlW`!sb9Se9zAP)+C;9G^zKHmYt`L(qj z`a8;sPQH;84KVXpjY2h7nCbc7;2U?Cqt8M2^t?==WN2D-%c9?39V!jUh$H)~#gr%fS4jSqoBVA?p>5r5LdhuQ~o8y-Ek#tYa)UM1ot(A69Hao_BFaOSR z1xlYt_A-+wm|upXd2plg*XM}Mik{R!{;q{$?8o3oWS)~ufBji1f`N;wWy#=VBlRVm zYvw}bM4hfe;k;aJr8J>tH|&;PN}r}t z_@blRqcVa?kYweLsFFr5#bl^t))xv3p{YssiYK~14UG@Ns*MEI*s{a*>UkKL+uaZ5 zh0#bP?~FG`>uuS%J@G>)y-bXrLTFX-B3^okis`sWQoiCeTvi-&hNd(EqdAk_{FF6R z_BiTHo@y*Ko;J19+7%d5<%K{z`9IazfUIxf8<`9qocW#5qF(6sG0N89`GW%lp zFUQV{Q%}{RP$EzJpt0&&b_A=m%W%^IY}6^{FFsw@a#~6dWa5^6x<5ZlE$Zys7+&Tm z4ZLGF+UWV01BA>Yy7CY00ZJ z9aRu+@l$K6tg-|sRQ-3ee(DtSy%>6zMXYIXVWQ|nmQz~5nq3P<S zzljJ__6E_YT*y6{P&Sq3?lV@#P;w|wcFv^m%%gAu4HLbZZOeW3W|-+kl#4xe=jLFs zRfg-8CnCdFBc2Ep%K~6gs}#d7*8|8Uhy7P;)tk4PtwUZg<)OH2M?tLUbf~iDYMtyC zgHL#MlC_KbZf6Ln8d0e3xysinF;n!Hk%h}pzv-=atsL`l)+vxO8lDw|l$~MPjER3> zSnpHL=+S=3;gPVv_JO)fZD0v5TS=8k+5HypAS{Yi5$c`3}|L6|;4g z?N#Iz!+{u78JVLdshZOJLaW8{swbx$GZtQY(z!R=i^Z48)X<(8}O&^?oF1izmAB0TF!-Jf7Wxwzx&BFh0-2_E>QX= z8&)hw3=Hb2eX+QFLje1$xDbzkZ%}$TLI$;2$r|ynEou?| zR_Cgd8mK$H-b3~ExKkbwur|&%b4f_(0PQB8W_kegD~(>t@fs|$@JyCtdjCRc;OOO~ zRcfYM=$!qtK{+ky_q-U^?f&1>hXVY?4@By(bUCCSMSv+jc6WhW;zm-lNtD|H>L>G+ ziD`rmUJsWiE91VM;{~xEE-Iv6WqnzkQR&j!`59d$*}CWIstQP~;zP6M8=b*~>XJ2o z04*QZ&)Q{CC1PA52?^L(@qjX&Mf^n$ou45$bU0-$} zi?_ToWwA30HN{W%1BCwZB*=%$21ZCnFVr;P*%f-uKR05z5-;=K(@YTmfPLBrfyz1` zs;i=C{2Woxs9akUkOoRJ)>Qe@-pQ&-I+OY*r?iIY%j*y=3MQN`Kg!g|`7OUZkD0l+6zP9wjEnhKR52rz-)N9#> zqVcm2zZ6`@FY-J@^CdwJOa{1d_0cfFK&%uR{H}B9G>DY1n>D{TM^i#oRkdy3HtR0? zkz<#mkLy0#O(X6?pc+mD^dSin^191wP|31!>|)IXPAUnEuqmc*b7LI>sytGF;KDOK zfdAdR<^VYzBe0Wx7Rp2{obZuHA70;7XP~|3ai&K<(J%*U?VwbR`mPRld zEO1(IDXzJR#)+lbfzHhWbfMW;6(?%_Ibx6)gmUc;geK_4Xr`_vlN_lG78xevV;oxmKg73FG6>|3dk0F1z9m z=nW!T0V0f^X0r*pWlUV>x?=j_kBJapLR&H{Q=sRrTO$)ZQRemYHD=^+HsLV+bm->6 z7tVNr3Odr3`}}R(dCxhFEmuMGQ4d&24)hkV0E9Ec&>=!j8gG*ybKz&$d7mX)TdogN z09RvS&k%IDp#X>@37}c{b?*w%v?|9VGd7WDDf zsezl`aDw@f>K<>mh0&A-eAZ>UkiHgb7Zlt8z3-|j)5Aq`%5=c2Pj3U$Kl#%gELyY^ zyDDgOIflo{9(oWfrL8+?SXTa1eF-CFooTR8-G_Rs_>YdMf6m>z3 zWDP>KLma#KXh|q&dzLL@YU|M7vZJc1UW*P|dbshT z>8zNwN5hSQfk)ZY`Dx$w5+W+(3yi2bPMur9?~WRd{q;Q^r3~5yZUCRJnRFAj)XJ&| zf)18OIK^oW#2|$nZ(dEn=|>DW7|DYexzDEK`TMYb034G+TEHhMI>E%N;JA~S=lT9T zkaYk98hahtG`f=8S>@mmSO^mtu56kY*MM<3kf(H4!<5*t*dd1no1+Wbic!5xXCk6H z3umhd*hkb`sBRNr{^>!BX+ATha$K5ji9j?P@8H&*^pj@JBxOy{`#!TlTJW#Yi*zroX0!E zmNX#(oK#t0=cwOe`=3N&J=7T3SPlBIIR(5yp|e`#;fuKK-@$icbwQr$R||7uYGoD9 zW5YyD@lnZ+Y;|b8T-0zpa-OGwFSY=3mMzhtE`TQRHirSSS}H_D_w<;;Qyr1 zICc711O(RwU6eM7H6PSS;;`8#bpNQC1VIlQ77U?20TSPXiXBRbA*l<3e3mN`%p4h( z%b?I{v;X4?EW6;&O#WUFf~|dl>joj#)dUC`p8*^w4!n$y2`*C&f2G}_D^UIK5aBNE z+jhXk3;y{nP$S-kHPDv)8AK4Vh*lR_?0>%MKO6XeFbhGC{5BT!3Cb=s^r9JY9M9@8H5J;_0Ss>agMPWP0 zQDJ{fl=So`7OnW}V{n&~QU;=NOE7G|Ek~yhQ5g)F1V(??vPr0zAsvxCfDz|_;jx1h@bmR6XEFNf2JNBQYn?+w{5rvy^}B%9SV*l0jM7*g`5UmqSUr z?jH#1!iQfFx_Q$!6Amc;Q z?c-34W*$teA@mFAWt@?W6aeUOR{~%Z$w*rQ+3;Q#pVv=0NrFt!B2M zR527Z%UJm`Ow13Mj2bi?Mg){d;)eW+Oa?#rtkOC2FJX%Ba|xU1#(W%x}YT9d^i5P|B-BvSV znV=**J-cA;9bgXB-@osAE$F;9VZJpPnU>ypUrvpmV5_S?=H9EBff*~Z2#)&jkJ;U1 zPza60=7R1es_Ek(bQ(wxkpv3)p$&4^R5qFs|8?PN=D_Dfo7Cc!Zhv!7*wk);g4R0H7bpaZ!;7xI z00b+R@cwyoeVA;MzM%E$D9XYZ$lKZgTA8z20Pz~{l)U0b9o2UUC`1H+ z82KUVXBZezXj1(-Mr>h0L;Am38mQRjwiK7TRF)4NJ-nCUi0a+XdgcyjvBQM$Q_bnv zzEMN{6ob5}VjvU(lPxhLqvkbGcno1Yk!|rnq%Z&`c&bU>32Z;yk4LpWm-7-WbBW;$ z@DW+!dZC%j&XG(2ZP-AW!$8N@u&+EDkSPm+DwFa)^#IP#DcICsPpb9yYQl;ILBs;V0CE$vYW229;JSykR7HUbW=1D{-U&h>bvF@4$c9 zz-l&g9d+{}FTSQyRSNVH>-@yp`jTn+FQCHRKg@(gc)>Ua;{0%V>$nSadl~-zz(OrM z$e`=jr;Dz6O~_X2p2-kjst|k)>PAiuVXrX{0|AAClV~;#S-&AhDMMf+xd~GXhvo}9V|>ASa~tj31pMl(rx@i0IFmTWNiC6#?U3Z>&WQ>SYBR&VQiB62I@(Wko*)Ji&?`f~oLajEs@5id(BO z@=a)oyYo&yPWOuOL!FP!I@4id8|lZT)ueXde;HuN;&uz3A|G+<-l6pIq3roR{^d1A zzR6g%!jtIM_4UV$NTFl*r5S(SrW?Nyj`oV29^I0guX@uViH$&s#J&jBC|A#nF6f!4 zu8~ZLzJ7bTf)7_YC z&Fz2OC)LN#3yb0{aNr$|k3QRDzsTV44~;iS+3l~IY7#$~Z><^BZYOMZ_gt-fHG-(C zVvSy^Z?Wt=ggxNWFLiEqIzMQArEyE%ia3s$EjjM&H+@L*P8EI%6quqCXw@kV`^Ka_ z9xFP}dR_~uhnCr!TnXLb8+v;7ci%_Pb~9m);9`72pF^zED?A@J2jNZZ80Cb#&4yJz zMYixt=yVM)-JMc|Z(*R6o(AH)Y=sow@QPye12gj9_h`Jyu3!IC_V<0!-Jy>e3^(Mm zH&t9m9ZUBfTazjw9oZ0^uo>{0oD05T3+c(Is3BSqR zy}qA21Q%$vl)zw6uP7*tDQ(6pOrvi)wD0g2Aa2YCd)KSUHbOo5IRq*MLKMoyQ>*N% z<9BIz7Q5~3toK<7FPr;P$|GADX4d-; zww3^9%LpKx$bR^a;1W8fm~UhpKKVE#@F)BFCF97SISgNejr@`87F1ix+R)>+kG^FsRuhUC+O7TUcOZI_ zA-hZ9!h3k+eeSo|M4-A)Js&Q}?aJ0=6))TMEsenTU~5SjsCL zcbw&wYRB1a)igz8udq2JQTT^@~4Pz@|G@!TCUk!l4`a3CgMSx z1tB!+29fO0YGgJRzdOsmIc_JkQ?hz+p+@itg%XM?# zsYgDgIYX8xUbKy|)e7$i$0oJfK`nrLsjd(2#-Wqu>;mK7DAv$O1=S|^9T zSQruyGtg%L)-&RCK(+#+5K0B2>kgSND|+l@T!Eot#p+epF329zk1yFHdMS6XSC(;z zi8EE&$w&YV-&RpgShgqm(tCjGl^=1pDo>&Kzf3pVDlQ#+0R4u;mvN=DJ&< z2-UvAuaT$y6mS(bhL#`BYKdnfWU4%38#B74J(Xntp!$J*D;5`#0RZr76d*62l9k@D4$<-gZ*vA=%jI z()_rLsBlFgB-@ut=fZUV@ zNs~CNI3LK1YHt8gXuQn|6sjry^Bl%dr@}0!u!QvoR<|FYn* z<6S#1EJj9UgIXx*khx#?yj2hG%8^MZ?ZPLJ=Y#=JI_z&h;d6|I%WbCTL~p5$7H0`4 zBqe~Sl0XJdp=p)|cH5=JN3t!(Cz;kk+jN7yx5+!(?-V{m>^F@c*@gqWj$13p2kl>p^c%y;L|D`l!S9{+s%rp zgec2m&?Oxifkz5mp8)eLxoc7_^$pm&J|yu&ks+9 zk?sTd{13p^{%W=ey0H3N5;3$8$bMPLD{8b#tUq>Qq8 zr=<7#m!f&(W!;k6W(Q=I;%b%kH>THmr*7@u&)FK@+c@pEhIdpn*_#d9iP%cn?p^N-cYhIux84 z@W-_JcUJeCbn@~XTH&&4_b_v-@8_D7Z(=4OZ1jpRU^E#GnGG@=Xb^u;w3BT`9mI*` z(}Xpx#IwyzZ&B~`L&hL2pk#?KM_A~|`>Kd+8<7940pzO#OkYi_Z(G|X^Ar}C)+WIW z7ZxW$Bu_n1b4YI7g8q6xdM}p+o00+_0u@?FWrRx+okuF##}}@>F&Yzxry}f%cWymF zg#DK8^8}Y2k%l=;U>O^?oTno3_<{+8frU^K;6;N+wF4%QCk9zRKwTcl|J21m_`;C{BqSW95qHVpF%ZsL-gto?JT6Rpf=xYed zu;|8J%G84$gzZI}W)+Txxh`GsYCAk31S`C4-HD;|KIyd@V6Du%5d;>anQO^NC~=)s z^UW!N)b9^kx)e6=y_l9RKvk8@zMca(-;yr%EF=8(@>9@2p#(-XySY0$OCEyzv@{OLLGgLL^{)(UOmNtD0&jq6#L3guY+Yg>3vP-`P zf=CGgiC^0*v$;MeYUU*N#MSm$WT9FQD`^0`o|kGJYmi$-L^Y3ghFT)xFDpD7uORf z+8-`i%gZe42nPYc=mS$md8T;eW1>5^`8<>^ueze;xTC~xVMRt%m}b6Om_<*ukR} zH@G-}_67R)=5z((8OL4=#VTV?K>la8U=t9HVm1K<5SmSC8f3U#}TYg#6w_J^Wuk zyPw*5KfHrj0gp$VEfV6`N%Sv3o~gDm<~1?Y2*ONWvT@x1ybB#n9H8?M=qf}jE_?F6KXia=;8 zMJWL+po0Z0fPhGENhs2b5Cs_&r4tZBu~Gs76%sTtaQ6#3RM=Zh&*^Kd*YQH6kr9l2m>UiqKu{Q4sC-aN$K5jW*L*zH#G5En^o*4@jEOnctN( zrGMuSIERE_KUkB#eT??WHgk}oZH2?h^Ft$eLA`w?FR(ux7Q!6fj)QXl24Z=E4dVZv zoDu>{!~Q+fZ~_Z-|2<}egRj7zdoBWBPzHa{(*EZM;SaJ&KZ7OgO@Rm__|UiD|IeRO zNrGn0W+iW?nSdZ7>sFfIx$*DM#~L9a2;8o~7HDjE4^`ed_3zixubi`ILrN%CBv^|q zCN@z|JBb9#{XC3+4Q$Z5CoF^8`ZvJN9zcH(E{a#n!@URmI7VSr{*6;wa3ARI|BWZJ ziN&uQ3N6DXSiFD3FRU&dEz&G=IZ>i$St#e_EATr!DzmC9bjSo5j21A4@`TdL zsKS%a^=<ujLrqRTJGOzcP2g_c>-}zy1Rq?a9c-_dZk` zSLYF%p*^Y{EhHcV$?BIaRAOUTV=R99>-!|1!SSG(is7EJ0$(s4fmhydF#i0gXHM|D z5()L$?ONE8YbS%tY`n5ynKoZgb{XVSA5AS-!1sz*_k~z6+ZE(Kz>~V62Ui1X50P|? zLReKpwoUYN2NAiCf#6q4Zk7H>ihUjuouCQ^2t@gg&MHSw19R^f`!-UIfgi;zyNKfg z%p2d2k>;;}oZ7}6p58mv<2maKH9fpT%nu^40nfJd%v0NvzBABrqwvo|_j3Rcc4uA> zsMUvCQm$6Im5%|9GcF?`u=_iJ_RjnV2|?3cU>nhf4}Cha1}Ypk8DLVa+I=RGpXUGJ z`E8$VE>J$UJ-iMfFb>FfL|frtfjOYbw({PcmEcl~_jhLfLp za?j;AY-yJ3`D%|v{wDDoA|fL54n(L-a11GcbmJb!wA8gZ@gnM}#}{M;C*!VoRDC;5 zAbkKM)T_R4Lsqy}a1X~Szra6yYIj*;C!^5$q-BY_+tnQk%FJSTcKr|661JZc`2Y&l zm!Uqw&7h~a4;}Lu;L5#z(+l-mD~b5~_|}r16E#@_56J!Ck>J4l4seNcNlVLnpHFZ0 zAr!)2ihX~`<9sM)k9B4T=N`}D|243H!UyQ%QFty+sS-+Y&W<(U4OTXs9yj`a$>VJy zn9WtZ^5p$3S}wM(AYo$pu`n-(NSS+s`aqqmV~^FXrpXB03xQYe zn>azmLwBaLOQZ5N6kvqzoF}OTXSTf>GCaMVD*vGu8kR|GpQ&BWI8I5bao5DvK+ZxO zQvEHLl8paod>md0hv9x4-tUIQ>C1d^J&8$h|FSE0oBsaIhcVV$(Z)pv++#Y9rtFe= z)JrL22|;{`7H=mz#Bu5N3BlZgpnlhO)R*wGG2TRL5LF-uoM%AFeQe;kUA!}$1Nm+Y z_@*jlA9lO|elrgX-Hg}Iro<;fc$o%|d@W5{pk428^=|Ak|ub>sS1?a7ph&R9It>{)W|MlC#ilXv?VJx+~8SF>6EZQfOcr4DTBTFp?6ucNH!EN`m)kQ%}vy z_Fmvf;B$@4gG&Y|D5p~9Bl6mFvuk+TzTM8vbYBMOLwXypiuOIMpKM{7l^TC)eTvnD zdY^7?i1y|yKQs4KmGK{a)Jk$1ask^^?WbmfU9{eP>-BEPu_$>IrF*dxSp_X)R2SX) zg_Nfe(y1zAUNI0cRNFU|E8@P6d8{DN0C_XA(@>REV|gS%4qthrI=6qh#N0V*c2c{} zDhRkjSLQBTS45$~zJ2fVhLiNiZO8vur%5HcXN}dtEuI1=skqxRm%Qd1dm7lRO@ajq zbvO4VAug(ae5?@Jz5-W@3kGha!9q$tMEi4`@$ny?O^M99Dq(-SM>WmlO=Ca@-^0HY(iCs1_ML&7h*QFB=pUPtu17xufk`HS$k$owlldDo?@EA>N#yoq$jED^&taDcsM&=T; zR)p-r-ia1}v!_c4w0g$A{IXeoG_md}WY7c|;Uj#z3De6YuT2(?_WV3@K^pGzG@c}1 zp32{5Rs3f=VU^#a!qFQv4Y}w%vf?rz1|?L=Og}I=-=T7$BPP$%0&<^siOxGMO%5k$ zs-;&{`;S><4y#CFAM6$j1VA=ZKbXf1`~9ydjRkN4n3s%~YB3@(u#QGnc3QtgBoydK zM{(NDU_~xvE8=&U$uvk{X$)8HUeL$+Y&FK1bSWL|Eaq$B=>pfs%h(kWx@UMaHB&8* z_K+H;HLT_pYF2w!+)}0R*xKaO)YQVSx1;VES9JVIXIWMFWJ{~2)#*1mpGl~)t|kwS z7KJ)FXFkd?55F0DaAZfP=i8{#KdOoLQ0`rey(I=1ZeD^$OcbTb;%P{nuHv`?pd@8038k9;koWsz_K3Q?xuNs>D;rwCoi?1EtDOV-8R?; zUB9+Kap7QDbetPl9L|SRuS==O(x)!lm@J#~_8Ic>AbnTby5jQCY&JpeeC#_hDpn-< zZX_y2Av_f4a_Tld<&sXw&n$_VRuJtMppx6>v24XHdCw<$?Ae%TCWcLUw_%e)Ir4lS zsXpb8J>^ur9m1WPMFap%5VtS#b3RB3+wXkvGpOubwVP;S z!SD829R4TGFWo`z7{P7H3iCMgq6GTA2ksJ~PKwI3%*7uq zR4whdwISqKJ9nz*GT;6!fD?h&^yhEO?vf8kEiz>vOD0za`g@zM-E2eaID@pWnbKPM zzb3i)8RW<0MyaVgJ1r~d@mOFP;QXQUHQ zdQN%V?eNJS+fyL$Md+7bPdsNvLP;#AKnL^1;ycHeWq?m?O`j^ZzGI0!4X$7bDuOI4 zLl><&0fMiG&768J5CBFeCZN3#(rv_^1x_T8-4H9rjO70KOT9u8C*V;a-w!E5Dmo|~ z0c?ighPhkD9BacQic59!yzur#d9%n>ea5(GY#f+ORjoCO}9Sdq}d z`Lhp{a;ut%WHEr?S(F392GIv%v4d%(4aT606@(}k5+(>LL0E#Pr4Yg8DVHQ5t~&P@ zSN!~y>KxljB4vc>sZIC6ygSEDe}CvZ5Yx&_Y|?<6e2dcj9(zcqvXMEV3J{W_rA^uk zolT+0Y%jzE6@3?ytdNkhD4_%(7{+DCJUftr8A2aJr*m!jtCQgxQN^rj-gpTQHCB-4 zT726%2%K?{vd04E6v|0@_eX3Tlnn)~OZmv1LE|nLKF_Gz*$F4ncjU@4p5k7In6_|q zMC<^N+Z~Pt7ODAt2WZUw8D_#Q{keUGew7FaCxFk2j={pA@}m3Y@_U%(gUAq&&*V5A znio0K`Du%WW;qGzjwNK3Z0sBo6wk+Vt3QF*CI+#@Y#pHm!*Y>rtD;EFCb{vA`pnYI zrr)uyo9_$CO z56R&cz4->AsWo(2??DS}CEdYWO5&mJ)X}%wO)W46NRf}%(4qhH3Vc;vHHDua*Oa)| z{Js;!7`)fcG(VPtEA(9PLqwx<#)d9G1=LNySfDK$FeqJydc$GOWtCW8fh{ zY_5v81~lq5*)qxYu4Tct*Xc^PVycOoEY%W0*q;_O11TBD^&>zM4?B*Amo(lWPTyh- zxL4TGjU6qEDj}>V?ZJaq^-E~*FDK^9+3$W6kiUnL#+g%mmLVUcS)+~@fU|T&gZ(B=UDGR$`4T$cdKo1 z*ctPy)Q%6o>I2cMb@^dI!<6CL$({zVU>ak@^ zxV@(Cf_Sx)R9dfFXPzr9H*^4xhIg>kq{uI=D|{NJ<5?3Qb3Bm%W?J$bwK%hrHG8Uj zPmtb|YP^&CZpGg8jW=)YaKBd2af9CdC{RWq1jW*`A#~uqc8&A`VJ)*^d;;j0q22py zu6m#D;Kv(S(7#L3a-DKMf`y9yOvf4fnJ-na$f1=$*--h=Ax6Qq;V@i;+Fi2muJXmZ zHq+Vu@Ita2UQPf8+g&wQjDWx-Mk497Xm8!d(0(x+e<Bqecek4ZI=em7&W0a|R&>{X)wYvo!9jqrd=UjY;*Wb(p+1x1phn=;onlg| ze{Q9g*I78`7L6NPH^1^?NVD1!;^YG@8aUtN$JG{4S^zO>9t^hX)5SdboYb}+toOXc z(aGye<~< zl6U8RHc9cC+>=Nw3-o`4WSZG6iGItuPdhzCB4}_XNtj#E_x=$QZCHC@wVQdGMT3I( z#5(Eo%a2Ng^cDw!+g$OID|Q4sgRIQ)n^&-1SI;3)Q`M35PgqQzA1D^AZa33N$q_3T zQD}Tl9N$VO>JtCR!@bTzzT2tgmk#*F^TPj9Y;!vg4Tu6#Rei;gYGNTAtDjBYs!Lz? zTGSGL3$CkWFsZ|y?wH&WwRJ=t7yMlt%DK{NveUN}HYM{YfltjMj1MlzDIgbI=7yNM zTqa&?gh=X2$4h9n=JgzBH(fDOJgrcI!-+uqF1yNa+8F`EWQoO=E zc|TjWg)_?}+nb!`pj_ewYCU91p2pwV>yrUnC*Sv%dukc{3_bi&f4i5dJIs}IH9s-$ zr`72R-w$&b+h+6}Ew-bDgz&37ca~b!680HMoae7S7#p2+IdtH*+J9HV+LpB^3 z@gqLZseYgx)%Yb#KO3jlbI?LUnkxRuYfp9wnUPX-K*iCFh3=zHs~lHI%5EE$opUZHiBDC4SrZdGeO(9U6g>+Ek_P*nY@}9}E|(cU{4O zl#l{YXxR0rbqhmxkl&n6muX_Jbk6QFtdke`b{W0iS25WHlm%$D3STXoAMK=b+WmfE z;BTGhH^HeKDElu?dU1nk3*P+TAybv_KBwTl4diXKaA_inTEgeP|C0X5W{DqBY1mJ9 z$JiYn2fisw9BjKWc`PeS*Ya)$WJ>tiBy$dEjZh|^rf8q{3oilHSyewDpSf2U(}=RX z8&$XTxy-L0+#vrTb)LRo5GC;rPT?CVq7noE-F0R<8F>zkXKSGHjNrUny<9 zbTOvWpJ3*7s5aW{$_o#XC0l2ck~#SJ;5=zYQNYT5WIt!$J=w;TrY1-^GqN`>mbLul z>x_n$Z?krybTAF#$gjDqOiM{(Hv8QwqUf{hzhs)YNZgj2;B-?JjTI5-E^sG!$fAqG zD?9S&OI%@v*uNmo7qwH5Ga-Go%Hu$~X z13G;9O_3ds=@D*l3G`ntAs~H<2t70w&l}*&B%co%fDOb#*0IA{DpT*56^+OR48aBY z823}iY9l44-|ImCFY%OCbNiulJ-)KgEL~U;S}p zd5CLxx!Lh(B=;h{oY3ES@ZtX~z#H%yRYhjgBs++Fd)jZEvH;2sGIf=Hm#yLn4=wW7 zFF)J%z^vgg#)sEVFKv86INY#iIJr58N)1S(zS;rl6u8fNv_LL zInT!nK)YqOdn9WK#3^O)+%L$UM=78Ls>_1at(-Lal**}|aiKRsKR+l5_5rE@VdagN zpqMEP(cvqA&5m|TYHehtoIrJfYUpvnF_#(m^y48jHr+#{KBbJ}$8r+2#VHEfLji*N zVMdk8?dCdxY`j(8@qL-nnKyty6obSq)drIKVX|8pOd$irglc*w(po)1r!yn6Hwcd z*{~yG0lX$F8)lLz{UW8tmc+xkJIMM%=#u_~OY*){ql{XmL=p0x(3pNurTS!+b&RnY z7fChq}e3rHQz zF}O|6f-#R4gbBZp)0vi2jdTO1{NhS}?z{+1k5_N?1YfcsE<%O2=NWt1b=9pc4d&HER z-OcG_G8sPn+{`Hp8qk~qJDnbt_TF(J@ufe0^C03W#z)sje`Tg6(aA?fJaVZpgry&U zKr)>LZi$;ojL(SkuxEp<71}Pkd%`_|6@ezAEINN+-}ju7m7!X9ttJyd3stc%j~LZ8991wgie z)-Cxym@3v(O=Hp+X2R!eFt#8;BMMc6ZWfaa-KRF;b-)IAxrp+kuHT93eGLQ3xGBif z8Z9smln1KFt^j=EDj-$66)*DGv1twP1>*|yK$o@Hp9GC4Undy==JMSD;M&$pAXv~> znTUG&I7WDDMD8)2h8{D6FWe+gtorix^Lw}3TSf2E@xb_Vy6*8U`sf{4%dR?Yop&$Q zg~UEA`|%8G57Lcn)@}^h#Ai(%k_^E@6os{WJxFB}&|gB6V0`+B>3Lk3Li0K)8IcG< zW&2R{4jj?>jxPMNJltd44dnQPcys$MKs$}Ihyx8BtB>~BMbnySnG0_O8C9nnBqtDW zBoK%?IMyyXXaO=xazUTrhWeIhtlugPze3ay)QLVCi+t_?AD^ygzr>HH36 zuugVUpha9zv^lbxiA<7mtjkW+Bv5R+J6ax?#cyp}@dno$^QX zr&Xkt0&;ku#u^SOt(Cumi7$+AF-)VhS#XsGvwK zKSNcbaM!N83)H(S9M&lur7=n8>gdP;PdAl62_tv7q_B&(O#N;sU$LzdrAc2~X0I|2 zm^8cL{9>kjyN+}4yGg0f>bEugp2uvoAUYK)P(O6<457mhcDcng8kO5W0hfy6ppmoY zb`l%D@QC z*P(&8aP)m@!KXvE0}BATkrag6e*ncH+bE)C=~h1yr5t|W6)N&47;?cuO5Sg20;o0e21fPDmlm+G`!Z zfIVe=yZ#Dx);@dXRUvh5i?(BoN~*2S2;WC`@fG^-h;IdlJh?AudO`-ZpHq>R$4fqz-C+eJpfVmZ}E?96-|LBa)vO_w`iQH|H5= z3zOI3pKdoDg~f>vY3JEp+*Vpi&6CI7#Km$Olixm$ogyoBO5#SRu;*>DRPKXi!W!5| zENPAAEGc&YaN`2I-4fT>m&kD=IZ00f{i`4yoV|lym{G6{N4bS7&(x=q!^`!H;RJZa@YUCPgqZIQh)L^j zI&MC2D}}rzaSY@x%iG$-V$@VmS+?zg(pylR8i1n!h0sWDwSckd*U1uLK)hcd`dF1a z9O{Q9Ok~Bf?iBQ;kn2fsq%`wZX5z@IRiOEA9#QQ7`2|4cRD}dj_=L*256_!dEX@El zwvX)yGG2+}P`P=$^!;LaA)y%=C?TFAwiMFIhL{Pr0(iE!-CS9- zF+1DR#H2dnxU3#36vuV5%ltq&ZKQ5Qh0GBLx%|PF@&eJb0s{KVhxYF?+q-LpNs;T# zs_*3cq5Vx6Dx66*@C467q)BMKuv^0Qpl;f-mHaGRPfHD`Zc@5nFt{WW>70&CGFK(jW=gJ@F^!P5yH-4AG=h(k%_aHdMO_Ub_O zU~-DKBX`U)MNhP1;8FkL*}4Q>VWy>J=Ob82j(7GqYM}oe_I%1-M!@QLtsnR??HdIu3ndTvkqf#%}N#GjW)^gyR?&NIMO{ zj@4#RTBST5-{yn}(l6)X%w&WYXR|YX^N@FT(dNV0>dtq{V44MWpcOEy*sX48q#1a2 z8Dx5>&RrOG>Y#AdL&&+5z(}^hwQHw;5E?h81QyapGuo*#Br|WT@bIYntt1Xl;P>^^ zH!9f_e!v7M6tB;moUGXjN}`V-&L= zwR@mto5r3P{*%%;X5OxtFudbj__5ZYPl9A2`=a2|ymH7c5wT9nl8;YLQnIW*4(&dN zPzZm2tA$=6tV1iHrQL zTN~BfCqW3b#veH^7u!iwyh&;~L#imE7v~lW*F3!Ru+f!yA^rWOc}!@%IeK_*|8stL zmS5mx{Jx2Gx-%=JrL1QVmkWAmt${K|_iaJN!FT@*)*uA89sxfx_)K^qUQKH_FXWx{je*T^l#puM*3+qP6;F1D=k&8^ zJ4Jl>To&#wGB6*rs|m`l3@T@J*R^MvvhXT)qu`QK#1PLcI=mL+`GI}EPI$<}AhxLO z`K55O4>=7bSBKe7gjlZDdwSGyFS~3+thRlS7G&Mlwco96Feon<&tPAE0}Vm_lHvR5 zRa{pw4&6js?KJa%UCH6~DedN($@6((w=}s=p}7`R6f{z2$nMQ|fUsheev%xh)o^;{ zCuqlxdV@!Syc^7oTs2BrLgu9u=^yaQ9c;mKZ zgW9qjp1GlJeK1qYVyo;nDl^(fcrD+KK5>a;c27&kRoT$oaX%drw1Pcar~Qp+EqP?2 zekjJIxDr_879^9={KV(0m6OW*V=h@m1cr3DOeo>`RILKK*nAU3$U8^07C{>(A3B_#K07g2c7ix74_sO<`#r;tBv{|OK2=tdjiHlYug9RfJYdh5GP+1 zvv|}Ygzh?)FlGSvsm)imI}{$rWArA#oG7YS98bd5PLBU_Gt{ZquHI7MCK=`iiTbh` z6Or2Y+$Z4Gl_HuR{1WcM4NP)#XenIMX`ayFKw8oA`zCg0-tiKur zjLEVbrJLP3?;qb9pZ?senXd0^k9oRyj~Yj`KROys7fUX`_2!t-u0^kDk4szh!C&qs zU)|J#ezq&9=aRDImeMA~TkShNv(oZ+Wt{%_!kd2QOd|w(R>GkP0x9*ceDGE%3aao; zb)P<%o)_C7xRY_2dovW_fGd?_YzQSuJ^-&|4C>P27Dl9qauw|ty#dazfRHA(f;{hOyD3QwHm*!SCYm$upi4W`AyOGinJ)exKp)az;7qyQTC z-7vxY+uZHTtDVd`lPuxxL)Xm$GK5 zJZSN&<`Jthi$6+27|Dy4AQY4Zl~+pQsPl~d_9``8Jg1y-KvQd|Zl1ZIrHDVx4n@uH zZvv_9(cZ$#p;j3>aE#=h>6F-?{yqz$=JR!KZJClZT2qLc<|(F{cfevobmuDL!~EvY z)&1e>o|4p_xEEk>WC*a9{tPEPE4f9Ro76_5hKjrB2ES32?zh(E8QRki|8Y*)??7F{ z8-6`p@dJH^nQ0A88qa?{7TC;Yd}#q}?3m@o3ShRa64HnWpIp-^w=e$6X9nO$MZtg- zfSF1GL%iP1($0}*4S{xU>z7L{{-9Wsygg0n3G8#>osoZcj!+(-i4w&|>2Bw0F7~bv zlU~HH`Uvm;;?W$lO1mveal8z2c=rJZ+T`$`)X*bY^=EuTGVg@u;Xa5RHf~;WP`Cg9 zg^=!v5Ktf5wN9R-I&rVy6Zr3AonA<;&=ap#wj2Z`p_sk)Qi=^ES$MA*741WHL{U-t zBb_?OnFA(M?;qvxpo}Wv!S*gb&bF5}#qJ-qH|8y|A@CmTbkOf+!&lQk6=_OOz$`#_ z=L!mw%97lgDk&m=nDe;*(nT4o$mT%0MhZTE|~6a3Bty$?PU56Orh7#o-&|Arl+6=GMTp18&pT$aT_|Dl!+t%@qxF57Qz@4M z8#<%cN|Yf`kM%gwP-H*5)0{ox&O#88}z9?IW+wrpuS_!};Tq#*uy^vQW|DXE`397V0{TB@C<|Hh0ko!uK{BdY+gBoF{Z%S$~un#O;|OC3DBM?7nLg z{8cK_ZG}flXwom<5iN#Rj)iX!`Vyc1+?lJjof?*Y?kj0R*k0nfl9~clHoIWyQ@aNe z_f>8j)BLT}u1;FmETj+ElxquV8vv~Tc4)npnZ?m@vH07QLCS{7`GLW@=SsDYN$w+b zIjd>mePPgq&OS_e-RuyYX#}!-SS7lkEzg$vWYi)~DH1NTd#f?bh?00sm?r++Gh^p^^j zkJb@?pfuu(Mbo@oOo%s|19;lM{pReuu95(*+Yyh9HX6y94Vy=n+Q`yPEWi^XPgh4J zY#gSW8MsWD&;Lv62S^d3t0UKIa$MfzeeMC#4?@!B)@QfdrpS2#PE?{3Ttp6$il2hq zwCgxIa_eNtfc?lQh3o9A7bJ5Q5DtX!ByM;9Ce~17?(NxVxz;X|SY)MXgH0*gRjpE_ihRJL&(r^E=6(WPdczg^H8>s+0*Q<3(~(?E zooazG^ExaoakIUL>Xu2Eniy}SNgtG~CO(5TLO&mJ)H6-_gUNUra%(>!8z_@ljt1ja zam=#ShFt`O7Tc?w_<`zvXqJrHrtFj@1yGqjS&v0FodT5(fdbVyXc%vsbr7! zoOy+KihEGYQQ}ff(}5c+jqi=zODX+>upTgzuw{VJtieRwK{!eBKtsIS7x!F4o(%Hs zWW7r8ZwD}E5g_camuvsZ!)-7S_r4GB=NG^Y~1L@4v zmlV1&RIM<}x&>Ga2YRu3|Ex=5snb@&U8xgU84qzqLOTKC;7K}zRw#QL3p&WR@+5cs z0Ixr{#NG#CZr*q$@^gmvcnCM~!tnjX&QS895v6Vq5iN_GU}%8WI`M+@s-@YHFS?Wt zo+(=&?`^IEHxfLvmI^KJS$Nl|r;w0-YX&4-J7F5uqN0@DPWXbV3l!ocurRe*0tKJfxM+QsnY1OAjBT~VQh<$M5BFaC z2Z4PtQ)qqgJpe7#CT+9eas-l#l!`*r`@*5Ru;1FS?lX8bFa{r}T(~&8WcGKUF1yYT zhPefKF;I*dwW9)|Uktf64^^7P1AezUJ1MJ3nf=hUx4a0z;|rN$ciw{P`!tAKIAsKH zrv`I2Pe2ZckSESw!OoxlRpdGFiWur6(9#wg%XMv@n%CgWW*EPoEE@?Wq4`jRtFTMu zKv4&qS=JWO{UVN@jN7G0Z=`Udc#hZZCdDy26VA8Sjfb z-ks8DtWH$QoRu*=Li>aM5I7O%bY?f$+}DcF%dX8**~6}i2U2RL^f!Cpwx)xkh@&(O zz7OX!XSpwEYXGqbObT!z9Ut1eANY+E@s$2s7qa{c9!g=J1hyR_$pDb`?+5?t7-*M_ z_nY~lhm&s?X^{dGe9{rK+G7d12t(FVre~?BdoT9@ojXv9bQ~+N?5=ngLBbJs zCvboMT?ldc?5?cwCEUHpLN-&HuCP1&0(AS5d<3xY**9W|BGMGdoqAed0B?e5QHmd& z7JUdGBRCCQohPd{_ZnV6vIngsbr?Bg^U`$Oxnq)wdY}2>MU7xRENIPHVitE@)5ixk># z^<)A8NO8o|lztzJ>>3wJ!14yCBzv5gkvXG4Gh(sedGgRDrw6##7epDSHDtT7Fq z?%h-0032IMJn)eUgBxIU(aS({Q?>)3u0U}_@o#Peq?#n9y;*G_apDUv(G_0E;_!I# zRths8z7=R`C=AWrf2*^oQDy(XyGkwOJBsRchV;k<-?XNo>+{be4ZGMej~<(tJT4fh zK79bYhaEna5Khja%D)6wE;uCo^2v~n-{{?me&ayTWF&D;WbDb}9!YO<#F+|y`|HJc5P{l!nL$URs$=C|StLU5T=sWQ%ta9+|*DHCIrYV z#Ey12rocS~{raeC^<6@NjNZVx-VbM;4(m`x^&trJoB|{4E@trpSX#9IeB7{qLC@a9 z682vhclEK`nDnuP%jBrh5~1fue_g3ZZIa2B24)EhkUdb*=9^U_W%bW%#hWi~_;ry! z(bhf!mTzIgLQAVj2t!HuL)&2hwZ9A|ag2T&-PX-tZtKYmGC|1MN^T0>uw1J3v03k~ zkS`|`<%PvT@{f+&$Fqut;ljV2fJ9*k!R8g{CAC>01AvsFF(DkKqgaGQJ-pR8P;dMb zsDkr=Tv4C1hupLP_Ee=&X8ohFtK>BlF0>R9L0<9iwtjAyunf-prZB)Yp(2V8+dN!A z=r5S;tpgg@gR>-f zWt^GIJud5;Hg@CkTTAQ~x=N77{d<-5XKRRnI^K=0AzrSD!sz$4^}+f1m#fQs4BkB5 zD*EhiFevW3k-xQBkp=xaR$CgeP+Ranp*eWe>1HdCHyBM3yEW@phnV&*CncCjoP_t{ z+^^sGybnxW8cdIBIA|Uax0X20#~U}FvFn{LI+GT$Gy+5o|GXLk=LT_#&Q70zvZKSI z>tcWLfRC7KB^+s11Pmcr-`Ta%8w6MjjpIZ!2+@EaAKU9|cp_^qJh>sMQV%9Po4sPR zADyVhRSfywvl9mb5(LpRC(SMl-%=mjjy$dadlf4(SBc+8zoX1u)D}aB|8SKnaB$P? z254zs9R>DY{XL+BI1QsPP6OleG;}})8g}(711q{fkt?@2kFINv34RAP_@bhufLRj{ zsSFtdo40A;OA*pd3A;52fN)VllDNsdFfsH1=*;slV8|29%)0FC7kGY}Q-JB^eY!JH zz-8^y*WBsS4*(DO8N{^@vtiwmkGi2q=7I)|5EYt`Z3Z-z-JWB4%}uG5x>f7q+^X7>lBVBuG z`BB77WuZ~%Zc|qUNANRf?j%x?fZF>enm<_vUgVZCQ)=yaB!Q+a`C76IYD~x=umd5{ zFgC(o(@xE6=r}lBOEB*)JlxrW_x|2C7!4bK_v{A9w&g}n0W09q#Rd<`wNRWU2oY3E zx5yH!D4}aKKwX$dGJBH*b|Gktsp_O$VinRn`(`^m^@8U1XS&o8ofxnA7J_Bq>oEZC zqN)%ypFV5~JT$r3Hdu%(V$Jt6_iM^29l4Ec!&r3^aMKa0&bEv1pqjBG%2JnCHdb> zxVQ|EX4<@L8dSe*AV?q%lmC$6nTUaLrYmL5^*27GwMO^VpgS zxQ|W$*hH&b$8Eu&BqvBzuP_y$&z`hIHY)s;=4&HSzMH3VPv`i17-tgC8j%+P&RzHX zYIqniVDhuJowj!yV*KoAPghDJf}|pq&j_LC4+ww;lxMbMi$wSro*GzT=j&Ydj_UAe zJ7&RZlDYK&a7t*eGE?5)q4ZEr#`W7qNr{#V+?fqEM7GK6RuaA0ns&H$)uhF99Wf1Y z90jL{5Z`#2lwGwNQ#~iI(uqNchQ-P#pu`Slu|Qq*=&A9(W*R=Bns}^U zxjYYUeALJe@YjJBrU$0Z;i=^u^#z&!nsV#bxyKW&H;x{1PF{=Ri#wYi{B?exxma`$z z(9?DV_5xPkYsb;ULijJ|3Cx9(44!}6;ay#8%N-({r)tQdY@*YdyzomDjxpHp0G}-e zNP!{6B4v3@5hDqe)-&(nTO!?Gs#3!SJ`k&p9-BI5b_IL}EsL*(^b`J^`@Pn)$NEW= zs|w+rx7uo9hi9K(8z6`*ve2p6Vv&F9FX@L?zz0zm!;+3p>?r#4CJvvu&V4)e2$;6x z^-#i76D;8bH6?*d$z4c^%_To6x$ya2>$lwQghq=aF*`SUsb3N&6uI8GGz?Ub1`x0{ zAhnuK{x%tF?xyIxaxnR?cy+U{Iktkl&U9k1X%~0`c{$4ffyS=Hd*E2fd1zsBcC;+r zgR7WkZ}?+YALgf)QwDELi= zl(0q2wV|)V0x`1zajPwk0+yCyZU-Q9gim}%7DY!~B88w#L_7L=bTv7u=5xt<%h}iP zE0i+bdp|u9f>Ace>;g^^$c!7r=Kd!TK2BXmnGF&0&jFD+0Y6k{`M+lQ$Tmr!>(_K? z*7VHv*8>`vdTFWtns^{1GFho#PiACl79l#j7k*?&$e`=_{9khmu(A4aMS%4GzsvbQ zZgtR@E0{kc-M#q7cKuO@2?SRIm|?Mcjw4`a!nU|~@1B5eHk_~={wGL_uJp}<5ikct z8g|IL-zj6S`BXyn}Ue}O6(oCo@fpLmo&2pM`ToR=qb;WS@U z{-;3C?{k|Cp%F+Sg$!>=qQPBxqv;zwC?U3jeBg$}bbT7z@ht5GCt-uXl ze*;DiALWwh%}WP%)vOK~0W&she&)&u9n&%aH!>9bU^q$N4QQnO33RW;%LrD*_H2l6 z>Co^{P0X<@s(0;s+-3M+cMHb~l;ln_0(U}wx#r}Z_81E|TZ@YvqzG5VWZY3k1?DOV z9p^!w!?}?S=`;wxe?oGzKUxo2thQU%6*_XtfytEj;UYu0XlhFFIGDz*A__&Uo_l!_ z#uyk*Hg=Yc&%>>ZzG+O~_`KC-}d8ESAFbi2hPdzT~)lmLWc!twcc{b3@>Q zl*AV}2w?nANb+Eq)B*||;g6!}$INJMkRdzUvw{Dm3{q!RAlsbFR1AIx`{oDWC~)ZP zdV4l7Ksd;Ac45)5x(Pt$_+4m(JPbM>Gzt=Uap1q7#(;6`*l9>NdIL`nO`D4YE4vrl zjNyRIeuSoHwv~IkpgE2OJ}k?MztL;~)_M7${{JrUJG~kv=($*GRAvT|hTH~oD><>> zfK#Pyk0A+TCjrwGUD$C)1@N#PkPhHjQopV^%x6^pcQJo#VZgPrO;vw!JtM=0`0+`= z+-4>cW?n0137AxY5o)u4ni_1wx$SQ8;D7f#gYN_l)4x^Fy8`=~`Lh!;eFUCg`K5N% z3P2@zrvJ}{&Oc$8Srg6w|Ie0}#3HLE-kvp2 z`zJAwu(XJTDy#ctu2so4Hy)s|uMoX=;X$3N>~Sd18fFbgdqLGbkX_QZ6BU^dq;4X1 zo#^%QMhHhCIY*?qWUT#4- zaJ7Jxd>Du-uMk^IW?3ZxTH?}@J{mydRNnyi+B@*5ZVfnVlA5Qzm-qDN20*UIVdvHz znLJqo)L9AUV4G)Z-TK{&c1MpirRFzfJyg_K>^F*nH4m!q-gNlB(@;JpP3Ob-L=>2K zyP2PZm{}RGpiI}{UqKbbKdBetnmrrrVmM!*baEY5tvsXbWijOdK!fUYrf%wzR^CD<=`d~m85$v(4oC3-u&0!e;3kQa9_OB)d;7Ru zh%Rdi?01#mBrD!$UE&MwSDZknA@{r)M9i&1E^JejI-~IrG|>x!@D+D|qht0eadV4V z+Gzk^H~K!a^ZLUPD4V*UOhKzZgDry^MAC@&S4?wHdAN|2=O9^i2@enBQ;$o7WM%V4DEWx6GhIL9pep(WKd_z_Be#oqK?g<&U!Oa58|jh`_% zMZ10Mj@cLGcP1QCZOSU`ygsu&w6WSnlY91=8xUj1wHf~focvmKIi_rH54(;f>? z3H?+~^VTzR)aM6E`elvaLVpVp6HR0D!XBmo3pIK=`{nSLr=Q*d2L7^m%aW0Cs5Th1 z1em&Z!?F26eJIwFXBtuozVlbQ>r-A9Ikl`Sv{?hZwZc5IZ0<FV?+V#^XIiHLJS3V*uvtF?_z(PPdEmm2cU*5fFVmD7g#zDIPMq8pRBB=*Tm>X(_t zm7H!D4u1GmaX$_2VO7nZ|AZ~75frNq^M$U=i{~6$F8auuB!RE*riF$uU&Zo(H9Vlh z<$nMO&!<1ulv#|1&A~7x>sqMj)8kvb^A}Lmcq5@1#QR^6aqrcAJbr-RBJVvx6+`&> zHB2y=9Gyn+w~?K5XHL8*ZOkJ?H~ud+@2`Q!KqV-i90#iVu1V{!J45s`sCkxMBTX9^ zgJw;gz_ZaN={8M(AOb`t{j@|wP1#uhBKdtd8F)2KV0EV^Eh2CUN+j5BUDXbXgEB}>I48HF7Wuz#IDEAWRWPJZqGc} zT|P4%_#nTU=#Z;<*EPX(<{R!y4Vk;;H||u+i$dE!XV+O0;gfbdu@aD(7j9iiI10mo zGtN4t63$F67uXFMgTx67`bFL78GywMN}MfnLyvJuO2%KCyR?B-;QwhfI*u1JJenZ2 zleyx!IJq6>$9ZM(j+wOA#uAL<7QMx8ah20w zLIp)UJXGzCLnwvg$Z)N_WG8t&^)&ARx5+$0hJcYQqcwqAp6PLH4sb9cEhN40GW&XT zeXiMvmS(UBqh8WjD6td}6~aM)a(=^F2+<@M`PbGxX^>eACi{PS?MbM<%7uAqQ_c)5 zhQMH7hmDHI#l>7oZEVi6xUHG`JYy||Y&J68C?4pQew6l=8{KdUuwsr+)UMU98(x}y z#krenHOIU^Zh;wZ#5(9P&JtU2ob!%0mmSX)EV!O?;jZlzcLoNVH3n_STBx~rW^K>8 zLlH{9?SCTl`&H{d#P?LnE|Gn3N%nVbv+bc)i;X`-=tda`o86PxTiPD{VBy8*YxVYR zUmdiMG?C*$W@U}_X2-;nW3xzs7m|BzuwEMt^+^|e0-3BxlXrW@bk%HgPB2efLy6Ik z?^F*=XJUU)PDl(LIkIW@nluGuDt(l?P?n%xY;;n^k=yWo&wCfWk2_C9{?SB@9?pK> zMqIy{@ggXA>DoO{jgwVOk51@*4HjB_|17`#*#SNKWyXK?uQrc8sW9<)&+=mYJHpLp z@#pHde00$-{dl3hXIEfHr*-=Ns+Me^{{yNWno_l|iXY=j-t#7Zj*IIk6_ib(UM~YtBdrQuo&N9I1 zXGIliPY8=&dgzBfy%V6W+N+$;s=8mxFP_Oo17o2f2H2-ex=^X4t zuf=t?saq?VPscyiI*E2~xS3oRzrXfgZ{#TOBpU*uC%$?aqP4aCnb^0`HoWkJLEyZD-`tGj;Q666wVC zc3iR6h7+48+nwz_!Van8yYy)qn9Gyg6Zt>iGcb!-RmM}KY)4SKv}8X=jr^Xiaf*<^ zf?MW~B)nV`iJeG7zb9jrDF2BHHUCuu12qEkq~;ZTx?gh-9UBvK5T?880l?Y}VAsPQ zoH6;~6+l&VK21N)U@tBHxCO@1H9j1djZ%FT+|jAuRqDdZmriY{g*~f=$#;i$(%FWl z^7`J^X@+<>_i4OCW?fnwVjPc`{ZHo*!}AVvDp#e*KGlBR7zj; zzo|5F1;ET7&G8)?jYCjNs(+c5%@)42w@aJi!k}B{18ivJ#2ZT)IU!BTh>t?l^1FRD zzpL36*K^O;S_ayjQK9Ytfhz+s?gWDJ;V3oSn%eOiyd&p^q!3`t9(zAMQPp4ikeB5j z2Q1vBMk6;YE=Cyg>NzLIE4yv+Mgh>e&K;eG+B(+xTsTM?jK<5J z#X-eYr4evgGDmyQ4_{~QsRH0$0bNiF$1k(F+%jy(GIQ(2KEnBf3VV9rcAetxua~93kto4e9f}3sQsTXw6(m zN(@13!FIFUF5|JkrNja1SGhu!ptPl=an6Z8HdU( z-CT8AZL3;#YVvugxF&aIj~YV^z#Mg}JvZjV`SmrBzdE~|e;305*V|zr?3F8b$u1x< zxMGYjx;P?Tg{vYk_f@BcgmfTB_1>%zVa){8iZ(8S$x(qu34-!)jn;zCMGiG@v6{KR zE>(L0K-triYXQtHjV5}!POBXorL9Q8rM=ro=`yDs%aiR`KEJ3T!#ewm?5;Ks`IdQ) zy`f`w$mxQ5ka)p@BBf>uytiChfUQqzv?jEg&Ao3(Fj5=g_Xpzo2;Tk5;v9n^Cr7sV zw@GZcHLQ1;1>>HFHDCsoJz32FFlS?r#ROghAol5|+idhUAx+MQZ~pGDyQnl59pe<0 zarf5lh(nX$goj=r)$$wYd}9ICz8)H<5loeHT|eqZosoHb+!j7KuV!K5v?5eQ;d*ap zNVd<=%ZD)!HZ*yNep$Ew2lDm}FWOX-On)*@e?B}dy36pP;LKG($A&G7cZ8pkMyweSnr? zKz)&WR4EcMH7K2}CW*34BMRquvv{(r0ZsZ4J#l3k%j$GaEGW_1A`T@_?0VSzYN^ek zL5CJFV#dP`%rC}Y2NU%t?RV%5um~Ige6Kc9gM_QK1&T`dCNbJiy#np>^`ok(3HoDy zrefZJY77-qN;Sd4l%Efrxwc)c@T<{PmcmVxG+6|11WtcjpmfYGT4Tz8en18vO@oa!M5}U1xIU^26A>AhBJ( zR#Vrmg-sL>o1m;-&wBsil;M-m;v{lJeFW(DSGa=f1{zBzdA)3i4-4wU$01@iaq_BK zxV_cYjGJoTmUsE!xx!te4f7o0-4gdr6v|=hQwf|te`pZ1l5I_4?Z#Arrak}AmllKR zsJsAN4_o?!>Lz?1NxB-LyOQe|G`f{yIB?by>6c~13Ku5rIU@!`%o?jvEyzE-J?xa2 za5K3R(h9Yv$nH6viq~sM??D;r6yCXPRWGO&9T!pq7B~LW^#3@iEU6X?bPeJk2jidY zv_<1zZQ9z!zgmL-f6%{AM)L{ix6yPB&8SamiB+N1UKGy^ftg;_B;$ESEMfX~{Ykrs zbd4?)ZLQGmvrk>-rARrj^x0Xp)?e-4JLE+*?D7(cvILUDrqfu2EaO)rg|o|Wy4T`+ z%viT9Ri}elHcic&x6;;XI^mRf?(Vd#vKC=tzh{a~oE?#G&w%69b@dVAEruuL+!>Hl zbd}}DbSE3-A+^8+9{}v)ff~) z-GvEFqPMJ#;+Ip)lhi^2gNe1N>``&{p=*@+kieP}oB2RRtv%f3=SJ}M^ zB1sDa{?f@|?BXbD$uXdc(I z37%LeE%tp3Zx$SR!Nux^;QseIFJw!x)0DA#M_0B3xIa279898zxM61NOw0%Hdvbc+ zT$Lg?-h&dJA#)Qszyrj$w?R}AoTh#25+J{tF$e3QqZN;A%O)ZNoxvfvNMmE1mB23w zswvU!Fe;E-u_SV2XrK?@{<5xZv{e`gnGFWeq8sUBHW_afHxvl;#GPkiO3uQ@V6(>Y{g3 zx!4-P5pJhMJ`!76E)rc}B)44t_xbStQw+bTAjJ(`G3~orTl~DPyo^@c0<^cwW@ykN zk)06amC08~&y;5OE2mMkvNt`YAJu16#4+3#`3?xCbTXoGuL?8PCrI5T)TE$NghyP@ zEX^*Wvx&;$c;JJh8JE`wKm;Q$41l)Lr+lR^U|RBA@iGod5=6G_h62_5-n7y zRM>_oggiBRo|`;4U!MG&nPBcv-3j|HbP-bVVK`2GqNzb1Eo;+^@AKS~^P1UXEu!W= zPtUYc8Dc%xI?>mDddtes7A`XoTpc#oIqE}!N?Nr;VO+k(=DUF?duL(qZnBHcaO4gk zRUqL#Akf*n@4DtMFSjjZMonE9%>LFjKo>($7>g?u;a3?6WRgcDp<&%G-_3iF z9w#)toLXW9N7vncG&?(MpMm(q?LUcv8PZcm3a8vHG-vkzpQago0 zbW?vQ?;pxQ`&fOpd45IM{y;9W`l>h#Fco@q0t$;P%HkNlWWReBlsLAFj(Rm=+>6LL zqIbR7Z+8J%S-bs+r^Ps2o~W4hcu|8Oszcc4??ndb3G_+qd3n;#O-2(J+|4k;Hv|*= zn*wGN(5X3^yD|K1yDEP}99tYwN9`d8Zlx%r-5^XqKd|k-!;<)(wTa`YY`TWtf1eZ1 z_h?xeEsf%wvFh6US#enpi?rMw7`QO%*h9Y$w5(ZYn{{p+y|)PpJt~wD9bFP-m4D)s zZP8Ll?F_Oo`rrje3JMvncYLWlqrn{c$U~~Bu%%B^gYpO+NbWrQ=xG6{0G>bMEnqHFEwpBz2u3zM?^S*G&|K=N1WU zNZymZb6H%ECc7Kd;47X4(kS69)Y5lRsF#^!#; zHia*}YW$3Uuf(!aIRoUu-6GN5R<6G-G|Q3}C`5-CkKN4z-m0UN`8NjpCN*q4^vi=0 zGa@-wOPFohIk;?3nxrJI+kx^39r+b4rV403LzIy=?Y@*lh|JflE5?@CT7*Fu+Kz41 z!YO4bAEbJD>Nj4xq@R?G&TuC-`<2>c6;S}jVc$}8VZ7Qdf;h#+_)ddcx~uoCu(%}R zxCdUsy{U`jeE{e8R>&*|Y)5d7)Tb&hnZq|ZxHw`Fso9yGJh1zCdMeqt^_xM{SDOxR z(;mLLFH)Q|WJ$de~~R0e}wf6;uBUa=E3_x4Ib znVrjM7*9uYaB(t%i7>-wZgb9l{(fHH8$R0WIfCuN8^e7V!g!GFZ>hQ)y`4GNYBmRW zHF6uK5%nWP-qtEo@AxZg`;I7SySKT$bj8m89Z77{+=WE5*Sfh**nB2g$BHm>+gE*aT*45hpLH*2f6>ihCqZ{O zf{}SOJGqm7<|%T8f%#LTeHhg#lWu#Vlj1p1@<2%D+FL&`xn~p$hwqz^1+8J0LgN`H zVHRP6BF8@^P|?BHBRq$r;($vdkND&YfulJou))E6UtCCDoM zWTzx{3+J}*+GYNt_lSvVW#*acV(j&VHlFvMyvW&;vyrpJQemH{vkqR6uJL#q34Qh6 zeMsmj#e)e&t#*a*C;|IrhAORX<9aiUKsCE-4Q(we7JUh+NKr^$PI$=-M0+w8AG_?l zTIk}GPAAeeEcIS4XXrlty-SuaQ_2D%5_VyfcP{6iK0SLm^8B=dBg=jWOI?vRq%5JXR8y$zJIPYWI%6lr{6~k_yM!uiT%GP z{ZBB2DtA4NPOig@zSy9-k-a!qK8j`6mG3%dQYcWoKX?C6 zH*nsAn;R?>E2v$E=--z+lBRodlH7+$i6>&^yQ|kGlAcWRx+h6_NLp6;oWy^61#i$F zp7l7s(Et0_CJmx75}8OuQ?aa~)#r=%Hy;9S_Zqm|og>}6s4vya?P3Z6j7M&%N+Go} zCOJPMUNeQTYvw`_{Cr_Sq7_ALrMytp0I>%;= z)90uZl<($v;P&P!Lv|WN|AsGVFP^KXJmazs>>>uO4*R+iYgR`BB)!X>dm2gKK1H=@ z@CR}Dxle_0S)HGwmX|9f1viez$hDWc4-c-)P&!b4tFr^P#{w5s0;0Xa9`ltl%(*5} zgkKhCD@G&}f5mi(~H# zQET_cSbmR!_h2avI@|Z-ye3+UVkvl2b{UT_%x|q-yr!^4BK*B>v!UZ{$~pycmPp z3Fp&3N_%#U6*V0z5!9n-4HsAk%t>r)vwUZBJ`t<5Rl( zVV-7dzb~B2z)}NDL0fB+REU(4!%{UkH(W*8%PZX(jPjn98oAvN?9N%e+40~~G2w1~ z-iU5lz|#9uXrAq5PwAgA?s0Y@1SNi7pDD;LF76IL&wMa!KLw?tGl?tw#BV#^7@e&a zb$DVVU?G3N=N+eU|71j*{HO%Q!WNe==QDe{pMc1Q?o!J=%3~V}q0Wq}6QAEdV@=7S zbo-sIo-W!E50PZK>XH%Z5aZ1Au*uI}HuRK$`G?gpL|1#=YQ>;wMs~&Zm4*dMmH(y&#E>3QIiV}5`W7a80&kt2H27?&` zj?8Gfeb^wPpH`&U!ZNYGR!{Lj{0z*QC-F4iOAQhGrDpo_&pOH3Htyvy+4?pf+wAGT zGNsR6Z4`&3>msWPlQRez(7EuthDKrZoq9)5Uq~~AlC+!KTbmM8qe}7`dZ757B8pI&Ph z^@%SWOjF%WEjcnDT z^nI_F^@Py96u!P?e?sxH;9)LUl#aoDJj{xNED-mnU#@%uH!DY5yyh&UNQT8N_Qxm< z7&eC?SH0FaChCjw4uz9LWg^g2Vq$Ue#U7lo=!Qi!`#$R&f+Y6)6)Fb@lC$r&Sy10l z$9M!1vjsb4~*=}ROQ~tyYO^O(Hd=oRMDbxs`u(h?2UC-w-ufti8ux0ghU^bl7B;SHbf(7}OV z>0gO!q7X85lh}ov@q%tm6J4i|CYLnIBIFSQd2*1$8+z!Rv2~FB3nkB%TBrAi+fL(7 z>R9lE=|rP@69zzXq|#F2&Gea#Z75|pVf+VXE{p5e6zE1(O0&dsoSdA*dpJomhW&JR z*2Hv9s$}_yKQ2++*&wr~;6gq0R$+I36!b8%bUSpvVxc9rtoIS35%OO>1eVMD96?;}{73 zAL7oQpv?StI^hua4rWo>@?k#6%+D-|StZ|A=R5UM!Q`&v+Xn|3-?&-x zKJuXKCHnNA$(-p$i07FXkc#@s+M$j%UVNEZLr_ekwUytOIEFk2kt2pPJgTj8#uZ

rQG^EUr9nAw>Cz%;Yy(lEq?c@qAg*jj2|UoUetbNl9#0^ zkyf!^e(?^lVQjMel_nJBqufGui9@2Ga6qQ$#g)X)0D|a=6_eq#&6(e$dw5~wgqE!) zrxEh2x8-vj4mbDcHFRsHBrh?jVbY%Mr=#CTil4+Rqqv4|Rv96Y10C5U_lS++@c($< zu6hLaDQUm!p>xaz!b%y0w`Qrx*s{N4NJpwX3r*F3tC4k_C)<;K_RxCm+>M+8zAuj{g%1$N%|Vfe3yC`o@8 zX}GWYdO4Z)(Q_ z&V8%}eqt()2In@P1V1qiz^?c|;m(iClXvmP z+XtHF;3=%&ry$Js7d3z;qCg;*F+0%XHc))B`!E11xZt&v17(Amiiz;qvr(l0$C&=H zlm=I>JY<7Hcd=dEV9Z6$?*8ZRci?s>Y_BQFJMXB3%X7cAFE37PJa(sj;M>~R$t11> z?)6{{yygWBUe7=8G<*b!?csNxKmYyZO&B@JqgKX%c}J&owr=V*;4;0SjrhNq!2eq~ zN1FsbC2;Be1aP@nx7ZmF5hVCzy&t%Bgf7%=j|2-%bfoeRM1;aH)sI`Mnl;eCFYabU zH)r>{O-8d~4v94AJ=52=_sDsH;sQk*lT8NIqwV3T6sN=IOb$4kx2A=YjjjCNxs6oI z6f3a(g^PxPn4g7G<2Zp^DhKJh)1iUlvT-)lt# zOBi<*bOFD`0K0J@Wfkl@(?ZL;SH>+QgjN8mA_<^}0<;u{)_c##v!2Eu^4;c|%oh$G zd49jo2TN|eV_AO7uG@crT;kZFX|f3#x3*U*p{-y$JCFF!2=i38OONlR&V$fchUTc| z__SiSz5trDe1J+&UTQSO@afbAZ?*z#)U^U91{^r{L&2 z1OjuC=XhhHXzjQ97*14kuMc0jae);>c6+g5|3tFyNRed;#$ucP_x#4o!yqdCgBNBh z;Dgtva~R)^#+J+XgPu3MadTr;BZZyxeW?YF=^Q&G zczuNSY0P*qd?8Odn^dp|L)OwPu}$L%${)h|_KjX6x{@c<`LU(<-^Sj;6#u;**m+gd$^* zclC!&$w4M@)_kf>K`UJvu7l*mC}e&w@CaAW+afXdGA?B_K607OC2f#gCvrF3ZVO+U zH_L^N&Kvf3*G5LNY*YwN&c@(8%f>t-*mzK-2(wu;iO)gTSV8*x2g55qfU-P^96v-i zdA9m34%HO>tk+I~b`6@Go~-&3Z+=`*=$gq~Z=PY-`{c{)Y-={iVI#T;JLj2Z^kC`x zS|Y2LXFU{?HplW3do%AybOu|;$;^Q#EgwG2e$(aaC{Uhp?5pTml&QTzso&G!qS{_b z7)Rh;F6Q10C~_q~UX>As>m+`#iZ_}snZ#*{*7ROOWqwVU9lg01w*$K)ACWTV#o1YZ zfE{?-0oPlpi?`FirUjcIO?sA*mUL?6d9G7$n<~RS{s^fm-ILiJj^F>LE zc?rMWwUG_S7L?j^?`H_c-$(kE6zJu8CYqPK3-=c^4f4m>=0i}itzZLuJJL}Hi7QXH zEuvR@Z=DG?!HCUn0rZs_J*-_GY_bV})H%sb?O^lDPmyP5i;#(It9*Mwf9EP}TKraV z3#|Cu_>FP>L#L-(<2Q)hUltr#Zvk zl;peM?wHD^stug?dgj;1+}n9q3Gtd;gBh~f@h)E*AR*rFWir}?odr};ts))i62@i6 z@cgJUb$m*}`=pWE<7_-{hX%9E3XFzhF>V+y^0|7mPwF#It!}+P`6P89$0cJ210;|( zI8ii3(y*uBu4!#Mo#9Ew^~I9^)?__=u5gUpW@0gGCjGA7Wyp&#Q{mYFiT}6v973s$ z=}tldN9Lb_$LO~=;t)Yj&y3d9`EAlE=*~UxQ~)Nc5OY+bD8TI6EkQ0_kLCQVrqT{oqfJJKsBQ^Y1; zdR=R)q^+@J@<_U!cJlrB`j4u^_{J@og+wSJWzu0Nf6h#^2<~2ipGp3Wm;CRC5VJDb&u|@VDn*w=MzAjMt}!r?AmHQtAweERf*(t2gGWp3M0j z4krUxvaePOtmA`H;cOF=WNFXzX=-_a%*~I=ZA1t{ECVOjNJ-`R?Y+0}lL?kpSdZE@ zq2huw(MK-SKaY=BCr+9kK}mUxxQ!;M?!i41(z)oE;+LIAAP@!^y@tApDxtg7{`)%9 zE1*(H0FXRkAc7o@IE+#SrLouxEB`ZKt9ROgO@BbuHjE5hCc(KUJF%o)wx!f#bYxdP z$b+4MAks0ih&BcMuq4GM>xkKbhDN7+m!zkUqej~%HA zpiVm1d4LLvIJ`O<;=zw=A+*=Q*-^d%!7-Q$>(kEDP-5_{BaY2zeKIMFE6a!S7(BjsI93=qc1%h zk1~cZ(dr-%1_NfL`D-#rC&Q&~1KqV&6}l_OrZHRJmvuKx$TM&;=G8@??aGJ%ejjjr z!S@Jim`+|>oAX&1LC@E$T2X6}I8=7P>O5neixub3FY7z+wrw3}rf{m72&&GkO^Ye7 zDdX$Oa0N;Xn8`0czVYcN50O?>57lFLBBpxZ@nU-QCqPvzDou#VVKjuZl{7tnazbNpae8;f;AsKp){K~K@H4g36Qpn~AZ5gF zT?;m;0eQnM7q#)DD3}NE=x8aL+6RatIiJ>y!OHWP`aP%mUuXER%zIRS4WFy^2XzM5 zqqreZlF9(Sq3zL8F}KsmDqKM=N#HN^Fo_%p9?ge}E+2O2&;mr1!z#bF37KoBtOm1+ zC99=IdB}(7XBdN{7>cFCyGYLL>gu7Fw?3Sayg6f0Pq|4T(GWattMkL=g_cSg^+eW{ z^i}PJd_vC1Zf2d$y?_{se(CzM(9FQ#M)^#QMQvcEAE+2-F__dSP#n}35$r*^E9{G= zXWb)l&s4r^+=DxWn;ENn!S<`L2CjTVadX8mzzsCs-%}o{rR)3x)P4W__2jPW(|J_8H?OMlS%su>SJgA4WzP$islB51()uU zMB=89gT(gY=BxSrr_%2EBuS!+spJu~mkneh@FN#0hLLVsPrdYNzhG?Psn#~$xDQu` zWaj+F@ivlA%Myds*;g*NvAR%>oB<_c_Vp_0F?184$IukCW5y$j9fgc0OV-_3IIZV0 z`sO~ei{8h@yH(`ahP5xyw;WEN`PHR?m4JDx7&c^uK9>PT2C3Xx6osjTIfc(hSR#V| zGF0vw?@-#7??x5m1kuBgm<1!_>t*EI2F&}T%U7uPZII!6kKSlff#e9sTxY+)EJElj zrG4bEJip}$H7oNsmp6KcDQLq3#$kp{#;*(?_hAf_4U8QrgrWwBpwf@(RWNRXq8n$! zJHDQgc6o`LNypE3X&m#*tZ64iBid`VZ<+c5j+h-bNG73D`CL`gK3)iO=>_+b3{Bt)|NH$HnU6m6_=zU4%1Dk}wlzfE-j z=*CX%thI{&jgP!k27O=|;Eu{42XX#fH$m`c zt>^TpP}XnBE?_TGZgY-Bb}+cmh8+D6-sUIJ5>K8m-m&3gVuIeEe9`}!CbSFTa}6tj zdbZoSIv-I)TjD;Z6&ZHs)LtAnHLnTU3PW>de+nlLlsHm@-U%snzg49(E2j!ob{BDM zH3WH{Svk`@vrP|s*O{j3%EeS#zoJ||YX5Og^$=j5Ijt^*En zz&4ksyzwAzJ%9Ct8|A>yh6vCTNQxm}L$m}&T;&Oo-_2yWHmE9popa{iv{gx(4YJqX zxC1kMH!AsA<12)8SO*&?tKqdHs2@yef9k6%;&KFHgi=nU7qoulm~qQcZcxR!$0P)Q zz-$qHmvSn}WX1$gnNhP*Ey*1K>7NU+4x*E>K`gz4*}$yCJf`XlGOOp;JyWYo_pxA8BW`|-bphtmbpM4quIVFisj zTSM7!pP&Z-LCDW9j3mV&E;|JT*&x}^<+(yTK7r22BPDp<+5F5h&gEVEl`&0QF8aFr zdtRh^LlN;^{d4wkq|RW*Kn&-74hv2L3Bkwl6I&v%SYIFvdT4UFcX3Pj?-a1z2A}@nngT-z}=Q}QIH^;rGsv9;R_B24J zIV$O9m}^)Wo87Xg8M3qXkR^&krn%TZ~Y(pXd$sN_ z_4{GbK+E7$gA_pec7yV&|D^Vc$+M;08RrVr+2RF2@RyB0knk$n(m7{I67Qb4{*xD0 zHi_=O-MstQ?bjj==>r&vaKmi{P{PlerM-)Pq{46xENk3m03av4<>q$U&*J3&yu$qd zzZT%X?gTJkpj}CV6=cdgK*WW!+&>^NaG2;JlbxE4>-3ou+q?c?YJ=rIkG0H+ZWpq$ zvL-<36#0w6=*CL8YJ+A>V?_wzIMgaJw10#rW##YWFL93Qk!h3Q4 z@;gFzvex9j7|e9Jao%F}7jMP3+d^=6jnWojaKBtibKiEgM>I z9`oH&$rI|29>{Y6tp0~JSm7pMbDbV_-_RP=IBoI5=EpmL=Jgeba`+m(;e?0x3FKHXoIWmCxz=k8>2D!^WGX_OdBeg zPj4SSkpyJJFxWPChV*@{F&judG6@0&nnorYFuBwZlcNf((7X2WI-&3;2L}L8&8bMdFtoCAhj6$P8-UUv{a~34kVt#SKNUYcIN<^$C;e`NrDuL|5v))O6bb7t zc=R0GUpkj7fsp274n!nvc+-+r(Au2%`L=c`P&Sl;$lM2@Y6CT78K%F`#wP@bu-XR8 zTu(Fs9p>~U;9PcncX#e~D>Fj&Fy^R9Ys-@wgWs%z=twV6uqOcXVY|BxN`MhGc>r0m z4`fDVp*>cA3e3mpu3e;poT#kQ0wexxWmu0>GrUy}dpB_D=rrvDvxY5R?mLB+Fth zMsbP8ls;4yq=Rmkm_`Tadzql58(0P`tOtF3lqCTQM_i9ND%R*mB?@qo#ryuA`#o1t^(v9f6O2O4^aZq?IKx&^zM%-w_O89&_$!Fa%@^;Pu&`VF@ zos)@$k|BSDCd^$Uy zllZa_Ui=^L#0}lp2i7p$2q`6n9^`QLlFlRH>^;2|&4e^szT8IxaqLC-{z5rW7W4wT z0b$obZ>=^co&}^I2>`^Uez{fZ78BpGhYIfB2*-W#Gsv^ZGH=_1XP2I}h-JgF5{|Q#g2lhX{DAh#269 z(z8Z!Mi_&;a5wA#xP&K?&e>nQN*~3vTer}v0l5Kt_{UE8q7l*10i9p8FQ{7DP0*FNnp>a!#4Usp70)qH4`j(*QG$gXP&&5Y8Mwz>FU6M{x^x4_3&i| z*ka)@zH%sQ&$Fvnuev47^yI|mtB0ePlv`$Y~?G{Wc$BFXAVz6MFZY?q}%n}*qr0(-ww zd0p6jdSOb|NgRkAu({9;KtQxs`z;?wW7&n9GT?(^_;Vc8N;v-`jo{k9u^nd<;G zmjV_q*kcKChokl6FwA`y6-mJ`Cj%z~Kt{f*gssS(nVw$nJ>C6oSN@e}LIW-~{ky(8 z$?#h?!5GL7X(&I_ory=_?hn-1h2ow+@4uM^39vIu>=T~J_!2bq*2s);3T#AWFPP!( z#erVhd#dxzE(m0Cfnxp$cYtg7RPqaNWPAyMV-*_g?rZS6nB{%QaY?-dK_SqNaCGNw z7~sIpDBNDWPLN`HWePvraRB9C#|1!3d4oBSb^osSKzCxS4KpCW2Q6^LW;w92U%dvg zsSOqYiG>@GYYW+)=GfnHuNd34p|~5cO zn6?5*$4ze`-O<5+oC=>WgQw6K%`B`uk`);i!^;rzVp}b3_DR|xHL_l37fmF~_Y_HW*WUI0K;cUU> zL4obk!?^epE?wziiSmBMn-*|L(-ecRs%dYZHBH7Dx5>VQio?*Ifle~%d)S5gJ3a9qoT6+ssX|MBxD57|!* zx|sFvIv{ME+3`?ObbaVP$e^0+;EHy=Ky;u38=W7*UU;(a6Uck2ZEwxjzXJi0+Tg3T zHLyl=FODi(b&a1+0&e_R1%|z~o}a!s6??OSKQ}gB+y$_t)17IdXGBG%$Yk;pNhif) z0kao2HvVkJ0g_QearH+%W!L=Af^_j)A)6%O0KfBX)|W>^lg^7D-vp*$FL0sgazaD9 z?FImWsAAG~9)3KqJiFaa;&qZFiQJOD^Fx|EAFo$l4f?O8dF*i?`I*y30v4M*z6Eff z{G+zHhy=*ShUcT6^WK$Q{fya3JRnpb-F0{P3)g(M-UXJZ2xR@fFUYQA^3Il6jMQ-c(U0Hq~}YKg;-cm<8%YtuWlJc zZ!$uj6C$c`qx%cf9MTJ(K0RcJL~=TZ&K}1fFZc@w>uK%?eU9JT#czNtsNYonK@f|i z_JY#rKP46VvBEDacK+$DnrrX0vfGG^K<3v=Dw{d4{k^)zCx5$epw!tgldbr-_uH4T zbN9XkSi1>GI`d?MIE33yyRey~oq#D9bL~4<0*F^l9y_41@>4TugS9`rLO&L1IR|J6V}iK)5~ena(;TU zuUH!hj=w82ijLXgU^vPnJR5?YA~2nwXHkVuWXsE|_+Z zqZzQ40l@689XUXn@6h~M(1A`PGo$(8`2p?W>ibPyT&(Ldk$mQp>F+~(?ajtx$XOde zo-CFcvQ=3L`0zPwM!LO)BCzm1TksM<7m77^uY6~<4Np9DGy`P&#H1iRV{t+wrnDf7 z((4K+eo2s*Y7}5$02;s^d_8p`Ayh`Y+`=Q?f-}yhLQ+L0AaLbDP-Lk}&xv22uKqE8 zv6KI@()}!bOB-aG)9X8bFjFJL$Z)z(#Q^b=Soq#bBo{+H(e$^ zS4bW9Cm`bBi@fn+)=ZuR)sj`o9Dv*F9s7faDm)p|q&KVO1?J@S<7B{N}{F$NtUB z;XKGF+6;sh8gqLcg9xKR+{FD2G?4jRsT+T^bS;%k+%4aKhe&V^Q~-}7wHk;Z85JtT^tIE=T@#O^Q!m)6w@GrL zMnRp~?76bMPSNNvUPQ%-yKR6$6e^Lnglht(cpHxHX{TTA~PmLe*u737iYuyn>hPgVFp4#0jmWG^%IiJ_Nw*nN<(eAyNWu6D zWIbqpid3+1!C0*GCak4EyJSpS`3_^A%%y*ngKMv*-R!6+V8lcWZ?rkRe1Tft;Z7lu z+>=;wHidC8k2D`Jl@>8;t5cuZgy{;%B8uR{$-{U(HER`frBG5TW%Z~^@o!;J2wB5% zsTXaC6hubUOPcCY5|Eo0DEt^DX#nv5al+jM>1(3Uce}kXU$-F52g^HEF&IbRyOLEH`*8Y8aAPBqTr;FzyE3ibxl_NegwV2!SIxysPl?wUOXG@lpb- zVBR9<{HQp1zO*f6*y6Xiw-;Lqm-vkRDfMPY42m-eh0y!J6|r@(j_|u}!Wss~QrEd& z0rjfRMn7_=>$vgxVHxdYS&42!!s7QpV9)zH?=EFK@p?S9DeKpMPe>}QQe<(Vk?;uL ze#z%A3K8p-bhWVHW0uR}`C3E2-9+-<6)^0_%mM2%ypCm@K~1<4&*JklhAwQk(|$Yyre*AYOUrk#azxf! z@N@JVVDeBDxUQ~opmG{p*i>DjNUiCm)I%AOwHpSSEy`gOuJ?k!VwTzIg!N&=1R%1kYD*0=wovYMMVRE} zH#)(R^-H7R5j?8?+|cUaFr5AV@;u(y7u9g?*{(22fnl8 z0VKOVo{i8Q5ehyd$y0dgZu|>BT3*g^9&oJSx?PvJQtevw?I|Oy^WSm4L zpgEd_+WPXpWQzAJfhxvJ%-r|)1M%Nxq+Oz0Zb}+64W!+H?6X!DOvR)oZTLQCU-}u3 zUYU04hG zA^poLm07e%=-m2=EQpo8h-odyK4<8yv)O$3BIhp)-?6x*Wihq?IV3z5%(RwmpF8x_ z2>4v4Wj4YsbocT)XExtZxN^NOxG8 z6r;HA)B_w8)~IkPP{3^x!Pr>yHI_aIdG?1U1@6l_4-$uo=%h-3@acdCdDe3S$iACg zP{zg@gP-`Zd=@Rn&PUG*JI1XJyg?%SCi6qKx3bgIj~9;$;CTO=wOxtJ_g8Eg0CEOSL#iAojDa4 zBQtS?=djV3KbXdB`@XiU6MIZS86{4QEk+Dc9foGuI6@Bu*cf?3_^ z1W7bDNVv?4+RI}H3f^qTjub}JZe%A8f>=^=Ivx^Jfo_(;x{uAT0_aZLK=H@#7d@D} zKEE54JPBeevNODJeLvve{@`$b0Y-~Iz%tK?`|Q`w18uaqT?lW)QUF944aw#Er*pli z`o;)(z&A8?bv__kM@2)51T8rqf_~QMK-Y+Qmc`?Ok(%o-$~X#;%w%*WsM5bx0Fgg+ zK?JsDZUXuR7;yeS0kI$zsm9OC6*SYm4S?;l@+^X?YW1`cVoV z5`O7wLHbJWSU5H#PZ#50)qz?O{S{4M8o5XYVC*O6ylt~Zy&T$K9vz7IR9YQJsJawM zY75^OH_#(b3eOhjcQhY$d}*Wf!aZq(AHzxsA?GgxvZIK+{Kw8+{i}NDm4#36h{6w< z&iAvgM9fN?x3)HbX7EITb&_b^_hJFO?0R(-0u&+qm@s5lz^j=|tG#22^n}h0{OA+e z@J7uDuhYGUe`vA-_DuWv*ES+Itgn$*H*`O3jiBBCbt!+6r!iSI#LfFeF2b;X7bZ#E z`DslsO9E*i=<7SKw#BiAImzMcYv`yjWE_W1niYqUR zIQKLEg__kqH$!7p%bvpgp<6A&6aBWa`F{8rIrpIoO*wsLU5da^%;0p?3jiZ@)Kbj0 zK7a$f>X(mMAsOofdvKTtq|D|@4?2!IIzjpfON$t*F(XuXINQp4 zyCvs_4YE#mh51$O-rlV*Eib5JOfHj(tn|$-*XD)ciST~_jJ#|f(XjoSXHJQ}xqtg6&g z8(&LgAIGZ(;wLC%T`G;IXOIy3ea3pbcv!t*E_W1ZY-wMRUmr^Hr>$N)GB56aJ}||L zPBuQ^=L-c zin34_{{1&M4Yo&Git-rPzYdv;eo9E@*W}}B|IPvi8GyQAFn8&Q;*V*{jqioft4tA` zjX5U5(0seGEsR_-es+dr>Lqm-=!H{BGcKw3tSUNk++U38-5~S zX%HkU8d60_innH=Ml}}E%2pOskfxg<-vTv;!;qVM$}@bxXauQX#=kHQ*_CO+5<&>b z2TG0vMX={3&@1mWjvNl!a#S8uoy?eHkpMBzMMo1caUFr9UHGVIeV@GE0L|o&A+pzx zUs378j56|e;6&4g#?RxSC_*rolSuetCDe(_XT@Uv+e;G1Voi~hmYWtwA`N{lqcJSy zQME-Bdav}Ua=?tz<{?P{Gx&X8BNdSqmGCawIYhF$W&d{yG&dBPH{;MY{3ikQrNz2h zZ=6y?#PYl-9r-+0FciZtNTu>Y=ZBGt6|_%BCoAasH#jgWOfu8d3#;^cCVxgI~qe3)WsD6VL3U43TdaK`-WG0$NWH$JV@Cl%I< z4}^BH?1aucNFc76kQaeidgJg!Y}-23X2l&y~- z$m+I+5-Lv`*=dc|VmwtmO*d>L+C677A|a9yE=Re@y@O)uYng0|+FaEiHk#osfiAos z^Wku59k>$&wYs*M>)YsG;6lvce8`pF11xpe=jVp39>v#w4TbI@iymv6Y-$AA zV1RCxA?rNh4n{I^%XF+q!sb-R7TALhOI+yDks9W3=7DBbtyO~;B&GfVXq(UJT+Hx9 zVFff>Vy1)y+(JVfP9txh@d?dVB78SXIS)}unmxR6>k_-$8F?rj7jl+% zGCk{RsSvbrL(}@hnYT`+NkIIg^@oXy$=F4ChYPez5T)w{A5HDRyzgJQ?cB3?mm!kF z=RW!>rGjfm1e{N<>FcB3ujKb{JCbD+EKMB8_qdnLD2zH;7I{Cr6^VVXM!S~VSxqaW>@ z+|GJob#eDT-Uqw|lIy%-)~)w}k$@^npm*VlXI+(etuaMoxJtr8ATXuzv}>J^l%X!? zW(*j2EO~ZgZTwZ#rlLM&{#vr^K-wM_BW$!q-KbGf4fy5>i&f75Vn{CU@ob)*`Dbzv z*M}fguXL6uQslI{2IY#BO1rk={=?USl1a zk)fq$6J7+Xr4uPo)V*Z){!+U~!TWTsXUx5G-;sPH%|J}x?B7%0y)$y}CqQ`h#(*Zc00W{b$rSz`%3ppz!ht~=}|(= zr0zP3y1>3^)x&jX{hq3|^z=ePZS~C={Q6wv=GL={UxDv)q{8xxgUOP;RS*<$HZU)V z7=OuN6^(g98O*jx690uJKMsJro%~ofi@LRwLblc%GuiIUCS9-%-}EI|ac*Tw!c_Xd zD8n5G72D=g?J$R{y>>^N8{+KGu0&{A(gCSj z4rt4PSE6a+J$YLSxYhgq`uEWXe(SCsG+IzjYb?UHX(vrett?>>;Y^B=@(fj?fnbCKG2yU zEgX`juJ?n|YE=D+ZZMT~x@DN{Qw{kHe@&+ZG}xLv zyf1(2{Nbv3^*T^RJqe1wvQXB3b||L7qw&#EhJvx^Zo1E3s~KN^K|0EOrM%(s?>d)` z!15bV&#MCn3E(6*#7jJYQfGD}e}s+paIe!GpfnNY^Rd=@VdwoVKCxtdp2dszrJJYWdtr#ZPbTLvp0T9-a*oM=lrf!31>s|R1I8gP{XLv}s2 zK>=0mbMR~>P{*P`hx4{abq)A?=gv}<;-?CcUYH<|P;hFju;l{MW=Zy^k* z3BWM>f3}(QUm$p%howDN*qBoz_=Bapca<5QmY=T}hlLDthg4t)0jT-YWnci|iN-P0 zPPS4Lli`|x@}q#LXR832JoU$H)B|}i4h7>7C*Ht9ZQ`vQ32*+O75(LIEzv}HC9!Bv1y;-tyqZ`hS^`# zkBh$%qpGiX}_1DEE~L{IQh3|Qhu zT$(24eah1d1hEebtKiz-eQlsca-MZN&F0|_tK)IgV_pY405;?#LYhj)TI~UXf0(5b z_=WhYe?+LQhu#KntHH>4%!&hZ5XN??h`7O3fKyPx_W~e9A;1!2S$xC1!%H_&|ehQ1tyJq=Vw@RWxU3?sdo{sl%V zpXfRwFI=9c6!~+DeT$gc#p})`b!`PqB-v`%oBj;|;KbMl z!W+RbWQaD7wMCKHNM}dpd7S7eA?<|g04(Qsj@TZ6l>ev;4G8ozdGv^HQs0#}+m z0aN4vAO-;5S-vbJ`O{rCDojii;4ifSl>DF{!N|yn<33VBH+E(weQrcdI4#`^ZnRnf z&~#$X4)_AmV5;xWCe9A_m zJ6pzU_>M35n#DlQ(crQUp6beHJvEV?poV>XWx2%&+ zOF4zfx;7|uZy)mB*ACKKk!D=^AJ+Yuzk)u~-}MC5BzW%pBi({>gBiuA@n$J4 z;uz$WOok`HAHMXCk=>2v0oYO{5DK>aXZ8_S28NeX(D3JtG=keFF24av83Ix2u0QAL zif}aiQHY-eWCGr@is+DjH2)w8OoM19O^SohrM|b<2{?Ek{h0078~h`EFtCt-Y7<@VitE2yOOFyMP91#{x|@P`j`}Y} zMd|f7JIoWi`Mcq-)4{Q^dzU6VMNE0TKtctD!C-(+;y2|8Hlgu5_}|Fw3X}9XWEy2*$ik68-hiuyr*vf4b}0DCqciS_3?4D zdDWI+r?prBbti#O6le@GMYO=3gQHGg^azk2LhbxGu zr+LN2Sqz_hXQ)fLt9B0?Wp+QGcd$dKON)KDe?0Z-1A`BO5+_N5HP+SpZz*s}Z* zLQs2UyUfPKU_edqZN*!C0PEZsLeB&dR?Yq&%HBL4%JvN(9u+;&_B;=Y7WEWKX|t21 zeYKSl3VCE3Yu1!4rPWd?W#3B7*dj!hmM2n{#E>nOvP+wFjNaoKr0?&2Kkw)B`>#(k z?z!*lKCkmSm*Y6jLyogwK!fDdrF4S^K!LQTX+*0;>TlZqvpNz1n-q^_GNJmdi>(3Z zP0FclzY-&Q@tJQs^>*a`lN>^DDc9#m?jC^b;aE@(47?5Q@OUw$5FkEvz_ZxyU3F<9 znFFhT|AUwtYYsJpZeY*TbDO7f{KHu(p2U~fHR^~$_Y;f~>e}EqSVU~x9VDJSjoeun zxwAOufcK=9`15R*O82=riy}6vy@pYS=JK3`j#rbFa4ibd#}YImFHNg5Xn^vaTlNa? zA@5^Wz)z}OtZqImpevx_{LN|Ti;2bTWvI*FQ(XmZjt#hLmx1Zei@;7TK63n-KwHMk zby7-hpPdJ$4-rh*3!mC&I!lOpR9Oo)ab z54B3MLFdcq27skv{2}x5Y@Je^R@|bEoji)Acp|juN;d;bFwnlm#09{ciiH$E()2&( zOFIUZVTC;9Ct$@so8rxOiD^dJgvr_4RjB^-Ajh|Ysn!@^eKyU9GJC^Zexhp`xsk%# z4oa*v&LxK@^v^wBU*2u8*i0d>C51rVomNBwaGbt&&)$yPZs>Lluu}D1%d=ONP{i|z z=EW@fRrGZfTDbtfjY-CL8#s(o)Cgts_d|kG=*+i!9>b0Vq(o4U90Pb6wRn2Wmmeih zkEyA@UJ@D{H2pQfv93L&D4O&viKWsm>;Qhyi*FzMX+Bo2FK<&Z-Rd%q@ zUbbQ1&2=e%?sdtOYW`CX8=KY>uH=^b{lv0z0%F^QCg>(YCOzGc#WIWi@mD`EPscuw zZnk{2EE6g|7PEamJVeXLc0QG{!~4hxN;hR3P{g{t&TG?XpfdE_T4eX&@#JkKp>Y<9 zMp)CiC4P0VCneMQ3GfrIy;`LA6}t8sSg86q5LKUw)Z#k1z$dgHUjgCl{Y#dJ15V!5 zzjQ8Z{l6vc9nr`P#i7a+I^$p&S%X~HZ0u2t{x`@Ez2A3^N~tFx(t&gPwD0Jw(gGf^ zVj+K!`7t78TBI5_r!M(~<7}VTVC{_(oODQt0>MIBz0J?Hf=|~^KYCh<$1ewg0f}an zSSk7rc9*!X1M~KdKv@&FbaN40gsY(DPe=sctXTLl+U}M#Tn@|gRkGa6Ib5G006YXO zE6QTaaAaKI22ZQ%si|AIJs@;U2$%^-vE#kL$MvpX=siekqey}R#01aD6>9{S=-}^ zFMfmQFz1U#_xE24*{2rJFNmjj91g zHh!J>q$hMUDu15DnllL8887gNVCB-9Se?Z2(Y@yS~=YPW1oPo~eD1b!_p)J$nxTY#&4Xpl-lvn`# zWwid-U6`}^xC66648tX=J4@C|Matx!bP~ZN7K@t7j7N=(dXIVbt0lM~G_uF|n%r zXG5&C^{BTNLFq@odCnlV+WqJS))mvfOj;?oQ_q`?4{a{{8X|Trw@xc)^It8RmuY`j zBeJJm3VTxNa>U~4ls#vuj|j0w%YoP3pm@h}dmzu+kcC&=x?-g}gg`4Jtq8Bd9KIKi zo(PZ3d8_<>A;+s6*BR8_A?Y+r>AjE=k{{d@kIf&%DX6DoXannHk-0+J}^@99c!5|LO$b{m|KL zc%y%`oX1*MUV(?=F}YwH?l)Zy@vQ3kM1)~241-O1_oUqg+O=?L`IsQ9pCUeQ;`!z; zmi!rKc9j1wnc&bS<3C6;7uhLLK0+Ii!}WwGccAZWv!nMH?{^O9K&~3Oarg_uyV?im zbTb*S=~oEzIg2%4T9PmRlL`OQ5(xFy(bNM=Zy>L$Pzn01k&l`p1bc-nW>cgECKhXk z=F6v+p$oZ7i4saOxKBdW{2+CeCbQ`EO+Y6pnL@Sf4~7pS6H3f6%iLSyI^aUoELQP& zBUC*<><&kNAj;fc=5jdRST2yU9P<<1@v^uhVV}XyopL58vF#%_s>s^BIci}gpd(|= zsBeUGdp>h=UH2I56wCYbTF65PJh&Dgi?4qJH3AE}rrY%m$1{ynGzOZx; z#oD*5J@Vj{(BC;UrbKnBp_0-XM!kOdYq1iFTH)mSmsWqR)Ll;SgOV(Wwd!!@y1;O_WL-u~@;=!Chl zYyMoZQ=at?LZ5^s2MrB-d#3yR3p_Q)XI%Tsj|yx~KqdlQ%GRlOZqnbyNRtI2Ap7U% zmZBCRIHUQSCZB#aF9Q*gG0)PG}E=;_wSys(kVm(bd40 z6tMd|aQIC8DANZ?eO;M%nn4!5_?C@HKVrO%082}gzIG_id&t?im9_jFb8{k0qgO2C z*@~c~4NsmPqN2Qst283gMdrbTiISQJ$_1et>z{NHz(n>um7$p8ug(!92qE<*2n$Xb z>1u5~W!IitY`x`Flm62)mp=C|71RY#(C(nVe&=FM!SzNqC4Equ2Fq@07l;b!ngQAC z+6aCmO|?Q$_f&ruwcC*hFK4zAFN#$?@@rMELHrdeu9hTsQ>r$gQa_z#f>jp|0Sv_w zunT;)PCD&t2M+5gJG}GhgbsMYIcltwknZ`}LI>9jNUggg%|yY+ zx(w>KCO0$dfj@Ct`}^Pa`!V5-Ls9=yG@(M@$_lD8^!2pS?6;^LwLeb(eq`7z*GCMCa{$ zvhhqOzQm9NSqM~vVStMwO(|-zlZSmN3)(BT8v^_nE4*F{g`=@Sz^KcCRHyYA7kL#p z{g1mqE$T#ongl2W71_(Tos$pZo_aeO09L5pVx;E1n00p#%4o-z@=^RI_n(<5VtEbu z08;e+zK|j=J^7~Az}vcQr5`~!*49xKUvc91&j4?C^QEVso#Uf5dAs%QJ@-mzGnjzQ zln70yJe!OY%vQN)irUd3taLu-Brdd$E z2OqXz@fsYQL@8S)cVWhH93WEmZ#P%xW6Q$xW&(Cyopf;3A_H>Z;I(&d=ArNcInQxC zFMMf52By@<(Ap_%L(RgK1v4zavV2?5fKkCoZ9X0?l&i-N`EU5C>q%_50A~IAFf)jY zi)J0A?3fG@MfYX35Q#ltnL-g&Hogj5{CAFN$y{Pww8xZ7zh3)mP+T@;wY+%oVt;Rr zN~ysYK+TX1UD2HUAxG&m^iUn{3Lza5(JY!*?9ilwFfND-X<#{aAR>?kb}x~(oR8HAm^98Ef2Og) z34XL#!SO$#zv(cBgM2)%EGJ)$10Dl~@(A{w7&`q0hAV^_Z1CZkbdbJ#YQ1voTRtOL zL>@#y&NaSV(o5g?BQ*`X*+?0vOD+w9czLIGOwWeciP_4wJ9R=s)WstA|nF5zVd*{d9uD zkFh75aP#Al{DFrE#Vx#rw;P{H6!hRkSR58N=iG`=01uT;E9$Q=@-8Au)$Eg)1rcqq zfdbJC&L(mE$GyNj4Bv1EvP>%L9oSh4EUw#p6F(qb500Ger!0&dFt3W+QQSTQ>Daa4g9;;oNd}Z-T14_UcmI=oLyXa8-P7V!(=S|LgvyOTqsE!%^^*ub$ zwsW&LV%xeEFMGK9V8WZU!?3g@?&+&1oz)ycrWc|?tB|$&A9{AN`46;a9ZlJTNH1pd z#ASTsXhpdKY24k$xCh0F#qzlc!rnnvc`!2j1AIIO&Q3gN*PRA?6iIA)-G;w?s_>GI z+)95Uk#%(Ho>D$!wIFoL1Zl!zwqrXS2H2C=3^r)BO}9{gB>Oa+UD7$1vu z9rY$oAm@OmTBDonFtFk$slyPRscqdb&P49%W|OzEN&3{@Ub)5R=ZVO|=T_GEW@X!w zY;-br3ZWG>=ecA)w*2_~YK_>_A9d)CW0~M=Hr3HzdW-SUPQOR+0|))0sy;^mW{ukKbiEep3n4}CH2V~@0v^o!BhP;5g^6* zi&__&dUI`YevIWLmT=Y9B++aiyQMTSa(}+_6*QSi505} z9q7%0iJrZ|UoEocL)Ovq3{p#)JNdWUWnLu?G=c>~D_XrEjoWF^V%g$}#d>kp{57GB zohij(8^PY4hSDn>WtfZR=b2i1lV4K97DgKt{3OSL>0edNEe9g8D4Qof-g}D{h3KQa z#tU-pksH-MqFPIcRiOr7py>A5pX-YE`IY8Pc8>6CHjcsA{3A6;0%_j<_(X_}V`c$-CCp4{mO~OvZvNW9f_2y1+r&gom!h zLqAuZcxcgoj98vHr6bsCrYS}R4Z6PATz(T-aLkPDS;o!1ZZI|6N)piRp+f~CV$iO9kxVQ?}Eld;O_$D<*|AT`SD_|Z{zpSOj% z%riIvsJ_UvoRZK*kum=cM%57~XfxeX9s3&8mXh<%Ps&WnyzKdr=m(Znal);$80rVt znaFH9`NNVmoXD*vxzKX)_#?_cp`rOzy(_B)=)^LwmT31jAq($9@nonq6;up>Pg_-y zE^+q19NdN&FT+}f#zh$CU2@H=*0PKO-k;NV}ubLU7~jWD>$ZbSl72NR?c8(nZ)r zq{Xb7gI0d?<}Z(?yRrxuY4cs9v?tkbS^av3yEdbAr{qe&W5rhCg&`x;pK_>;7?6~C zyme>0)5}%d4h3^*k9~lTA-ihaeqI{q4}{Ma_q*+L=TUO#20#j~)I+Rf&UR8)AiUpz zuchgE$YfXw9dm0-O|2t*kMKXq`f<_sruk-X3~aOT7*&W%r$0*4Z?}l{tQEQ$u#^${ z0tlnRVsHivDsr9L&9i01k|jLEN_M@>wXBsXWTQ0VHtiI@u7E~xC2ExptlZ+Cma(cU z69ZEWTs@M_o%#*Pp`nVRG$?lwLLaxr3(l6F{rkrG)QyvMM+#d^w2xFFlXj@&qpt?db7$yjsf`+WGNNc!#FUW(i7(7t{kKdH!F^8%!(8(>>VI_%G8d7#(~hno4IRc=yv2B-ToZKT8w6fxFJS z4l^orI#QJ!ty0IS(C0(Jly%&*duF%7hr0V-C;(L4YUsF!ZQ+`I*|!g|g_MY#ShBfN zc2}8VVCvxj`=3zZ?Hwo$US*NJ!$d~N<`b~w*(~HCW~#O7w|*Qq{88}wjd-${h1+FG z`dY-ZwDH(~`Yt{7c~5A=+VlNsMWqzI{Vs-?^sW>m`^`thFy!W&$5VP&`iNeglUPY{ zr-HPG+|1VonPKIdk#|e23;)=C*&6EJn3@wIgS&C%*QLe=+S^;|F$1pO*ObZ{A*4Xl z^5ib-5cMAo@#$gtJLP8>{B;p$BE&3yv%>RTcX@Z@g=jtA;6BIl9#cTqMM{LdxVUd~ z_-q^Ax5B};A@X#tU0hwpKSyq|<-_JAt9$TBoty(0gk!N;u!raI(scSFSu?)Sxb73* zg>*BUS1Zu>>@to<=uqF4VV)ao8oYHbW2@vsFfV>{zn_*P5lBvUezN}$Xf~pjotb91 zT%sXlwvDmJSHFUT_M5NlknW~iI}!Q@>)y0WAynW-+i0wZ?7F&&;2xL!F}J-coJv?>iv>Aab>E1UD( zGYe#O>w0Kb!p)-+#wOJFV-TshpII_8Dsw7XiObq1Ud;hbY5+@&CWiY{vZBR@=?;H2~)IK(>HRJEt7&gcjdp>ubSXma=1 zbSH;w)e|T%qCI}}lN04nczA;_=VtScEaPP>2?3bx87t@ywBK(J@xziwChQJ!(}YYB zHP;&7tFD|lOvd3X^T)E}kiZkYIf&Z^8cI;=bvY>c0K6c4Y487h>D;m2LvBCS1G(O< z&zmljb@cYE-!1Ju$*?PX~iqeZ(->kwOw4x)~YDvF8pUh&UtY$Y2 z&5;IlA<8uVYVZY!u|)3p_UrFG+g3&~XrqZXuFXzd$; zOQan~KsTLdcFaH{MSYIj&!H04GMt7Hy~DbV-(~y1Z!vMmIeLBi_-{S9@}vs~h&@CE zKFOo~{(YhJVw0>dSO-XRDY3M363#x9vZ%NPS_wz>xuVd6-t8X#Z8#=fhY$4yyqfE4 zr!GYT@1AX+=j-yV(q|FvN-3Ux>%9+%RBTV3>S4>WyLnMLtE1=fYNjm3f>0+G%)hMV|}dKU|hHp(75X654yw?Ed}7sy~M{+g(IEvpC3vJQ=21 zzwi&e^82DCf`6IF{QSYTLs^Bb*d4U8lx<0B^2oc0P)8e4PX~S?%SD}A)wBF3Li@&z zyiUAP4GG@Rov|W%_O3-xi~Od%0iQTVXTw~Dr_2?zdCCwW(=M3bkzSJ&ystcA zrG>V@*8U+-_M|c;c^P5No6-IK9-)|9?d5lQXn=rKdc*Equ&;CKx;>0>Do%l)TA`;Q zjdGz&_5!SrH|n9GNoF&ckZmbY557~rYM)is+xM#HcQ+kv83V zihBaruY5xL{LH$DZYeexZ~f7&ru9$gsf~LBZ`iDQjE0%vu8^kozjfog-$p^c?Nl=0 z&9!fnJJH4lTvB&n z?jZ@2exSH>OuOh@C26Z9cOpW*M<43^99iml()KL#+oM^u_ba_MT~@60Y$kb`f~iae z=3V$QUi9GfiZop*AeBs$rONqKyWIVHyox0XHHskRfm`e-Exw(*IRz@(yS*4N%CjqP z`CcTK5y3ggOAJDGqCV-eOYjA7M*!|xnap#kmV4`XeSG?%y(Uy=--M&|@aqwT4n4yKkc4dB z#Uh82IZ8!u%r^cQk#>rghz<#UHOo5bEY)y9$M=HgZD>fQOKmL`-SW@KiZgcn@dj>= z#)%(R#h}1@&t#RF>;0Y`eqUZNH0uqe{o zo$orlRnl5J6$}vum6%S}Hb0%J45j*7-ygB9L|)K{v8ZJX3Ofz;u{dUxf@aOhGN!2C z8B{~$Fy3M3q}}K!8)I_Q;lKTT>17cL)$aN0%b!d1(4X9DO6Z;*+?uuWyl<@6T!Got zZvU3GYvSs>(KBx7%IRo$LSPcLqQR!&TTQ|m*83cB$MG)ZJw&(dwO>{@VcIAwT?KdQ zB5GT10at{p0&K1Y*>MnpIIr=s1?@R)BG@};Ok{`36~{|X%>!6XkPR_ARx2i0V0O*FllEa(f_bN za>K(T6@efc<)TtZRl)y9 zD~psPlnyIG$f^CFLCE$XHi_X%=%Ut0P5U2w99r4zsW5!fI$o)8XO=NLD6(O_+}bUR zDHQLmd$w=U@$tA6B6>h_2+Vq?f$6#9^-YqQ0mTW9-Cny*_jgD$k}lbL>eQ>N?24!@ zV9F#YCe%Jx|NIljRb;yckq+(AQS)vI`p>TJ zOw68cKS8;|mv{EG;s#y_J5QG5z6z(OE@AdZl{$#`r-(MrM`W0d%dTH9MJaT%o#`|CWNDi>8_e~%KJv>MY+XK8*jnL!Mzm_yLH^MX&Qe!C zwl0c?#?FSsJ2t{j0X+oFXgv09!KohTb^KS~qPJFm`m(zFXVs%sJRj%^aE~|5I1g`Q zA`?eTuiY8&q|4B)`IEnuf8G;1={~EZr7lwc%m|`AQgj8~F*7YmhfkNP>Ben@*?yTK z6c2|5NBPIwL!4qK8H#YnhD;~if0T_@cf`gyRAW7+lMxDO1Hug?bS84Dt^q`}J{+)f zRVfYY>Y4WnLJ0ewurb=OKP!$qZE^d2tbj@h=!agh7Hdb{OFa`17NB5HN1>Ka)`CH3PMNl6;z%S(~Tm~BDcqw#a@=B-ID?%Ju9S0U}5 ze*|5SnAjgtg6!DK4eKvqj_>6ADKrsCh229KO?bJm`rWJ(=y>5?nYB!Q{2Gi@lNrZtIN2>(W48a&=PSTcxt@O*YGtNa#S>PcrL@BRl&~N~tGlTo7V~vb#K{!0$%^v{(JiwN~eE12~@Q!+&&~ zQxRq;RnuA!)b@OJN%{BNal+qe&M|u#QYITYql-t4&ifWJ2Lrj2Ia2pgBCkY{5z42T zD$Q)&G%5EUkAITe1T$CXUX@Jl(x}Pn4Dk|K54h(d{{B<_0LhvclcZ^Yy~X(FgQ2{K z^qJkMuTQ3tnJT?=@-oc~7`!l29K+;qxC)&?)u|?Ro^Z3t z0OqaTbs7a8sm&-uFdxb$7PGrTur5I=yym=TNinLo@6Onx_`&li^}pFTV!DMt`$r$Z zUMZy3`MIv|-Hru@$68vT#cgs^Nm$CSg#t>v2Qnv4cvaLc6G+xWR;RxJN*uHhS|LMzGfvM=4 z@C}jVKr884VCZS3yGIj7sMDhFE|)nPpjq*uD`?Tk^bqqC@wW9(XxrYtlx8usnxKkI zbcf_ySA0#UtNzu+CWhlu9BT($Cz@n`O__kp);liJ!Hqj)iW1H;F*K^!?()pnyPe}6 z9xJ^D!_QBmyN&#?vhXl{(nYc!&7G~L;9Ht1$sR7(u=eZfj&6z~kM!E+vibCWnWYEO$M~+Oc}Pv3Poo zvmSGgm1D@pxV*y$kwU0fXPK4Wi__;1sJm!&UwxH*RzV0}Nx9w15}JQ;vBjBxcxA7R z-*&aXLe{%;0HzHBckO+M8qTcKrh=?FR#7LY>xK?vPMs(n0x%La5|5HH(k_ibVn)05 zM8GUYn3bm8&BQ!33(Z-_v(p={3~owcF@jqAcGY*V*LkU1^M`1w(u%})Oqo!gEIBeN zT*QRP{kE zE4|&El@s62JUP%~<^9t+AjeKikXtJ{oo;IRaBHI7gX;mQ(Lt&^>tec2F^Mjxo}uZ| z-j}=dsNGvdEch66+}BsP{y08be4u{&P38T!HasrO#+;z~vE!l&b7izyJCY{cGg-|@ z$<{jSXPxRYLb}vX)%$ljCYvW;Ta~I^keb?cWb|x0j_*bJHG-R5wlY8msu9)a3rxMb zUA?p=vSThI%rGG6^0Y)vJ*t^rmIu=)xbjf+P|pczR{gDX`q$EKvmGU`3gN37gEGhW zVuIF)eAw#LfVX{Q1kTUHa^bH{f4Ga4yq6o6Swu2c=9Ua)N2?wzZF zg7QK7qL`IIL^HGfKPpqXxp`CLtUKls&W2$j=Sh@u`Ezs&LVFz*lnWE_El^(yeLdsNO@bNf!2U?vJQA z)oY!3$Eglkw=a*q<6p9^s5&pU3auMEm7#ajm9{0dcv8)NA__MzwsJjEnPzI)MCz3u z>%La*>C;v`_x36O9|DP_b*$97D0&vKn|H7%+F5#is}uu^E5c+L6)tFMC0qOU3-=3O zi{54cqsyJz!U9Yd|6eZGZik0;tkhX`AumKiNH>fBOf6SUX`=Zae*S)*|urK9`s#s@ytw#qBNFC!nHPTGotwSMgTI=LYde&|i zci*=`aV_70GYcisPsQIm^mvmEH1+$|Abd%_r>YShY<|IINhiU1TA1}Won)7qJ*4q5 zKCq0$c!%@mQY-JI`K1;FtdGAAA|X~QX=Jq9U_eYVPTvzAV&;U0c=iV)O9&LGzjd!F zon?MFsO|**!9cMI+8i4?=J8+~Ks5^JEZRFHRa^Atoc}BvX}emG;&-PZ%{(=U9oIA! za-K;S4ml=?RvAH8h!~#S+PeVcuV2CAS>~7jtRI81^?dD(Y0JD5+5cdCG3U}-c^S{w zKcPMNko69suM&&v9s-{pJ%>XMQ77`>roX{WSw@Liu3UURyZQptXWfz@?ykB z3T+SoQ8;|sR7Po-87-HX2fXJ?ALKQ%Z#Z4QBvP}H^u(sq0sKF(GsG0!W16nb>_??me zdB{SvNy3u2RS_Xpc-7p#qy8fc_1z$wfIPIW+Mp4fW&9M8^D7T%ILH*YU><2Kx*0UdF0$BoWBW$UA?+pr0 z%48Wo8b?P>fI~h77^D}8Ye|S>LclAYmxSO4f%Z^Bg5Y^oeOJ?>7(L)F9z8%hH-ROc zDRr7aU7Edsq;7B^vV>&Rb7+5eU1NIa7l^%&Y-30y$imKW9KH!Fl^X zwm!0(B)Hb^5X@J7;rh=x@ zHBJ_oSe=v4tRLr9X*zm0)Ch=YLKE(R#Np@s%#*Vix!ZadJjb+^sXlhKq(0wUASk88 zB)fR81G0}amGD9%gbFc>wBg=aW5&V?yysrQqV9T`xE~2*z42$xz0pYm$LWF)p=$4U-F0cv zhAUhU{hnotY4skuVT?Cp$JrRv8M~OuX`chH|# zX!VhXt=;~)ee7Dsz1do8};m;+!FY_+; zPwW66|2VpK#|G!P>$B-svDeCk=H1rjbo(Ztcyo62E)d5kTP*jbW%|j}x-Fm-x`tFA(Bu_xlvchXw1`0->2l!_Aa1N8W4*uQICq7)< zKc^QI*o?SGM7-fyxyIjSq9X3WXbeIeZJ3_@rpq$X;M6$E~7)o$={FPAa7Ou{un;K-N*cuc2;u(F-}&BjF2Q9k%oR_Dl=jRT!+|Hn2h&q>+f>R&H3>1QZg| zFw@lU)=SYIciu4=LLV6|VN&fhrSOkq+jcl$RPbjUb{uMQ{AfqR80OHLo7X0>r@bEs z50J9L^OO^kL&(p8PxZ(LRdRq;CbDW0UpfQK&yPm=g8L=!k0uT%5wa(n;22wsmpO3G zZUJ%|!|?{`=FRtO#iZ;%E!Sr$yMMb4BD3DqvwYi^X$OxFK7EDP^*}iN`aV-&42N2$ zYi<4QTR{d6R!WW^cLy}sa~PCr52ilkU1h`v8bDU2$ou*{7lvn$j#i|!)n8f0F=!4D z1}3>xeqEeR03n7b&U%C9baWCM>T?zK^J1hqu5J7~QPb#l74ge-w6(WL%5RuJ_U5!i z16cJ{J z;r*pL-|P)H895C z#*e2zfpnZ-ctY}lQ+tIuP`wokYcynxnV$Xq7^Mx2!7{U{x3u>>?Xki1`viUt*_aBi z2ZYIoLREMYJ4yi~)WEx)dRx~8Q@DhgzBA_tZga4|m+#L8?* z;u7rfNW3+8%&d%aNZV>_K=I^#_9( zy14BmpTX+Sa@lTWTQI9YP3W9@O05yROfsvvw=qY_^o0=0-!4-dMO;LiTQ{~BB4v&P zH&@V#C|%^k*@&&iO&RMnAq#} zG(k$WlI|WXsG&VZQC0?=`Tfsa9#9-HzzsE1j*Te8(X6e}>k ziJ-Fnc$N6KN4c^NRwNEAG@#pXDX4SGv$!5%&=WZ_h_Q^Uw0<0G_%n$UdG>T;*!e=z zUKwvok;S-T1gnO^%e$WS=YZn|za-P~(_RZziZrH+OkO1q=Q%Rr^<80iOpE>RrESZk z*LZP#RbAdH6T@YQaTj#P5X-hw0HE9Z0g4D$IGQu9D3sy>Wt42O0qfffZhA19Bv@U6GK-2DpgU1i6xBBA5hHDPhM0`ZR03 zG(oij<(3w&G}zU2Tb2N}mmXa3%YL||L$=c2s`Bpz?9Ds}<9D9lx2$@CxlHF^t~)P2 z=|VlthKvE&wJq(`D$dc#xtoI>pC7?Pammox5Y1LH<$AP>Ul)jt&K~P=&NMMjE@`R` zp9-rdvz$;X*wZZkYDpi#T+UF^Um*3|br+chr`%4ZjADo%&Htq!r)WVW9LU%~LKh?G z=TOjm!wIms*p$?()>{CdbG{&di+99foZR0Hd>qv{)=6>vL|EUl6ie|IPMOjPi11se zWQP*qNmb?}J%C@7DB%2yNfJ>=ui12~Yzl0rl_ zp|*fTwsy4w@%9SkOVV^Jv;L+av*NI}_IsO|QwnbQ<-i6#XmPM&n>O7xT zG6RFtmWZ2;pR3CjfV}JYtUZj%t!WrOa$a@xG2wrsrC4VqC*oH&@`ScMmYQW$9*4lE z&I4V|(AMsaVfxI5s`^n(v8wp$a{$^c@E#aLxf1w<f766kUue)S z$Xnz=qsPKF*z~mH_TPTS1=JVUGJ@m^2-M;B0t=!ij6uAgR5E>pv1|lQrxi|;J%FfL zS{xw4+hwiyi@OK~zq`00RcW?$0F|4}9By$}CrCbypP_|*H=K+z!htBOBauvV zUzAc{a7d30+*q#*U9QRDOr!#JA(?$PjG~bpfcA#13Q%jXuhZ=XscTMV-sLYyysQw@ z_2e&&sTqHJ7<38A72-(nj|pq;`iuE>r~ktDJ(oEs)cpvHGUrh!*Lfy9&Q0;;OLl9o zHGw2cq3p$pP8KZj@)Nq9$|g*=W2M>2URzAA81rMoMDoOw0Wqpt_de#+G7MY#?4Kl= zyj0bzX){zI+7iO;HW3LvB2b2$K!(IFfn1c~43HftN&&0r2@TbQasqQ{MZ%>v-tXmvmoe+mW+79#KqYOo))P<+HgN&BsK3@{5Q-5~ z9Bz&SHAJcG8@A*dPZH%r`{e=h)7lgMpZ`j}V?zqIq(MC){lIy%`!H2$>B)}e4^@S9 zHKG23KCTMRDwDR#XnPP&lyNW#I}!2uPd2E`d|1p!`S#lx=aRHOc_}JiKYHo`adG_i zaZe^>w47c_=8%C6;b7ChabTg7DPO`h$)zW^344>8Ix8q@3gg++|J6qypCAz{gKI8F zmoZ{W(SYMe{ZIm`AH4Rz6m7B*UTGN|b|JcTfVQ+@$EP=5Mq-F$XS#)O3 zTY5jMMLZb;FRP~r-JJO32#N-MqMQhYOKsy+w7qP>|2K!5a~pKDnHvVLwy;0D;r+;( zlZpoj=i^|R@u#Ro=t72&atLAsWnO2Eq3Y$V>arrdRvN$<|Ghm z7NVAnMr83co;kwDat6DYfLZ&*O<9uKHsmL(53=BX=$XcXkd-vJZ@C5h;;N}DKDtRO zLJA-UwMZ$PusN|Z3SxHf0OQm|F8*<$5{`TFSS;_b>>yzkl+}231NW?UZ|XWRDq&lg z`{~o#0V0iHtB}+>i95~kVQu|9%J6SCfl#lAXnSEenrpH2S=wU~w8grSpv{+yf5ud( zngO=4%V5jLTgCETqw*jzPe3;~FXZ-#UN;O*sTeyF14M(?ZxN{i%BULFMg6E4$IPGl z|7CPGIYxPQF}x0}#=sNZ8|_@BPKn zCZF(3-JSbuL+5?>1`dlbeW6x?GLH|2RR2nM;z6X3W2oi8ds%oZ=w%$6g*7soT8bCD z5FVo_bS;ftdmilR-x6ZNH34!Eme}RLdKZ4R26@;-mK5^?C{Rw7^DY-In1v0BDiQH> z;)e8sge2S!nDQCF{WnUM^ntK!F!HhFyT{vzobM~sbLj(&hHipIVGnr|X`uu}q4+&S z#E=)@WPfv+22^`ya%@*By+Ewwog7jSK(SEu|2;Ri0#%agL~TaGl8Pi8XC%5J{8K;m zhp`TennHCeQ2)G(jl1X^?Q#dO)m#I!wqHYjY za9sIVd_JD}+tmGPodA;pd0r%2Tm?MB;otr&;zaLF{fA$`uzWFI#pf8B33f8h3)g`a z`*EcSW;S{9E8g_0pikQZBy$(6Yw;-~8`ZYe>DM;@^kO<#=h9O*{SmeW?2n#>>fXQc z$&abZ(nlj5mO%5cT&~ESAS}cL2b*k7M?z}gQ~^J2%X$aaI&K=RtjV40h*)ciEUn3# zh&GYe+-s=hK~r%uVXjW%X&_P!MXLpwzWq+1p#JgOPHV+PROy4P-ulc{SuNL5<~$2Q zph>ent~2N#vN3dniEpMzr!#m8QjjdhEvQZ1g77-@a_pKLP=)|S9-qlieKrb}fPeqH z0Evveyau7^+tGYtH(3VMf`v0Yj%Ow-`EHdFD-x$)rpWVi54op5oBBknh}56=wqpX6 z3r!I5FFn@rBNh=Dh)5Thn zC&<*&_Pwgcc%P$F$B4s@--*&>q`i0Xc2)aQHpOvjpTCnsM{zgG3E6UnuPej7KEv3D zr;PoJDmEF|;VAFULYHej-cET9mi$)JycnygWf_Ym@-PG&j#df~ru@%vz>_vZPi3sv z(qI;s^tkK;F~HrK*gs@|8f2X-7RG1|d~UWzcDV;s>5ack?y4@V8c8y!+V_A`IE^Ob zwqO4Cp8!y6I8^7;|AJ(c;TE3&GUhmqj`It_P)S0gu=G`PqRXK!RL!DWuzvkhOJfzQ zc*m>O<-^Z1sY-d)X)R?`+XvcpRg18K=YIPdDF0|RX zIj>JU`*))c?1s|;)l+kHeQ`4r(hzWwmmK2^Zg)Xg;VKWvWvR9Ja6)5_^I@#wF`e;% zK}7rz>W5g7nyGO2x*}7AdPZkS2Evbs&M}z%QRv~XU_YyMdpNOkd-h; zadX0-?p1%D)dI5#g=RDv&=pEpP!XgHiIIXE$yg_-BzYx-?a|v&*g3dW)l^$@h*Mf# zCi%<0cC6M;*;v!i2iT1X$o^&e7LjHocDh-qpKTL5hZiuwhak?J+GIM5AwGlc)iHSX zq3H???3(Z@JCZJ#UvmDS47F7Y?~QC^;Rz68bZveaH0FJ3aLoQ-7Ey#9TB)74y3=>} zSuMNBl{XI0I+`+buU?imXhrlG791 z2jVNXF2KQ@X50c=_JWFtu7uWu3r~Q69eHm*$hn2X=0s=n;fIr??qi*rTTCW|Cqok< zbUpZ6n+SS$bEO{8>)kfYBNXQDT|&B9Z{vI)yZ93sbJD) zta+;Xb2Kxv@=tJo;KFEV=-1jVbu&0)?$bMC^WpV zHF{d0FB8+V%ZPe(ZK|Pl%l^*X;xi$e(GBOcvQaeM2*6k>Dd4ibMw$Z-#a2ctS%3n! z^kAmB`ge#$HoTJtE__iNqD9koFgl-*vE|l>koBwdEVlmkK!7eYh(}0g4Z%3n0cYs_ zo{O1oJ*ao}*U4V!UihQn$7qJ9isCxIw~(9&Mf_G@w>^vIhdS5jt5bm;x!o>AzEU65 zekhQiVP8=z89)u>W?A*dHP7MV8henQc%{^7GCzZc6pm6dWEqB@Rxq84-k)1!)4{YJ z0R`$7k&yk2;%#V!^#b1^W@Zw1{HoTG4M$x)p~oDo=Iw+cL>HAW zFi=Tf)DutH>za~RoMYXu@$=l*y5hlM57?0FTT%yZy)aa^`m%2Utr2v%{iWGZ<7pHa z6@Rnqm$-i&+#fW|z>e~rM)B2uOwV1`)m2}%( zIbLys{=aY1ID@!pH{Yr;QWw&CWBkru+` zR8iD8@g+z;uskNcHT% z=(Uo;KB-+U@8SOI8Jidx$@8}Gzoy;{EHW}Euk#X957Wt*XIt%_OSj(jo&R%iNu*9~ zZprehuCyrc9}S|FLOi^`E%lE4fkj;k-ey(w!|rRsj^E4^cG#3m-^yUBL~aYc*p*pz zq!;6HqAFBcp_M=_BNOka8Z8o*`Xx*JsF7~ri}wMK5T&_Yb&)}{&I6m8#H$7BSNaxH zBVCM=B#IQ}bQ^;ph_IfA3C_i;CTlYt)~gqVfd@q-_D9H95vYf#le7QHLIZvErQR#6 zUmQ;~uZ*&d4l-KN63x9#eabbvATR3AOg#Coqee#@->hfryPQ^=`KbT{M@E`^!Z!_8 zG_7QwZ(S1{x*c=0)m@C3&H~RpbeS&{KifQ^$yTn~vnDK0oO$Q1vsin_lU*ZT1hOr4 zs1hoI0&4wX;$Dvf~Lueo4n54XZKhNuN0UlD-(z$!AHz(O)ex5ggZP^lZ zK7ru~C4JqF;A7BGc-0-xs1j=z+mZ9?qVap#)$TG!{dT4#cIH=po3>ZKBvM_kylwc{ z>${pFr}{sA9LQ+v*!$mzSKc%Sk3ik|S;|Xwvrf|Iss9ib9SptgWQhK=ZQ8UR(J((iOvVdUtR)3VSH z>0TaL*?{iD!@n5cHC${UV0)2$Sjc;Bp4yGnCXe2%x`sZ1g4&bKkca<}Ki4WQn#yK% zY@6NOwMt>`?Qwls5(FjEkRqBV%00D8VTbHsT<7)R-IBLA#h39UGWFb|qR9RFv6`Fw zsM;5*Z#ZTdr;K%eRs8uK=+xCRnhWl{e&*x6G^L_I=h-2a|L54S)yaE**k8+EMI+B+ zt9RpDR8Zid_LweB1;MHwZOi=iR!f8p1I_YaUCJfW9)@G z%hs(1)GFVd$7}(BVf!9AR*RqV6e8EmW zT?u@qNwSzy;+6?##mchV693&jp7w=QZ%PC%qbT?0R1MgC!oQNVOCGNkJP|bt<{e_J z`*u4otwJsp5d)hwg#4kN&r-B~K{z3&la@c<&aSD$#zVXJ(4oJXiyDDZP-vyR-g8K~ z_Sx-3?iIhqWvNL^7c#wEWVC_TcwZ0xq*cRxt38rK&`hjYylg^S7m?#XH<6etYuO)l z5zsbNmsXgmW}>AAk-IBw&pJ<=B<>Xxa;@a6hdv-}Y2TzUH)ccUSSEUEgO%!m)0tC6 zXdT^*0S4ooSUW}B#(>J~qL0m;y>J7#u)b6EDv2{_*U2{r$?tZv*U0U;u4PS%Q7}(A7rdT5!$?ehEFR_s~X=wr&@Ve z1CYfKbw-H3R4k@km@T3Lu`qh1#=%aAi=wJ;HD1^-CacIkf-qHTE+rIfPZ#UP>=gI5 zP>YCO%HHut%JuWO*%t@?pVHnv9LhBQAAi*9Fe3d)GYOT7sBx-flnLM0J#6Fixvt;uy1v(U|7owmGtYD1 z_jBLx!|NcZ3PHS4spKd#sb2$=;*&F8?v$Xdy>Ds$JOEy(yp_O&Xn$KDUCStZ-A)=I zm9s)?M+!5J$C(G2gCtm+y{WI77X7-@1KNe;-CpHV`>2jd|95Eqy6>$~gsC)J2K>do zj!O^#Xw0)zTo?S~j*4QSI5^B)(q;cE^*lw=M z#QRrAZg(>>B4A}7a5wEt(D5fSw!{Jmw3?TJ*z?sW($V6rSNpv4I%i+lhQTWc>FR?g zt$=Kwpb3inDHcII-LDxf+}!pR&ETM_z05#irTZYjHOaix&uF5?BBtfs>#ba~sQ=xv z%=7h`cI(z;E`xf3LJVv8vh?X^g=hJj`f46GO2~foc(^w9i~+&y4HvPYOvqooHH1%u zK8Kr#fAZ&dy6r2dp%a4nm~kW4!<5f)974@z3GEz#P4!-PMP+OMUW6Honn+}nk=Hh- z7tosvFsNJId~uE{-eUmOm2l|*MjDrZ@yPjHVEnDKE%L7G^ zs59TyZ{vn6DQ(HlY#lNlgd3>_-#gjz6A(6?!!jayUr3u!ya|^zy=5o^r1vzDAE=R# zS7<3neN&UR(SM^W(9R(Z@G3zEWLGI6W%1eCdr{1Mk!4?L?GH7na@?BrwV;l|n8tqS zi^k=hK_{<)@d=&6%PZ2086m(Xd6gJRL#!d_?#j%oiEt5k;gWGHgCJJxBv8?bd?`E3SUfLuY)hcazTFyubM5Nh#KutR@YI|1K z0~~wXt_p@oF$#E>{jv|+o(byE%4&V7x2oL)HH$7Sr3C%_VBXV&<5Rnqo}zidPkH!$Eg`95Zex-n@urukGDA|?}pXO?8{pIwf@#eyv@X_Ao@uR zV>*i_w=;jg>cc%$8NF=+=a|yM3xQLNI!9LW`?t*d_GOEW7`ivHuUtqIDIIU8#y5LX zt&!>2WrYmF+#4n3OQ`B-?ABIyVrT7rd8Y=zrSD&$=CDRYH3R8!8**6h`4c73T|$*C zOuRdHPQ>1E$wQ%S77WrW0B3&?WeyJA}aH|yHldu z=Y#2c?)HF8)R>Xq;c=|ehIECAa`D7m@=cEX%s|LtAbc zb8w@K4@y+@>a`azMwasDxXk-d_`TzOGa0NruO7NAEZ9&ZIRjjsAE~FRe^F@CSxTJR zW<#{0Anc_4#evK9;fyc))g&AG37fB(lK;VIrj?-gucW#uH>ak6-WNm{dtS8_GyHEs zm3-}~MrG#TTPGhooT9yR5J=_B>9tIW$#v-d86<_yk1_mv@H(?=vR1dl8BnIl1}dNl<;E<65{A{U%( zsIEQ6ZeJ@rX<9AsN!^1Ou#>coef49PpE!B440N^8XrMJA_jNXwRTaj}h2&##wq4SU zpQ+W8+!QJ6yZha4L#!T`(ggR^QWyg;Bdt%Nvy${L+O#g4W!b_@(aFcBwVfFRdTEy= zY>K2XfLub``0_r=KAv}C%n{1`>y}hG!!S467h&08K>q6~aNLk`FJiwT?`TVkRR8KmGno-Qiwrzh6$yT5-5hnI`q~;V0=X0Ng0KuJ;>Ws0x6Mx_Vv^D$V$2 zNWN5nr)xjHm1xJ9-z2TfXSp7Ba~q@h0|fmJY}U@$RW7^wjdR^?i0Asr%qpO#aB!okxJD;2rEosJ{6AU_Oj3t}Vup0=#kdpQ@U%_XK zMZ^0N5zPx$wt3P{#NE+TR3mWdxbF$8W6|PeXEu;yKy!bmvw$jVtII3EBH$l7&P&e= zaDzpQIb*BtRo5pV49yb8WYrtkI}7}6AvL9PWrDFqx_Rc6*;;;C4L5iHqXEGMQugWM z0bcpyQ)+zjYGdr(D+%a;pxg2w;8qqaq1^;>=lD9JJM2ePP6?(g-BteN-3HZIfB`!Q(0RfXjm=ON|Iqy6wD``_0n;Y+fbc z-r3+`u6>T3;#}-Hpil1xf$OFgSOj3VS|r2jmiCpd!o(Ak`_OeCDo-5;t!Sg$7>=_V z(f%3NYNPYOUm5eb(~}FNq{BGKqu1;<_S`a|0?AKP7mZ${HfW2QLttPx8nKw@`SD-1{QaG67G_Hli81GKm zO#;2ikY17-0(1s%1+fJzQ%k=ON$$EB1q5)}z5Rf?6h+vw{G3mGQ1_Z=CK)bSCs6wy zLW-PQdgbN(8#<}c`swqRl=|!)$ohT2(mpG#orh*}N7&aTUpIO{q z2FPY-|J*hE_lEVS_u57Ez9V-sgA>gDm8jyZY0Bcf1>t)HwiSD>d;Dz6f+utfPD@nNhW1^Iuw{iZHpUj- zg!63T?dxlAGJM;xCUUvIQ?vL75 z>-2n-gPy?{zfeSdS)Y9Ve9G6EL}Wod)3v|;#!|V z*WU0VxDFytU`Y8aQ?yAoD= z=Px=rG@oeZzduSpZstu&xqRzpQ0P<+bXy;kdGV##SnZHW0*6Bil1G;ZWx^BdrMtn< z;M4uhwC)<$n?SK1>DEj=@enWPf52T5Vh zG;5Zb;&yDZ0-^E1!u;e@m9Of0vNMjd4(0;TTYIz)SR~+H8u?k=I788QsD3m^TBe%~ z9HAQz)x`H4D)ZK&WAp@zJD4HNW@FFp@)Vq2#4)Zg5_shzhG<&iW$5$yD{q^A%`;o{stWgKBs|~r?yf=$g&8mDlzwMBuz{GySIC^TR~&yg!*(E{@Q)a z)i)^4TJVhfk;w54j?)n4)ZyS}9C1dk3#<`o;cz|P%6=2j$8GRj4w+IX=@fYsdA^`! z_C)b#UH{Oq3bLX^sgsOE&NF~ZiL{_FM0isK**^p>)+ zk{@B!37V^b@gv&QSDdAh%z-@@VJa|3`8Fsr>Fh!2L>#xs6i$w(3t}1Im*e&kLXCCT z%#?ti!wmWWu6LkktKzI3HCzI(Mr6(r-rap*PE3Ene2y^k1ZV{Z5HNxv-xaq{wiq|J z{O91&9F+apZ-^z7x6!>jjmp!7sG&pQpaO!?v`ulA6y|wUfSbfX(Z7u#oo8?QTs_yG z6Wmdk3L4j>F^}}#SWL;itg(j(0&7srF`O3n6afKod*a5aR$@fwCr(373lIP4XY5C7 zeU3ahMRew5OtY|^NNb(Xep9?3qWkzbT=)R36Y+6UqX*(KjKfml>>3(atd+o8#p}VZce6?u14No`2jJ zCc_{==Jdm8xss?wJq;V5kV*E|HT0|4A z*MfR{4LdBz01l(Xh9yw_XCQj%`W29ZTOmi#q_$)nymn7R)M#HAxGwknR$zQ~j7;j2 z6KH=ot}8}&V}A)H+r{3A@sS@ftN2~{sTd12cvaE|9kvQdLD=d+!vBs(jXd-yFA`$E ze;g6cngWJvLm`g2UZl#6nzqEe4B1mxxQEyL(B(;NDbS&H97i6$H4M^S-%tr8rGj$U z-?+UvX|@E>3&}@M%~8EIOoVRJ7aV|sUbj{0*_RVTJ(E%eS5O)mt=2FP3r;xW`tle< z3xbY$RS!s^LB$#v@3>UQADa58EQp$9@Imk_UZZdpW$0@V;LnP(#c4w=GQ(NdzQWmQ zUz%*aD)S+suw}g$td^0`RIs3lI14=w6Ol4XpHRJ z_dZQ!F}aINTTP(Kt1{mV>@auOXHUC3aAxz4=J7grn0KWDAqs-g{W2op{=2gLTr-m8 zG)mUB?uP}KZfch1?vg2YGoi(=?k$pJ?hCli0&|oI-HhNdB#lYa7}=%I%#5DOA}Cf; zKhi)9lG;U_{erBu(wO>bZivf$dE;dVnYX0U8Z!$|Gm1di_bCw}V0_Z!|B`Uaz7OK! zw_5VenQg>njnw>jW~&h4n3q`9I}Z{6GDT0HqUS^il?b{E3@|1}Dt*ro#qn(Q{%$wz!LQrr?nD43q3`?Nu7Vzxi9hEBn!RdVtT9t(pp_+zOIx?CxO7AknaPfkrY#mwiRHQyr6dah+y0jfCEX(B>i_seQILgEg zRjt>8$zDHl@QF~V=C*>@D{^!bYR7WBPGB@>l>=&cE;&t*nqUGa{YM-c>JJ&N9}*cZ zT{rahq==3`z)G)%!tsh$3pcX(TW3eUN4V2N!VR)vac-2+E8!L!DF&cdR)_(h3O%@% zuQ1}*Axn7FK1zTQCqiY@<$oUjBCX>93r`VVilV}Vy*G+7dh-AJqwsoEn>u?!{O2F+ zTmhhRq?B;0eB6ObW*cl$m2SfGj^Do%UFGB)56Hs;wVWjEmr}nk*>)v6L>yg8FnM)^ zwG*1GiLC{ZopZ;Rz$aQ`H|*;~Nr>qURDUee&YB36HmbK=(Q5Fw&TfXxyZUaJ6|Ew2 z!!9rH+$72OYz?m@o6m-o<3q#84BVq7X*~3ZNZo|M&`H*v@Ao-jUX@zfR#?TZV$?ku zIsp1!&e50G{+dW!qxcu0bQk}-aKNU2p3Isfv(n+1M##`Tl`Es0M-DbH6L0bPTF!G; zIq$?xf9#w{$shiSf}>_MX9awyUf{Il)@0Ver9`6vq7u}*#+U0bA1SQU8p?DGqW5=g zdp26ql{`H)dtY?3_gn3N?MUbUzU0*`w9Z_e4kkf!5moOs_P#KZXp30WjkvJ0Owaet z|GxFqy%q(a1y!I%bGeJ4*MBnu(bztB9!!p6#Hl>t5gw}N_>h5D!Vp#R%U#&9e2cj# zv2^92!JyeIB70%XfZ(b@sJ3>s_=ee~Ut~VL3uR|Qd{T!*^43+HZ58tCi(ZMl*yfj|v@?4<$h>9NQfJ?|&3({Q_kbVtzzy<5VV493hgC z%F6;1g`ev{!lzl3sSwvH;?P0(c9<#Ra=55zWf%vy9D}|=Eb-jsQ=!Z;FZ;&Q{D5r&8pF50G*UE*ck(7`xOa9VfR-7^pco_$Bhl+qd9K1l?qs^bXIP@1U`+{7-aOr)4XR466ifmBxB zSMm*E!FW^gW2mRHGttUvK1=-AXO9o%j#+osM9!O3*uDes1TgY{n>PvDQ_={tt>};8 z-gU#fGm3@+h^d9sG|F@gnb5Qj!DR(h+_zwtHbnQV0`RCUe@~dY*O_?ieMjC-m;z&; zTo*J^xSP-2g8kN+kkoV0X=(h5eZn27+*Dw(IU^dyg1xpO90L7YV&0wn7l-#2=+FbW zo-!g8FNir&{vUkKGOr@G*)hN6I#tbomSz7J>fy|>1c8OFMbHB}(B=SexsI zt}40t$i09)d|N)5fa^zvILT{mB)uL`h9x`1v{8MRp9hW|7QmMnQD%M`6o-45`5 z=!m%e2=_iCn-lymVPlNhcq9mYBl#8{n?qz{4E`t9zZh75GZV=VwgDd(Io+GS%qIUF z0R7;*{g)Sn{Q(dsOc%MXg3%evRJPXxEu*iwHEuo9dmVq_L)QYB4x93P727EoI62`P zqZ1%$g((G0-$A%tL~ebIX(Tj^QI}!zCVc!YbFdJS@<>Ojhy$cG%3=Ql-H(j1xf66< z;EjBd6A3FL;|OztTT~Z32qtmGrPaWlODy;qIUFKGD8RcJ6KMNq;n6v%9+hBd&BG)w zUR{{#9@)%p#w%mOuUJ8Te@t$*4M25*{*;c+g>D9Zct$wAlW=!THZYR-c*dBI$FrNc zVBL(pUC!x7k3OVvL@O6vmH^>bn_hM3IzW1n(x#VDS%K;fs!QX9>)&W?%HUDrGU6v3 zdZsN<+=T7ak`j#HE*|sSz5qcCzBcAhg(+hEnEHb0DWsMJ9xIIuba`a3aPC1X7=*mm zzq2=egHj^yTW_gwAb(urSy^Cu#}ND@W$J>(fZCT065fy(N&6SE?SgY@r;9oT~JYZ;w%U_1*`y* zR3<)dhuoPei1Jt^zYrqT9t0RjazcI|;q@N`pa5HK+&(}-j5N@3$?4g)l1OQ(6rtKe z>T%=_9GoCwQWyMo5ttT4)OwSv*R;@b2{YWN3n`G7lKTGl_gFjVevm!(zPLGGSJxBs zuuH-WnJ0H|Ca4icu!SS(_ER$KKqkzd_!RH*lL!wB9D)bjy#KV%hVcY}8Sg1MIlB#8 zR&tvojWztEeO<*Lr?qyWnYzapX(kC9^VA!GKdc}gwsTgy@3n+;An~b3(#w?=i^OhD z?)#jgKTQ5it3oH4i%t0P{V2)bE)t1aqM}F+?L9b5c|CoID!Q~#X0k5MWcO7kCYYTDFQ5l8u;BRjyGK!vPh?=I41A|1# z(B2oANww*V2Z0T){Bei40{MV*R|mOt4xJ#0yR_8Y0cqf^J$u+KkPnorAvx%lZ`Gdg z-+Wp#2Z<7mno;?s)m5`6%DduJ%=s10nNK=R%*VebgspX3S@F!ilH5fPxlomIFgK&u z3?q7v3p)0C?$UEZ==WA$C$Ha#NXBO_28nhH*W+9^2{_aDL(re} z1w={9Z#iCs2kmhJG-Cg9a0yr9 zdKDrRS$3F*rr@=NnxkX{rC0KHJ(hh^3Y4Mz2uPeewMWo#U;#X{H{7goy-fLezbgi%o4UY#?7lfKt#ome1_|T$d@{Pz$6v2<<;XEbZx4tI{LM*={3e>y z*#X?t8=Y0@?l-aT32c(_#)R*Jpq0xe@_~oo6$)PuF_JKx?Ud{&1Sw1&1i0u0{<}}F zU*Yg%Izo-mxY0*Rz@rc~67|UaDB5Dj@zVsVIcDuawXQkw(xcb=f*b+pfEut5zd?gw zXm@jmK&o_B=(>@+riH=Fj+6*bBqZ{;K&0-eFpMSTeu*_Wa~ghbz`C)ET#M4=uU*6o zw^A5}xkR@$_C#&dc0skLeQzc$;P&q>>pxZU-9!C5O8Bawa{$gyvKIQ zR&7NeC5G4)TJL)-NqV&_LcafNM~YMxh)uiDYyV=%euIZYgfv7-pCh|z(q_;$h+M)d z^fIksr@23wP%Vl7i-1W?IN+$(S(I59%QFuTokHA+dlxVaAJKehWy+Lt~8t)cficHNw#X?XzHuflPByCtTW z3+&1k!bN)e3FxxUPL+g~ZnE@RQKBs>80bX3(~bCOf+pb(#ji~QeG6K4iO;q zO{HmFOp}hh52^c`};jWvb2HPuL@Q-yLnsDUBvFnG0+;(5D0wWWQj%m{d~d= zAQc*xA3%wJ%@RPN-61G!dv|5vw@>!%7Ez_?M(KGT_dXweRf^W$-eI?|fuy*1FpcbP zQ{QP$2vS~KwD;=i2!m_6I2p((!BaI(w|tAH^182A{s`y}uvxtA%HF@4NbTjHUo>;b zXgXYp*zso$d~Eihe9v<&2xjg_72-wbi<=LTWyZJ!aG0a3x;5969j zAKSarKV0m)b|eD!JmLT8wqf6*-{Q>;ORu)RxmS80OxRG%X9q$fp^Wg z**2_<&t2%F<|>@~|KK~AbsXx~v|A+5bU$c<3-ndazb_{ke--$+&76wncj*>k2{*yR!Pis!hHQ z>0VgBuLFrOpLMgwg#?NzJ12;o0CQLMiEIeGGR_&Nv3{XhHT}Kc*AF$7+U9UKw>yDY zKx6j;*pKZJ2Knm~rk~59%ZSdL=MkuyttIeuF%>nVs|;B3IYa*@^lnMaV?L4(UEDu= zW*7$@xW?g#Su2WTwoA>+WoDLj*#-4QzpBSNj9VepSK( z7gb4fY+&x~nE5pADhn{wrpSzZpC5gVC~~~2!l|s!yXK~;Z0_6Te5E+(%blpFn*Hhv zVY{$QxKqm2BFf*ua(|!hTw=pz+=sLbE!~XoGtF@^vudL^8zR~mD6v_~_NZQDy2d;+q39PeXw z!QoE*(-ht{&8+`FYQxtECjlFvyFESznI zm(`kv7#pWSl^&T$vf}t*t9N)igUK7rwrV?#>vYV@YFS* zvNa-^eosoevEbyPr@~B%1Gqcqdz1@vaL*Sgb2LORwej23*N9W9Q9rf2M`Q1coGw>5kD8cd8Xlz^ zM?TBhGIL6}LdTuklUeV21AUa3aS;!4KzaQvb1VH`c*tCv`i6`6mv?C|ZWO+L}9nY4L9 zVCXN8gj+Wk+)%oPX|-O&jcBu_lHVi_`$Sucnuo2inYuc7P0X$JR~=w4G5v#Hg?|7~@5Fyu{H^6%Hm%*(9& zlheE;%p+`l(4Ct*9~?f*>KiB*2uTJj2VIPpBrv2#s}J{}x0wvF^Uk!LneAtjN*5{1 zCW~A9jF1@ywV;Qq`GTLe=P#L^ANrC&X%e>4nI_i&hxC&$Wj8VdZmrKU+rhS3cbmq` zPmb(n#Rgh0*gosV|NH~}Yn)(X3)AnMsy#c};~Aptw5F+&ni*0jvxT7w9g+gcCda0K zEVf`8;v9Ij7fO4<=~mS#)8^9uCOVQ@85TgnBdQxEJckFulVVj(fu--6C7dAN!hLAX zbvBol&OcagtD~S%^kQL87%~JGVRHN>4Bg+0J|fE6q3dIR7Hz`=k$GNFw(CAQUT-zy zf!=RFv)?lYDBob0LhGCcl>eBb|C4A?GXOjYkL*^&cPtP-M_zoR2jn;QF7kXFE{X1R z@y7r0p_t_P$6iJy03JOdpe>!&5B=7RDt zYxET*BD|AXpEh=_K1hJEL3qVuT26|DorFc!=tD0Y6d{(caa}sn$N@JWv_OeG3H`OO zJiye;a?m%szDswlV(E?#Ux$^kPhLhf#(;0zj*Jo-h(AC+m0kPg$scVvf)C`3KLc5S zZP#x{@v?|X^)n`20oeA(XWgLounJ+5PutPOxYQI=u|m=k7EQDy>ZEFEwG+kxKY}au zmaFhif5Q$Lw?bkyqbT|UFDv#df{2S)k`rXcJ@bltyg}g=Zet$l$MCh6!313cg8FpB19b76sPupPJ{?}t-Yzo_pbf=9E=`Zfk3VBj6dL~Dyz1T~=52qqL% zd&-tvT?JI`Duk1&z&`1e(GDOTFDFFm-P7rIIGA1AZD2O8mQ}#-zFVmk^sTxmBt#(T zBQU87?5$`+8CQuO{j5I|$jQNG5}!?-vns1<$=1>fFAr?U+)M}#!&ks%4+=yvwM&1~ zs&<^nJboQ&pRMfbe-@HDDep#aCnT~&pCxVn?O=H$mU)2z$3Vd=jzkk8xywG!@$p)= zw2(ISLU1==2Y`NE-Y0v3h{nBcp@;(G`AUOlGTwvzs7QO27+ZrtPSmekJeQv2PW8h( zTaG|KeaRKS;=%>nj?&XD0Ool;LDA;rUL=47Or>VQJTKFnx&9@>V5g9Eq#DIvPz_Pr?9gQPidmm6d%uoBc8jByg!Tfr#Q>$x<#(9a5 z%V!#hK#}W%0ngvR|2ZvEj0B$qK|0u!Aa3j1|97i2m5fYkS;6GGOOAua7qCE@3SGLN z-4G8yrk!$(QABEnypGKew%LCK+xCDN=Sl!~DL?IQTw`jQGoIv`8}CiOZA3+h@0-IPwnJ z@LP;wya1}>=I(%JnVEg+LGwgw)dBh6O?xz8c}QOYK_+x9G}a9bde1OZu`%7WV7r1V z)|Ge32APYgvC={5+}puQQN0eNoW$>hXpw`JTIq4-jc9i|j@T#3MMHg=d%m=mwGroI zH}{1h-PAcCe`F;S=48FzVB)gus_h>IW-*mT&jttKrP98KVYTDkTSNO5n(Zo^CG9HA z6)o&o#Rnmbx2AW4uVn@2`{5e3^bBs!s>TeX8#`k@#x+&qnSsp=bDzo!85whfE-y`EhO?|n7s^~JLpb65_zNgp zzDk8jZ_>n;ePmpz$w_gaS7doJrI;nY-N!hKtnJ^vC!g2_NRdDvIq5tzweIl0*PGHm zu!(nh7mX#bI0|MVF!xNBTqkN^qiAuBK68AHHnG+@m#-HI{q1Y32bkL!lIHzW>w-){ zgz{Q)N0-GKcs&sLXTJ((g^Sfacb23boq-pIw;&*mr?KzdBa>zbz5#J7d3RmdJEE)| ze!3KuFv%X+(CNU{Cd0DA)5tyRjCQ3 z$A8oeD)#m0tQk)gqb3uHl9;j^bb9yu_Jk{BWW6<6VEkZvyXE4ZMX8#p-5LR;*H2*n zr73f?AOK_1FGaVgOCca^(%{!cEVxl3m5lW32Bij9Kb~W zq+6%Eb01E6mHV|gOf0!DWM!KC-VSxPO=GlrWD zi|!p!MW~csL1=L7fN3GGje&p8HXjeQWZOy(l8^dJbDo$X2Fg*Fubv z7S4D;>iQmAP(ZwRGyM2d5Xlt5JEgyh@}{V_Xuinl)kJIeEvC0?EiN_Q2jukw}G5duVThiawzms-->G4Z$f^w$dL9HsfH1(M#D5yQN;h> zIrIWxdUW<7*||Rq6h5Tzqb)tx$3El&D<-g5MwX-R1|Pr+m)#cV|GTg4gqbngcuLH3 zcuI-IKn6S#LO2-@Cc8{y<+G1-6K5*hE^FYS%F{rR*h;P`DjF^ZTUmy|->4|P4t5m>@)aq4f& zmu?u1phEMwOjbE5f6WK}`!?VNR*4l7W;0Q#f?ur?3Csv!`x&CB8%$!r9NUp`x6-}- zPMZy>B@)YCpi{hgORom;Vh9YNvn9I+f)ST+=r?eBzQOE^*APVP()M2^LNETK#WSOo z?TF>FWwbZgZ5qzlmp@hi%dFom-#&{&baxR2i5Spdns(RHT@p25+QagH8#Z$bSd5+f zK4=gn4eiBw>vlj&3#FL!Jn%}pT+??4pzdK%QN~jj(?u`8ciYf15h@%90Hw6RRxHD= zsPMZ08yn_;C{gXm(hW+)?it{dJrJzc6`YdxftS^+43L<+*VN;9M$~Cd^25Ed_dZ^ z0yX@7HSKHJzJdvJwmqjq#CbPJst)G665TA5pA);F*A3ec1roSI7c-cg<6Bg)rb8Fv zZSXS*HJWGf;2J|N4ay#f*Eg zb3tt0)_KuvV;`H5GhnF@QI<#B%X|Rgxy+EE?@m_N+#vaFlWJIbx>Y`HWAp0GRrL0+ zi*rv@`aj>DC}|w#7c@^i=?spb+6b30&BpT;`>u1qlkW0P;)zkmaM0>V`KUImPZxF7 zH9hoad)VUA4SlcuEa)7w-hY1;_b|4g53bH@Chfib%PemKk$Q75KTTl;g0oj`pzbdH zZpmV4UR9&58L(x(FOi92Wm!IVO_aaIxL4MdK;OBRC!pnY_&&?KU*@0Cw8*6!+m%6% zqj#JOz~B@?%2Fwz*!BparR14hzV1`f>s(=cS#`b{eFsM)7DT*qy|=4l=Z0|*-)rzW z{xK-fcsus7xwp#l5+e4sYs%BbbvKg*1_Ozo^ojUqX5YF-Vq1H{$0ol7!E@d~mS^)X;<6*Sh9 zytQ-*X`R`$d{&r#g8Kv%|D4=c$8%gBo3{_hA6eZ0TRPbMfpKb@QcPTW>z;Io&cUH={<;^=q83vYDt_ z*b^`c8~G==wBnk3a%u8+T=wEE=It`5@z1n$JK1Bto0gT|%;Mc9j>=mT-J=qBSO4=% z?2TSJy@(@vTtY&ZUwaQtjPsq!+bvF+tzZ`s)z#qB&PAKwV_(Yn@H#u7fDp6~%FqiU znED;+Exm~&)Sc({efevLzP0SP`oewMAno)7xn_1q%6KYe4i?mt88-9opzXzc%N@E- z+mXP$o>9%B7dZgkwmJQYe2T6@x#gdy?6xcou4J0+Vh6C6Gx>Sk;H0vk@NPq9k2wwp zt3RLXr&hY2s<&s4OKqv0D4PHNgnTi2UN`wCGoPZgmGCK5VP=Pg&lOj%MXM3#L<8wp zu>~FI=ZAdnX?Aat30l?SpPvwWySsu(-KgK1dAqwRHf~8_>1-y7<&E{*iU3p)p$f@) z_g9#iSS2*Qxq-Ejka+{XS}TbxN@HfQ_}LbU`iA3MXMQR#g@2x#psV@MO$+mjlUR=r z0lZGIg_Mz~&n0MgX}Q!cbduIvWAirV=TCIe&@o!uSGS$qBmpyr%AZRU1)aW3L&tIh zKpa{f?XX22z0Oo@#7L&qTXa4UfQJ@2oKt|&r%d7h1_K+%@va0x4$}E$4ISr7?7GAY zFT}mC7lax?W0OkRgZB%xI~3>Q0rLkt;cTOamoyb>jrdE4GED@z{H9I%oOQwXRHm8c zrtnx-x09vIMCmV7Cr&#k7D5?`jXj|E=rf82Gz=?6DB=x3O}_}-3L-#sZ|R7JHsK46 z+{owg_#6cpv_d_YgV5i)gvW_*MBz==2!MWYOfdxda6}Olb*NAV8HD@DpUQ1t9JO5j zMG;m;?S|_PlpbE>S!QxKeA=sAQcA;2FvO^a0I z1fz}T8j>+#$}IGAsp*j5ppv#AT>_=F0`Vs}J?1#_!_EO&089=g!0&}hfMo)EgZC%L zzu&=TL=RRcq8Ub}=ua|A`l%VIjn~JyqA8dn`tVw%s-ui1RKQs8+aLg~#VKR*rz zmCkl`WVwz&xT5t<8G#-}89A7W(+y4gUnWV#xr6?&I``Fn5+v&gMrKAWlVK`0AAn+& zh))$))?T7};V0zyJCh(42NOmS>M?M{l&%siXy7)W65)yZDJ6kwD;005==bT(gS6+O z&Zr%v9Uf1G1Bp)UTpCZr_tmDWB6jX<%B_m|n@OtR&wz3yW0C+A4RtO-;TP5(OG1iy zz#%I1%V83B10yV_kNF7wOZ6GbtuHwD@XFtcHJ=LL`&RNmb$FoAlflD-2k>WafO;i5 z^gQ4Cj;e{GR4AcuQr0G*|8NeQr&+u``NsjGgMs3jlbuIFH(8LR*GL%=G1;G5E~b_E zdOch{bQT`!zQH{ysBZ6OJkWqL6WA*V_bKA>MmgyA)xj6>_4C7ms`En`3?fDP`;@BD^e=XQo`&0{G2_8kEG6^%1_F&#%DJ(`{Sad7Mr2mV*Npre zOt?GdnYML@RW2^KA4k6A7Ww*CXfWe#O_YlB1dW-1!!ekY0|3I*lT>2uWtmmnfL!zP z=Uu-RNRf$q0u4?o(i_PR5XF}@!jvo>pA*wBDzpBlp*+;nZ)dgHn(-jv<1Nj`w>|~zku)8 z-N0B*K?u8g)QF>w6Pp}3(+e{y!ZLtL)Zn7GtljVr268jCN zZ%s>s#m!wr5r`T`?l36=r}%hC@j5aYcR_KPc!fPsET>D(t@W(sn_uFZ-T z3h9Lcd5eqaLkQ*t_EnS)GgT_E$t}0xlLjnQowVGcWkVK?9#pU?**+iNHwKVc;1k0u z@}(x^M&%}zS!S78v)9`4N7+1-3E3RvFqod$g#Z8m diff --git a/tests/blockchain/__init__.py b/tests/blockchain/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/tests/blockchain/contracts/__init__.py b/tests/blockchain/contracts/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/tests/blockchain/contracts/test_deposit.py b/tests/blockchain/contracts/test_deposit.py deleted file mode 100644 index 71d9cf47..00000000 --- a/tests/blockchain/contracts/test_deposit.py +++ /dev/null @@ -1,15 +0,0 @@ -import pytest - -from tests.utils.contract_utils import check_contract -from tests.utils.regrex import HASH_REGREX, check_value_re - - -@pytest.mark.integration -def test_deposit_contract_call(deposit_contract, caplog): - check_contract( - deposit_contract, - [ - ('get_deposit_root', None, lambda response: check_value_re(HASH_REGREX, '0x' + response.hex())), - ], - caplog, - ) diff --git a/tests/blockchain/contracts/test_deposit_security_module.py b/tests/blockchain/contracts/test_deposit_security_module.py deleted file mode 100644 index e9c40f70..00000000 --- a/tests/blockchain/contracts/test_deposit_security_module.py +++ /dev/null @@ -1,21 +0,0 @@ -import pytest - -from tests.utils.contract_utils import check_contract -from tests.utils.regrex import HASH_REGREX, check_value_re, check_value_type, ADDRESS_REGREX - - -@pytest.mark.integration -def test_deposit_security_module_call(deposit_security_module, caplog): - check_contract( - deposit_security_module, - [ - ('get_guardian_quorum', None, lambda response: check_value_type(response, int)), - ('get_guardians', None, lambda response: check_value_type(response, list) and - [check_value_re(ADDRESS_REGREX, g) for g in response]), - ('get_attest_message_prefix', None, lambda response: check_value_type(response, bytes)), - ('can_deposit', (1,), lambda response: check_value_type(response, bool)), - ('get_pause_message_prefix', None, lambda response: check_value_type(response, bytes)), - ('get_pause_intent_validity_period_blocks', None, lambda response: check_value_type(response, int)), - ], - caplog, - ) diff --git a/tests/blockchain/contracts/test_lido.py b/tests/blockchain/contracts/test_lido.py deleted file mode 100644 index 8ab24a08..00000000 --- a/tests/blockchain/contracts/test_lido.py +++ /dev/null @@ -1,12 +0,0 @@ -from tests.utils.contract_utils import check_contract -from tests.utils.regrex import check_value_type - - -def test_lido_contract_call(lido_contract, caplog): - check_contract( - lido_contract, - [ - ('get_depositable_ether', None, lambda response: check_value_type(response, int)), - ], - caplog, - ) diff --git a/tests/blockchain/contracts/test_lido_locator.py b/tests/blockchain/contracts/test_lido_locator.py deleted file mode 100644 index f25efae0..00000000 --- a/tests/blockchain/contracts/test_lido_locator.py +++ /dev/null @@ -1,14 +0,0 @@ -from tests.utils.contract_utils import check_contract -from tests.utils.regrex import check_value_re, ADDRESS_REGREX - - -def test_lido_locator_call(lido_locator, caplog): - check_contract( - lido_locator, - [ - ('lido', None, lambda response: check_value_re(ADDRESS_REGREX, response)), - ('deposit_security_module', None, lambda response: check_value_re(ADDRESS_REGREX, response)), - ('staking_router', None, lambda response: check_value_re(ADDRESS_REGREX, response)), - ], - caplog, - ) diff --git a/tests/blockchain/contracts/test_staking_router.py b/tests/blockchain/contracts/test_staking_router.py deleted file mode 100644 index 509cd3bc..00000000 --- a/tests/blockchain/contracts/test_staking_router.py +++ /dev/null @@ -1,21 +0,0 @@ -import pytest - -from tests.utils.contract_utils import check_contract -from tests.utils.regrex import check_value_type - - -@pytest.mark.integration -def test_staking_router_call(staking_router, caplog): - check_contract( - staking_router, - [ - ('get_max_deposits_count', (1, 100*10**18), lambda response: check_value_type(response, int)), - ('get_staking_module_ids', None, lambda response: check_value_type(response, list) and - [check_value_type(x, int) for x in response]), - ('is_staking_module_active', (1,), lambda response: check_value_type(response, bool)), - ('is_staking_module_deposits_paused', (1,), lambda response: check_value_type(response, bool)), - ('get_staking_module_nonce', (1,), lambda response: check_value_type(response, int)), - ('get_staking_module_deposits_count', (1, 100*10**18), lambda response: check_value_type(response, int)), - ], - caplog, - ) diff --git a/tests/blockchain/deposit_strategy/__init__.py b/tests/blockchain/deposit_strategy/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/tests/blockchain/deposit_strategy/test_curated_module.py b/tests/blockchain/deposit_strategy/test_curated_module.py deleted file mode 100644 index 98fddd7f..00000000 --- a/tests/blockchain/deposit_strategy/test_curated_module.py +++ /dev/null @@ -1,108 +0,0 @@ -from unittest.mock import Mock - -import pytest - -import variables -from blockchain.deposit_strategy.curated_module import CuratedModuleDepositStrategy - - -MODULE_ID = 1337 - - -@pytest.fixture -def cmds(web3_lido_unit): - yield CuratedModuleDepositStrategy(web3_lido_unit, module_id=MODULE_ID) - - -@pytest.mark.unit -def test_is_deposited_keys_amount_ok(cmds): - cmds._get_possible_deposits_amount = Mock(return_value=100) - - cmds._calculate_recommended_gas_based_on_deposit_amount = Mock(return_value=30) - cmds._get_pending_base_fee = Mock(return_value=20) - - assert cmds.is_deposited_keys_amount_ok() - - cmds._get_pending_base_fee = Mock(return_value=50) - assert not cmds.is_deposited_keys_amount_ok() - - -@pytest.mark.unit -def test_get_possible_deposits_amount(cmds): - depositable_eth = 100 - possible_deposits = depositable_eth // 32 - - cmds.w3.lido.lido.get_depositable_ether = Mock(return_value=depositable_eth) - cmds.w3.lido.staking_router.get_staking_module_deposits_count = Mock(return_value=possible_deposits) - - assert cmds._get_possible_deposits_amount() == possible_deposits - cmds.w3.lido.staking_router.get_staking_module_deposits_count.assert_called_once_with( - MODULE_ID, - depositable_eth, - ) - - -@pytest.mark.unit -@pytest.mark.parametrize( - "deposits,expected_range", - [(1, (0, 20)), (5, (20, 100)), (10, (50, 1000)), (100, (1000, 1000000))], -) -def test_calculate_recommended_gas_based_on_deposit_amount(cmds, deposits, expected_range): - assert expected_range[0] * 10**9 <= cmds._calculate_recommended_gas_based_on_deposit_amount(deposits) <= expected_range[1] * 10**9 - - -@pytest.mark.unit -def test_get_recommended_gas_fee(cmds): - cmds._fetch_gas_fee_history = Mock(return_value=list(range(11))) - variables.GAS_FEE_PERCENTILE_DAYS_HISTORY_1 = 1 - variables.GAS_FEE_PERCENTILE_1 = 50 - - assert cmds._get_recommended_gas_fee() == 5 - - variables.GAS_FEE_PERCENTILE_1 = 30 - assert cmds._get_recommended_gas_fee() == 3 - - -@pytest.mark.unit -def test_is_gas_price_ok(cmds): - cmds._get_pending_base_fee = Mock(return_value=10) - cmds._get_recommended_gas_fee = Mock(return_value=20) - variables.MAX_GAS_FEE = 300 - - cmds.w3.lido.lido.get_depositable_ether = Mock(return_value=100) - variables.MAX_BUFFERED_ETHERS = 200 - assert cmds.is_gas_price_ok() - - cmds._get_recommended_gas_fee = Mock(return_value=5) - assert not cmds.is_gas_price_ok() - - cmds.w3.lido.lido.get_depositable_ether = Mock(return_value=300) - assert cmds.is_gas_price_ok() - - cmds._get_pending_base_fee = Mock(return_value=400) - assert not cmds.is_gas_price_ok() - - -@pytest.fixture() -def cmds_integration(web3_lido_integration): - yield CuratedModuleDepositStrategy(web3_lido_integration, module_id=MODULE_ID) - - -@pytest.mark.integration -def test_get_pending_base_fee(cmds_integration): - pending_gas = cmds_integration._get_pending_base_fee() - assert 1 <= pending_gas <= 1000 * 10**9 - - -@pytest.mark.integration -def test_fetch_gas_fee_history(cmds_integration): - history = cmds_integration._fetch_gas_fee_history(1) - assert isinstance(history, list) - assert len(history) == 1 * 24 * 60 * 60 / 12 - - cmds_integration.w3.eth.fee_history = Mock() - cmds_integration._fetch_gas_fee_history(1) - assert len(history) == 1 * 24 * 60 * 60 / 12 - cmds_integration.w3.eth.fee_history.assert_not_called() - - diff --git a/tests/blockchain/web3_extentions/__init__.py b/tests/blockchain/web3_extentions/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/tests/blockchain/web3_extentions/transaction.py b/tests/blockchain/web3_extentions/transaction.py deleted file mode 100644 index f12acfee..00000000 --- a/tests/blockchain/web3_extentions/transaction.py +++ /dev/null @@ -1,37 +0,0 @@ -import logging -from unittest.mock import Mock - -import pytest - -import variables -from blockchain.web3_extentions.transaction import TransactionUtils - - -@pytest.mark.unit -def test_get_priority_fee(web3_lido_unit): - tu = TransactionUtils(web3_lido_unit) - tu.web3.eth.fee_history = Mock(return_value={'reward': [[50]]}) - - assert tu._get_priority_fee(0, 10, 30) == 30 - assert tu._get_priority_fee(0, 10, 70) == 50 - assert tu._get_priority_fee(0, 60, 70) == 60 - - -@pytest.mark.unit -def test_protector_no_account(web3_lido_unit, caplog): - caplog.set_level(logging.INFO) - - tu = TransactionUtils(web3_lido_unit) - variables.CREATE_TRANSACTIONS = False - tu.send(None, False, 10) - assert 'Account was not provided. Sending transaction skipped.' in caplog.messages[-1] - - -@pytest.mark.unit -def test_protector_create_tx(web3_lido_unit, set_integration_account, caplog): - caplog.set_level(logging.INFO) - - tu = TransactionUtils(web3_lido_unit) - variables.CREATE_TRANSACTIONS = False - tu.send(None, False, 10) - assert 'Dry mode activated. Sending transaction skipped.' in caplog.messages[-1] diff --git a/tests/bots/__init__.py b/tests/bots/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/tests/bots/test_depositor.py b/tests/bots/test_depositor.py deleted file mode 100644 index 40b62e22..00000000 --- a/tests/bots/test_depositor.py +++ /dev/null @@ -1,337 +0,0 @@ -import logging -from unittest.mock import Mock - -import pytest - -import variables -from bots.depositor import DepositorBot -from tests.conftest import DSM_OWNER - - -COUNCIL_ADDRESS_1 = '0x70997970C51812dc3A010C7d01b50e0d17dc79C8' -COUNCIL_PK_1 = '0x59c6995e998f97a5a0044966f0945389dc9e86dae88c7a8412f4603b6b78690d' - -COUNCIL_ADDRESS_2 = '0x3C44CdDdB6a900fa2b585dd299e03d12FA4293BC' -COUNCIL_PK_2 = '0x5de4111afa1a4b94908f83103eb1f1706367c2e68ca870fc3fb9a804cdab365a' - - -@pytest.fixture -def depositor_bot(web3_lido_unit, block_data): - variables.MESSAGE_TRANSPORTS = '' - web3_lido_unit.lido.staking_router.get_staking_module_ids = Mock(return_value=[1, 2]) - web3_lido_unit.eth.get_block = Mock(return_value=block_data) - yield DepositorBot(web3_lido_unit) - - -@pytest.fixture -def deposit_message(): - yield { - "type": "deposit", - "depositRoot": "0x64dcf70a7ad7fc6b1a55db6b08b86e9d80736259916fcaef98f4710f0bac687b", - "nonce": 12, - "blockNumber": 10, - "blockHash": "0x432e218931e9b94f0702ecb1b0d084c467a86b384767ce38c4fe164463070532", - "guardianAddress": "0x43464Fe06c18848a2E2e913194D64c1970f4326a", - "guardianIndex": 8, - "stakingModuleId": 1, - "signature": { - "r": "0xc2235eb6983f80d19158f807d5d90d93abec52034ea7184bbf164ba211f00116", - "s": "0x75354ffc9fb6e7a4b4c01c622661a1d0382ace8c4ff8024626e39ac1a6a613d0", - "_vs": "0x75354ffc9fb6e7a4b4c01c622661a1d0382ace8c4ff8024626e39ac1a6a613d0", - "recoveryParam": 0, - "v": 27 - }, - "app": { - "version": "1.0.3", - "name": "lido-council-daemon" - } - } - - -@pytest.mark.unit -def test_depositor_check_all_modules(depositor_bot, block_data): - depositor_bot._deposit_to_module = Mock(return_value=False) - depositor_bot.execute(block_data) - - assert depositor_bot._deposit_to_module.call_count == 2 - - -@pytest.mark.unit -def test_depositor_one_module_deposited(depositor_bot, block_data): - depositor_bot._deposit_to_module = Mock(return_value=True) - depositor_bot.execute(block_data) - - assert depositor_bot._deposit_to_module.call_count == 2 - - -@pytest.mark.unit -def test_check_balance_dry(depositor_bot, caplog): - caplog.set_level(logging.INFO) - depositor_bot._check_balance() - assert 'No account provided. Dry mode.' in caplog.messages[-1] - - -@pytest.mark.unit -def test_check_balance(depositor_bot, caplog, set_account): - caplog.set_level(logging.INFO) - - depositor_bot.w3.eth.get_balance = Mock(return_value=10*10**18) - depositor_bot._check_balance() - assert 'Check account balance' in caplog.messages[-1] - - -@pytest.mark.unit -@pytest.mark.parametrize( - "active,paused,expected", - [ - (True, True, False), - (True, False, True), - (False, True, False), - (False, False, False), - ], -) -def test_depositor_check_module_status(depositor_bot, active, paused, expected): - depositor_bot.w3.lido.staking_router.is_staking_module_active = Mock(return_value=active) - depositor_bot.w3.lido.staking_router.is_staking_module_deposits_paused = Mock(return_value=paused) - assert depositor_bot._check_module_status(1) == expected - - -@pytest.mark.unit -@pytest.mark.parametrize( - "is_depositable,quorum,is_gas_price_ok,is_deposited_keys_amount_ok", - [ - pytest.param(True, True, True, True, marks=pytest.mark.xfail), - (False, True, True, True), - (True, False, True, True), - (True, True, False, True), - (True, True, True, False), - ], -) -def test_depositor_deposit_to_module(depositor_bot, is_depositable, quorum, is_gas_price_ok, is_deposited_keys_amount_ok): - depositor_bot._check_module_status = Mock(return_value=is_depositable) - depositor_bot._get_quorum = Mock(return_value=quorum) - - strategy = Mock() - strategy.is_gas_price_ok = Mock(return_value=is_gas_price_ok) - strategy.is_deposited_keys_amount_ok = Mock(return_value=is_deposited_keys_amount_ok) - - depositor_bot._get_module_strategy = Mock(return_value=strategy) - depositor_bot._build_and_send_deposit_tx = Mock(return_value=True) - - assert not depositor_bot._deposit_to_module(1) - - -@pytest.fixture -def setup_deposit_message(depositor_bot, block_data): - depositor_bot.w3.eth.get_block = Mock(return_value=block_data) - depositor_bot.w3.lido.deposit_contract.get_deposit_root = Mock( - return_value=b'd\xdc\xf7\nz\xd7\xfck\x1aU\xdbk\x08\xb8n\x9d\x80sbY\x91o\xca\xef\x98\xf4q\x0f\x0b\xach{' - ) - depositor_bot.w3.lido.staking_router.get_staking_module_nonce = Mock(return_value=12) - depositor_bot.w3.lido.deposit_security_module.get_guardians = Mock(return_value=['0x43464Fe06c18848a2E2e913194D64c1970f4326a']) - - -@pytest.mark.unit -def test_depositor_message_actualizer(setup_deposit_message, depositor_bot, deposit_message, block_data): - message_filter = depositor_bot._get_message_actualize_filter(1) - assert list(filter(message_filter, [deposit_message])) - - -@pytest.mark.unit -def test_depositor_message_actualizer_not_guardian(setup_deposit_message, depositor_bot, deposit_message, block_data): - depositor_bot.w3.lido.deposit_security_module.get_guardians = Mock(return_value=['0x13464Fe06c18848a2E2e913194D64c1970f4326a']) - message_filter = depositor_bot._get_message_actualize_filter(1) - assert not list(filter(message_filter, [deposit_message])) - - -@pytest.mark.unit -def test_depositor_message_actualizer_outdated(setup_deposit_message, depositor_bot, deposit_message, block_data): - deposit_message['blockNumber'] = block_data['number'] - 250 - message_filter = depositor_bot._get_message_actualize_filter(1) - assert not list(filter(message_filter, [deposit_message])) - - deposit_message['blockNumber'] = block_data['number'] - 150 - assert list(filter(message_filter, [deposit_message])) - - -@pytest.mark.unit -def test_depositor_message_actualizer_nonce(setup_deposit_message, depositor_bot, deposit_message, block_data): - deposit_message['nonce'] += 10 - message_filter = depositor_bot._get_message_actualize_filter(1) - assert not list(filter(message_filter, [deposit_message])) - - deposit_message['blockNumber'] = block_data['number'] + 100 - assert list(filter(message_filter, [deposit_message])) - - -@pytest.mark.unit -def test_depositor_message_actualizer_root(setup_deposit_message, depositor_bot, deposit_message, block_data): - deposit_message['depositRoot'] += '0x55dcf70a7ad7fc6b1a55db6b08b86e9d80736259916fcaef98f4710f0bac687b' - message_filter = depositor_bot._get_message_actualize_filter(1) - assert not list(filter(message_filter, [deposit_message])) - - deposit_message['blockNumber'] = block_data['number'] + 100 - assert list(filter(message_filter, [deposit_message])) - - -@pytest.mark.unit -def test_prepare_signs_for_deposit(deposit_message, depositor_bot): - second_council = { - "guardianAddress": "0x13464Fe06c18848a2E2e913194D64c1970f4326a", - "signature": { - "r": "0xc2235eb6983f80d19158f807d5d90d93abec52034ea7184bbf164ba211f00116", - "s": "0x75354ffc9fb6e7a4b4c01c622661a1d0382ace8c4ff8024626e39ac1a6a613d0", - "_vs": "0x75354ffc9fb6e7a4b4c01c622661a1d0382ace8c4ff8024626e39ac1a6a613d0", - "recoveryParam": 0, - "v": 27 - }, - } - - expected = (('0xc2235eb6983f80d19158f807d5d90d93abec52034ea7184bbf164ba211f00116', '0x75354ffc9fb6e7a4b4c01c622661a1d0382ace8c4ff8024626e39ac1a6a613d0'), ('0xc2235eb6983f80d19158f807d5d90d93abec52034ea7184bbf164ba211f00116', '0x75354ffc9fb6e7a4b4c01c622661a1d0382ace8c4ff8024626e39ac1a6a613d0')) - - signs = depositor_bot._prepare_signs_for_deposit([second_council, deposit_message]) - assert signs == expected - - signs = depositor_bot._prepare_signs_for_deposit([deposit_message, second_council]) - assert signs == expected - - -@pytest.mark.unit -def test_send_deposit_tx(depositor_bot): - depositor_bot.w3.transaction.check = Mock(return_value=False) - params = [ - 1, b'', b'', 1, 1, b'', tuple(), - ] - assert not depositor_bot._send_deposit_tx(*params) - - depositor_bot.w3.transaction.check = Mock(return_value=True) - depositor_bot.w3.transaction.send = Mock(return_value=True) - assert depositor_bot._send_deposit_tx(*params) - assert depositor_bot._flashbots_works - - depositor_bot.w3.transaction.send = Mock(return_value=False) - assert not depositor_bot._send_deposit_tx(*params) - assert not depositor_bot._flashbots_works - - assert not depositor_bot._send_deposit_tx(*params) - assert depositor_bot._flashbots_works - - -@pytest.mark.unit -def test_get_quorum(depositor_bot, setup_deposit_message): - deposit_messages = [ - { - "blockHash": "0x432e218931e9b94f0702ecb1b0d084c467a86b384767ce38c4fe164463070532", - "guardianAddress": "0x43464Fe06c18848a2E2e913194D64c1970f4326a", - }, - { - "blockHash": "0x432e218931e9b94f0702ecb1b0d084c467a86b384767ce38c4fe164463070532", - "guardianAddress": "0x43464Fe06c18848a2E2e913194D64c1970f4326a", - }, - { - "blockHash": "0x232e218931e9b94f0702ecb1b0d084c467a86b384767ce38c4fe164463070532", - "guardianAddress": "0x43464Fe06c18848a2E2e913194D64c1970f4326a", - }, - { - "blockHash": "0x232e218931e9b94f0702ecb1b0d084c467a86b384767ce38c4fe164463070532", - "guardianAddress": "0x33464Fe06c18848a2E2e913194D64c1970f4326a", - } - ] - - depositor_bot.w3.lido.deposit_security_module.get_guardian_quorum = Mock(return_value=2) - depositor_bot.message_storage.get_messages = Mock(return_value=deposit_messages[:2]) - assert not depositor_bot._get_quorum(1) - - depositor_bot.message_storage.get_messages = Mock(return_value=deposit_messages[:4]) - quorum = depositor_bot._get_quorum(1) - assert quorum - assert deposit_messages[2] in quorum - assert deposit_messages[3] in quorum - - -def get_deposit_message(web3, account_address, pk, module_id): - latest = web3.eth.get_block('latest') - - prefix = web3.lido.deposit_security_module.get_attest_message_prefix() - block_number = latest.number - deposit_root = '0x' + web3.lido.deposit_contract.get_deposit_root().hex() - staking_module_id = int(1) - nonce = web3.lido.staking_router.get_staking_module_nonce(module_id) - - # | ATTEST_MESSAGE_PREFIX | blockNumber | blockHash | depositRoot | stakingModuleId | nonce | - - msg_hash = web3.solidityKeccak( - ['bytes32', 'uint256', 'bytes32', 'bytes32', 'uint256', 'uint256'], - [prefix, block_number, latest.hash.hex(), deposit_root, staking_module_id, nonce], - ) - signed = web3.eth.account.signHash(msg_hash, private_key=pk) - - msg = { - "type": "deposit", - "depositRoot": deposit_root, - "nonce": nonce, - "blockNumber": latest.number, - "blockHash": latest.hash.hex(), - "guardianAddress": account_address, - "guardianIndex": 8, - "stakingModuleId": staking_module_id, - "signature": { - "r": signed.r.to_bytes(32, 'big').hex(), - "s": signed.s.to_bytes(32, 'big').hex(), - "v": signed.v, - }, - } - - return msg - - -@pytest.fixture -def add_accounts_to_guardian(web3_lido_integration, set_integration_account): - web3_lido_integration.provider.make_request('hardhat_impersonateAccount', [DSM_OWNER]) - quorum_size = web3_lido_integration.lido.deposit_security_module.get_guardian_quorum() - - try: - # If guardian removal failed - web3_lido_integration.lido.deposit_security_module.functions.addGuardian(COUNCIL_ADDRESS_1, 2).transact({'from': DSM_OWNER}) - web3_lido_integration.lido.deposit_security_module.functions.addGuardian(COUNCIL_ADDRESS_2, 2).transact({'from': DSM_OWNER}) - except: - pass - - yield web3_lido_integration - - web3_lido_integration.lido.deposit_security_module.functions.removeGuardian(COUNCIL_ADDRESS_1, quorum_size).transact({'from': DSM_OWNER}) - web3_lido_integration.lido.deposit_security_module.functions.removeGuardian(COUNCIL_ADDRESS_2, quorum_size).transact({'from': DSM_OWNER}) - - -@pytest.mark.integration -def test_depositor_bot(web3_lido_integration, add_accounts_to_guardian, caplog): - max_deposits = web3_lido_integration.lido.deposit_security_module.functions.getMaxDeposits().call() - web3_lido_integration.lido.deposit_security_module.functions.setMaxDeposits(2).transact({'from': DSM_OWNER}) - - latest = web3_lido_integration.eth.get_block('latest') - - module_id = 1 - - old_module_nonce = web3_lido_integration.lido.staking_router.get_staking_module_nonce(module_id) - - deposit_message_1 = get_deposit_message(web3_lido_integration, COUNCIL_ADDRESS_1, COUNCIL_PK_1, module_id) - deposit_message_2 = get_deposit_message(web3_lido_integration, COUNCIL_ADDRESS_2, COUNCIL_PK_2, module_id) - deposit_message_3 = get_deposit_message(web3_lido_integration, COUNCIL_ADDRESS_2, COUNCIL_PK_2, module_id) - - db = DepositorBot(web3_lido_integration) - db.message_storage.messages = [deposit_message_2, deposit_message_3] - db.execute(latest) - - assert web3_lido_integration.lido.staking_router.get_staking_module_nonce(module_id) == old_module_nonce - - web3_lido_integration.eth.send_transaction({ - "from": web3_lido_integration.eth.accounts[0], - "to": web3_lido_integration.lido.lido.address, - "value": 2000 * 10**18 - }) - - db.message_storage.messages = [deposit_message_1, deposit_message_2, deposit_message_3] - db._get_module_strategy = Mock(return_value=Mock(return_value=True)) - assert db.execute(latest) - # assert web3_lido_integration.lido.staking_router.get_staking_module_nonce(module_id) == old_module_nonce + 1 - web3_lido_integration.lido.deposit_security_module.functions.setMaxDeposits(max_deposits).transact({'from': DSM_OWNER}) diff --git a/tests/bots/test_executor.py b/tests/bots/test_executor.py deleted file mode 100644 index 80f71f8a..00000000 --- a/tests/bots/test_executor.py +++ /dev/null @@ -1,88 +0,0 @@ -import time -from unittest.mock import Mock - -import pytest -from web3.types import BlockData - -from blockchain.executer import Executor -from metrics import healthcheck_pulse -from utils.timeout import TimeoutManagerError - - -def pure_func(block: BlockData): - return block.number - - -def pure_func_false(block: BlockData): - return False - - -def pure_func_sleep(block: BlockData): - time.sleep(8) - return True - - -@pytest.fixture -def remove_metrics(): - healthcheck_pulse.pulse = Mock() - - -@pytest.mark.integration -def test_timeout(web3_lido_integration, remove_metrics): - e = Executor( - web3_lido_integration, - pure_func_sleep, - 1, - 4, - ) - - with pytest.raises(TimeoutManagerError): - e.execute_as_daemon() - - -@pytest.mark.integration -def test_blocks_diff_call(web3_lido_integration, remove_metrics): - e = Executor( - web3_lido_integration, - pure_func, - 1, - 4, - ) - - block_1 = e._wait_for_new_block_and_execute() - block_2 = e._wait_for_new_block_and_execute() - block_3 = e._wait_for_new_block_and_execute() - - assert block_1 + 2 == block_2 + 1 == block_3 - - -@pytest.mark.integration -def test_blocks_true_result(web3_lido_integration, remove_metrics): - e = Executor( - web3_lido_integration, - pure_func, - 2, - 4, - ) - - block_1 = e._wait_for_new_block_and_execute() - block_2 = e._wait_for_new_block_and_execute() - - assert block_1 + 2 == block_2 - - -@pytest.mark.integration -def test_blocks_false_result(web3_lido_integration, remove_metrics): - e = Executor( - web3_lido_integration, - pure_func_false, - 2, - 4, - ) - - e._wait_for_new_block_and_execute() - block_1 = e._next_expected_block - e._wait_for_new_block_and_execute() - block_2 = e._next_expected_block - - assert block_1 + 1 == block_2 diff --git a/tests/bots/test_pauser.py b/tests/bots/test_pauser.py deleted file mode 100644 index b831e68b..00000000 --- a/tests/bots/test_pauser.py +++ /dev/null @@ -1,167 +0,0 @@ -from unittest.mock import Mock - -import pytest -from eth_abi import encode -from eth_account.messages import encode_defunct, encode_structured_data -from eth_hash.backends.pycryptodome import keccak256 - -import variables -from bots.pause import PauserBot -from tests.conftest import DSM_OWNER - -# WARNING: These accounts, and their private keys, are publicly known. -COUNCIL_ADDRESS = '0x70997970C51812dc3A010C7d01b50e0d17dc79C8' -COUNCIL_PK = '0x59c6995e998f97a5a0044966f0945389dc9e86dae88c7a8412f4603b6b78690d' - - -@pytest.fixture -def pause_bot(web3_lido_unit, block_data): - web3_lido_unit.eth.get_block = Mock(return_value=block_data) - variables.MESSAGE_TRANSPORTS = '' - web3_lido_unit.lido.deposit_security_module.get_pause_intent_validity_period_blocks = Mock(return_value=10) - yield PauserBot(web3_lido_unit) - - -@pytest.fixture -def pause_message(): - yield { - "blockHash": "0xe41c0212516a899c455203e833903c802338daa3048bc637b623f6fba0a1685c", - "blockNumber": 10, - "guardianAddress": "0x3dc4cF780F2599B528F37dedB34449Fb65Ef7d4A", - "guardianIndex": 0, - "stakingModuleId": 1, - "signature": { - "_vs": "0xd4933925f5f97a9632b4b1bc621a1c2771d58eaf6eee27dcf915eac8af010537", - "r": "0xbaa668505cd496caaf7117dd074338197200175057909ab73a04463656bdb0fa", - "recoveryParam": 1, - "s": "0x54933925f5f97a9632b4b1bc621a1c2771d58eaf6eee27dcf915eac8af010537", - "v": 28 - }, - "type": "pause" - } - - -@pytest.fixture -def add_account_to_guardian(web3_lido_integration, set_integration_account): - web3_lido_integration.provider.make_request('hardhat_impersonateAccount', [DSM_OWNER]) - quorum_size = web3_lido_integration.lido.deposit_security_module.get_guardian_quorum() - - try: - # If guardian removal failed - web3_lido_integration.lido.deposit_security_module.functions.addGuardian(COUNCIL_ADDRESS, quorum_size).transact( - {'from': DSM_OWNER}, - ) - except: - pass - - yield COUNCIL_ADDRESS - - web3_lido_integration.lido.deposit_security_module.functions.removeGuardian(COUNCIL_ADDRESS, quorum_size).transact( - {'from': DSM_OWNER}, - ) - - -def get_pause_message(web3): - latest = web3.eth.get_block('latest') - - prefix = web3.lido.deposit_security_module.get_pause_message_prefix() - - block_number = latest.number - staking_module_id = int(1) - - msg_hash = web3.solidityKeccak(['bytes32', 'uint256', 'uint256'], [prefix, block_number, staking_module_id]) - signed = web3.eth.account.signHash(msg_hash, private_key=COUNCIL_PK) - - return { - "blockHash": latest.hash.hex(), - "blockNumber": latest.number, - "guardianAddress": variables.ACCOUNT.address, - "stakingModuleId": 1, - "signature": { - "r": hex(signed.r), - "s": hex(signed.s), - "v": signed.v, - }, - "type": "pause" - } - - -@pytest.mark.unit -def test_pause_bot_without_messages(pause_bot, block_data): - pause_bot.message_storage.get_messages = Mock(return_value=[]) - pause_bot._send_pause_message = Mock() - pause_bot.execute(block_data) - pause_bot._send_pause_message.assert_not_called() - - -@pytest.mark.unit -@pytest.mark.parametrize( - "block_range", - [4, pytest.param(6, marks=pytest.mark.xfail)], -) -def test_pause_bot_outdate_messages(pause_bot, block_data, pause_message, block_range): - pause_message['blockNumber'] = 5 - pause_bot.message_storage.messages = [pause_message] - pause_bot.w3.lido.deposit_security_module.get_pause_intent_validity_period_blocks = Mock(return_value=block_range) - - pause_bot._send_pause_message = Mock() - pause_bot.execute(block_data) - pause_bot._send_pause_message.assert_not_called() - - -@pytest.mark.unit -@pytest.mark.parametrize( - "active_module", - [False, pytest.param(True, marks=pytest.mark.xfail)], -) -def test_pause_bot_clean_messages(pause_bot, block_data, pause_message, active_module): - pause_bot.message_storage.messages = [pause_message] - pause_bot.w3.lido.staking_router.is_staking_module_active = Mock(return_value=active_module) - - pause_bot.execute(block_data) - assert len(pause_bot.message_storage.messages) == 0 - - -@pytest.mark.unit -def test_pause_message_filtered_by_module_id(pause_bot, block_data, pause_message): - new_message = pause_message.copy() - new_message['stakingModuleId'] = 2 - - pause_bot.message_storage.messages = [pause_message, pause_message, new_message] - pause_bot.w3.lido.staking_router.is_staking_module_active = lambda module_id: not module_id % 2 - - pause_bot.execute(block_data) - - # Only module_id=1 messages filtered - assert len(pause_bot.message_storage.messages) == 1 - - -@pytest.mark.integration -def test_pauser_bot(web3_lido_integration, add_account_to_guardian): - latest = web3_lido_integration.eth.get_block('latest') - - pm = get_pause_message(web3_lido_integration) - - pb = PauserBot(web3_lido_integration) - pb.execute(latest) - - # Check no pause - assert not web3_lido_integration.lido.staking_router.is_staking_module_deposits_paused(1) - - # Add pause message - pb.message_storage.messages = [pm] - pb.execute(latest) - - # Check there is pause message and module paused - assert web3_lido_integration.lido.staking_router.is_staking_module_deposits_paused(1) - assert len(pb.message_storage.messages) == 1 - - pb.execute(latest) - # Check pause message cleaned - assert not pb.message_storage.messages - - # Cleanup - web3_lido_integration.lido.deposit_security_module.functions.unpauseDeposits(pm['stakingModuleId']).transact( - {'from': DSM_OWNER} - ) - assert not web3_lido_integration.lido.staking_router.is_staking_module_deposits_paused(1) diff --git a/tests/bots/test_timeout.py b/tests/bots/test_timeout.py deleted file mode 100644 index 879590a4..00000000 --- a/tests/bots/test_timeout.py +++ /dev/null @@ -1,18 +0,0 @@ -import time - -import pytest - -from utils.timeout import TimeoutManager, TimeoutManagerError - - -@pytest.mark.unit -def test_timeout(): - with pytest.raises(TimeoutManagerError): - simple_timeout(4, 8) - - simple_timeout(8, 4) - - -def simple_timeout(expect_time: int, sleep_time: int): - with TimeoutManager(expect_time): - time.sleep(sleep_time) diff --git a/tests/conftest.py b/tests/conftest.py deleted file mode 100644 index 61682483..00000000 --- a/tests/conftest.py +++ /dev/null @@ -1,48 +0,0 @@ -import pytest -from eth_account import Account -from eth_typing import BlockNumber -from web3.types import BlockData, Wei - -from tests.fixtures.provider import * -from tests.fixtures.contracts import * - - -# https://goerli.etherscan.io/address/0xe57025E250275cA56f92d76660DEcfc490C7E79A#readContract#F12 -DSM_OWNER = '0xa5F1d7D49F581136Cf6e58B32cBE9a2039C48bA1' - - -@pytest.fixture -def block_data(): - yield BlockData(number=BlockNumber(10), baseFeePerGas=Wei(100)) - - -@pytest.fixture -def set_account(): - variables.ACCOUNT = Account.from_key('0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80') - yield variables.ACCOUNT - variables.ACCOUNT = None - - -@pytest.fixture -def set_integration_account(): - # Basic Hardhat account - # Address 0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266 - variables.ACCOUNT = Account.from_key('0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80') - variables.CREATE_TRANSACTIONS = True - yield - variables.CREATE_TRANSACTIONS = False - variables.ACCOUNT = None - - -@pytest.fixture() -def ping_message(monkeypatch): - yield { - "type": "ping", - "blockNumber": 13726495, - "guardianIndex": 0, - "guardianAddress": "0x3dc4cF780F2599B528F37dedB34449Fb65Ef7d4A", - "app": { - "version": "1.1.1", - "name": "lido-council-daemon" - } - } diff --git a/tests/cryptography/__init__.py b/tests/cryptography/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/tests/fixtures/common_fixtures.py b/tests/fixtures/common_fixtures.py new file mode 100644 index 00000000..00d740e9 --- /dev/null +++ b/tests/fixtures/common_fixtures.py @@ -0,0 +1,36 @@ +COMMON_FIXTURES = { + 'eth_chainId': ( + ((), {'jsonrpc': '2.0', 'id': 11, 'result': '0x1'}), + ('default', {'jsonrpc': '2.0', 'id': 11, 'result': '0x1'}), + ), + 'eth_getFilterChanges': ( + ('default', {'jsonrpc': '2.0', 'id': 1, 'result': []}), + ), + 'eth_getBlockByNumber': ( + (('latest', False), {'jsonrpc': '2.0', 'id': 15, 'result': {'baseFeePerGas': '0xffbf193d7', 'difficulty': '0x29aa4945316813', 'extraData': '0x486976656f6e2065752d6865617679', 'gasLimit': '0x1c9c380', 'gasUsed': '0x65fe32', 'hash': '0xf7b1887b32ad3b9346f907947e2dffb5012de2b7cb7b6b84b950356237944d0c', 'logsBloom': '0x092000900100008810000000805c080000000000000008000001606044086000080101400080020080005883004901909220824588002c900088840040212040880004004021410a8822000810002020800100088240050104000c03802844101a00002012004482014408221000189000008840081064082000003404288c0800820120104030000044008a0821000241000401910080180021084201100401071880289001a00202000080080810401000001021802010183c1000100c2000210003032200081028010d20005600400000024203991230848a000201026008a131202a0400090000419000010008a00000a880305102502000090000001220', 'miner': '0x1ad91ee08f21be3de0ba2ba6918e714da6b45836', 'mixHash': '0x98630b099b638f63942ba8ff6b65b8a7b26dd38c6e125528104aeff50c01d02a', 'nonce': '0x0000030ab4a3b4d8', 'number': '0xd17320', 'parentHash': '0xc2ea9185d4821a13da4a2975c85673eff34944e92c0b5d3516a3b4482ac2ab58', 'receiptsRoot': '0x3f30031d0a235a05e183de7416a42a2bdef7cbcbabd581282cfc8b2e239b9abe', 'sha3Uncles': '0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347', 'size': '0x63ff', 'stateRoot': '0x22b47b4d4370336d5a0ffb7423b1a40257b23fdcfe28a3ec45a21e60590e1dd8', 'timestamp': '0x61a88d67', 'totalDifficulty': '0x78d36e1e439ded9742d', 'transactions': [], 'transactionsRoot': '0xfa0b8a5325ea94fd117575c1aedf498ccaccdca636334f938b3b3184426f749c', 'uncles': []}}), + (('pending', False), {'jsonrpc': '2.0', 'id': 0, 'result': {'baseFeePerGas': '0x4a1533d7f', 'difficulty': '0x29be4af025287c', 'extraData': '0xd883010a0c846765746888676f312e31372e33856c696e7578', 'gasLimit': '0x1c95111', 'gasUsed': '0x1b68674', 'hash': None, 'logsBloom': '0x57aa6b0f5ba66e9fbecbbec7849fcff758cddfdfbeb53b3ee5e9bb7d7f7bdfcf79fe7df2bdccb9b3d3e9dff8fcffd7d5ba2bf9139feffdb5f73ffe3bb23ef82d26fa5fa7af73bf2ce9afb63efaff5f7f6ef6387464cfb554b5f7b7ff96e35f753a41fbbf7fb5de9abf76d7d87dbefff6fffaf271ffbf37cf769f5d37b4affeed7f12b75b57fef817f3d72fbd0ff366cc5575ad3ddf361f2dcbae546fe9bfedd6bb5babcb6eee27f9eefd4fd3fdb94f29fb7eca707fffa7f355f3973e1efdbe93efebfbf7cda9997baf3bd9af57fbfd55ffeeff585f0efd7f779fbfab78de60fd8cfe3debfef5c3bdf9d53f9f97adff87c3e3cdc9f1f6f3f9255ffa56e8db7bef', 'miner': None, 'mixHash': '0x0000000000000000000000000000000000000000000000000000000000000000', 'nonce': None, 'number': '0xd18e3e', 'parentHash': '0x01802ffbfec338704593f416bb06005afb88c2a343d5a405d6d3f5359422a41c', 'receiptsRoot': '0xa67cb02111fe0430601215c03aa86a2a95a032487c1644f7561e7d7ef58a4677', 'sha3Uncles': '0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347', 'size': '0x19b97', 'stateRoot': '0xdbffeb5d663c710239c0b8bf57b562848e8bd6d55117ad29cbb9fe930ac0e11a', 'timestamp': '0x61aa03ce', 'totalDifficulty': None, 'transactions': [], 'transactionsRoot': '0xaeade20445251ded37c5efce433e9a526683d340da591774ac14acb4ca7a11d3', 'uncles': []}}), + ), + 'eth_getCode': ( + (['0xae7ab96520DE3A18E5e111B5EaAb095312D7fE84', 'latest'], {'jsonrpc': '2.0', 'id': 14, 'result': '0x60806040526004361061006c5763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416634555d5c9811461012b57806348a0c8dd146101525780635c60da1b1461017b57806380afdea8146101b9578063d4aae0c4146101ce575b6127107f665fd576fbbe6f247aff98f5c94a561e3f71ec2d3c988d56f12d342396c50cea6000825a10156100e15760003411361583541616156100dc576040513381523460208201527f15eeaa57c7bd188c1388020bcadc2c436ec60d647d36ef5b9eb3c742217ddee1604082a1005b600080fd5b6100e96101e3565b9050610126816000368080601f016020809104026020016040519081016040528093929190818152602001838380828437506101fa945050505050565b505050005b34801561013757600080fd5b5061014061023b565b60408051918252519081900360200190f35b34801561015e57600080fd5b50610167610240565b604080519115158252519081900360200190f35b34801561018757600080fd5b506101906101e3565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b3480156101c557600080fd5b5061014061026b565b3480156101da57600080fd5b50610190610296565b60006101f56101f061026b565b6102c1565b905090565b600061020583610395565b151561021057600080fd5b612710905060008083516020850186855a03f43d604051816000823e828015610237578282f35b8282fd5b600290565b60006101f57f665fd576fbbe6f247aff98f5c94a561e3f71ec2d3c988d56f12d342396c50cea6103cf565b60006101f57fd625496217aa6a3453eecb9c3489dc5a53e6c67b444329ea2b2cbc9ff547639b6103cf565b60006101f57f4172f0f7d2289153072b0a6ca36959e0cbe2efc3afe50fc81636caa96338137b6103cf565b60006102cb610296565b604080517fbe00bbd80000000000000000000000000000000000000000000000000000000081527ff1f3eb40f5bc1ad1344716ced8b8a0431d840b5783aea1fd01786bc26f35ac0f600482015260248101859052905173ffffffffffffffffffffffffffffffffffffffff929092169163be00bbd8916044808201926020929091908290030181600087803b15801561036357600080fd5b505af1158015610377573d6000803e3d6000fd5b505050506040513d602081101561038d57600080fd5b505192915050565b60008073ffffffffffffffffffffffffffffffffffffffff831615156103be57600091506103c9565b823b90506000811191505b50919050565b5490565b5490565b9055565b90555600a165627a7a72305820976bd9d6f6ad7a0d339ea3b373704842cdb3d9e15e7463676c04c1fa6ffb56410029'}), + (['0x55032650b14df07b85bF18A3a3eC8E0Af2e028d5', 'latest'], {'jsonrpc': '2.0', 'id': 15, 'result': '0x60806040526004361061006c5763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416634555d5c9811461012b57806348a0c8dd146101525780635c60da1b1461017b57806380afdea8146101b9578063d4aae0c4146101ce575b6127107f665fd576fbbe6f247aff98f5c94a561e3f71ec2d3c988d56f12d342396c50cea6000825a10156100e15760003411361583541616156100dc576040513381523460208201527f15eeaa57c7bd188c1388020bcadc2c436ec60d647d36ef5b9eb3c742217ddee1604082a1005b600080fd5b6100e96101e3565b9050610126816000368080601f016020809104026020016040519081016040528093929190818152602001838380828437506101fa945050505050565b505050005b34801561013757600080fd5b5061014061023b565b60408051918252519081900360200190f35b34801561015e57600080fd5b50610167610240565b604080519115158252519081900360200190f35b34801561018757600080fd5b506101906101e3565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b3480156101c557600080fd5b5061014061026b565b3480156101da57600080fd5b50610190610296565b60006101f56101f061026b565b6102c1565b905090565b600061020583610395565b151561021057600080fd5b612710905060008083516020850186855a03f43d604051816000823e828015610237578282f35b8282fd5b600290565b60006101f57f665fd576fbbe6f247aff98f5c94a561e3f71ec2d3c988d56f12d342396c50cea6103cf565b60006101f57fd625496217aa6a3453eecb9c3489dc5a53e6c67b444329ea2b2cbc9ff547639b6103cf565b60006101f57f4172f0f7d2289153072b0a6ca36959e0cbe2efc3afe50fc81636caa96338137b6103cf565b60006102cb610296565b604080517fbe00bbd80000000000000000000000000000000000000000000000000000000081527ff1f3eb40f5bc1ad1344716ced8b8a0431d840b5783aea1fd01786bc26f35ac0f600482015260248101859052905173ffffffffffffffffffffffffffffffffffffffff929092169163be00bbd8916044808201926020929091908290030181600087803b15801561036357600080fd5b505af1158015610377573d6000803e3d6000fd5b505050506040513d602081101561038d57600080fd5b505192915050565b60008073ffffffffffffffffffffffffffffffffffffffff831615156103be57600091506103c9565b823b90506000811191505b50919050565b5490565b5490565b9055565b90555600a165627a7a72305820976bd9d6f6ad7a0d339ea3b373704842cdb3d9e15e7463676c04c1fa6ffb56410029'}), + (['0x710B3303fB508a84F10793c1106e32bE873C24cd', 'latest'], {'jsonrpc': '2.0', 'id': 0, 'result': '0x608060405234801561001057600080fd5b50600436106101c35760003560e01c8063893d20e8116100f9578063ba6252b211610097578063c8f712d511610071578063c8f712d5146103cd578063e78a5875146103e0578063eccd085f146103e8578063f47610e6146103fb57600080fd5b8063ba6252b21461038d578063c6dda2c31461039e578063c7062e98146103c557600080fd5b8063a50833d6116100d3578063a50833d614610340578063a749013e14610367578063b187bd261461037a578063b7b7a4081461038557600080fd5b8063893d20e8146102f55780638b21f170146103065780638d71a6f41461032d57600080fd5b8063251e3a211161016657806362272f281161014057806362272f281461029357806363d8882a1461029b5780636b96736b146102a35780637e923312146102e257600080fd5b8063251e3a21146102655780633ab54bc31461026d5780633e6f6d681461028057600080fd5b80630c68ba21116101a25780630c68ba2114610209578063111e53131461022c57806313af40351461023f57806320d580d11461025257600080fd5b8062fed902146101c8578063062b662e146101dd5780630665f04b146101f4575b600080fd5b6101db6101d6366004611559565b61040e565b005b6007545b6040519081526020015b60405180910390f35b6101fc61044d565b6040516101eb9190611572565b61021c6102173660046115db565b6104af565b60405190151581526020016101eb565b6101db61023a3660046115fd565b6104d1565b6101db61024d3660046115db565b610511565b6101db6102603660046116e1565b610544565b6002546101e1565b6101db61027b3660046117aa565b6108cf565b6101db61028e366004611559565b610a4e565b6009546101e1565b6101db610a81565b6102ca7f00000000000000000000000000000000219ab540356cbb839cbe05303d7705fa81565b6040516001600160a01b0390911681526020016101eb565b6101db6102f0366004611559565b610aec565b6004546001600160a01b03166102ca565b6102ca7f000000000000000000000000ae7ab96520de3a18e5e111b5eaab095312d7fe8481565b6101db61033b3660046115fd565b610b1f565b6101e17fd225b544f236c424d88abf1dd1a58e20df146bb6c02d916809b75d7a72bccb1081565b6101db6103753660046115db565b610cd7565b60085460ff1661021c565b6001546101e1565b6000546001600160a01b03166102ca565b6101e17f1670745baff8f26a6c2e451bc4eedecf0009a8271dcf5d224e8ab295f22b086381565b6003546101e1565b6101db6103db3660046117d7565b610d0a565b61021c610d7c565b6101db6103f6366004611559565b610db3565b6101e16104093660046115db565b610de6565b6004546001600160a01b031633146104415760405162461bcd60e51b815260040161043890611875565b60405180910390fd5b61044a81610df1565b50565b606060058054806020026020016040519081016040528092919081815260200182805480156104a557602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610487575b5050505050905090565b6001600160a01b03811660009081526006602052604081205415155b92915050565b6004546001600160a01b031633146104fb5760405162461bcd60e51b815260040161043890611875565b61050482610e2d565b61050d81610f13565b5050565b6004546001600160a01b0316331461053b5760405162461bcd60e51b815260040161043890611875565b61044a81610f48565b60007f00000000000000000000000000000000219ab540356cbb839cbe05303d7705fa6001600160a01b031663c5f2892f6040518163ffffffff1660e01b815260040160206040518083038186803b15801561059f57600080fd5b505afa1580156105b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105d7919061189b565b905080861461061f5760405162461bcd60e51b815260206004820152601460248201527319195c1bdcda5d081c9bdbdd0818da185b99d95960621b6044820152606401610438565b60085460ff16156106685760405162461bcd60e51b815260206004820152601360248201527219195c1bdcda5d1cc8185c99481c185d5cd959606a1b6044820152606401610438565b600060075411801561067d5750600754825110155b6106be5760405162461bcd60e51b81526020600482015260126024820152716e6f20677561726469616e2071756f72756d60701b6044820152606401610438565b6002546009546106ce90436118ca565b10156107145760405162461bcd60e51b8152602060048201526015602482015274746f6f206672657175656e74206465706f7369747360581b6044820152606401610438565b82158015906107235750828440145b6107675760405162461bcd60e51b81526020600482015260156024820152740eadccaf0e0cac6e8cac840c4d8dec6d640d0c2e6d605b1b6044820152606401610438565b60008060009054906101000a90046001600160a01b03166001600160a01b031663d07442f16040518163ffffffff1660e01b815260040160206040518083038186803b1580156107b657600080fd5b505afa1580156107ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107ee919061189b565b90508086146108375760405162461bcd60e51b81526020600482015260156024820152741ad95e5cc81bdc081a5b99195e0818da185b99d959605a1b6044820152606401610438565b6108448787878787611012565b6001546040516390adc83b60e01b815260048101919091527f000000000000000000000000ae7ab96520de3a18e5e111b5eaab095312d7fe846001600160a01b0316906390adc83b90602401600060405180830381600087803b1580156108aa57600080fd5b505af11580156108be573d6000803e3d6000fd5b505043600955505050505050505050565b60085460ff16156108de575050565b3360006108ea826111a1565b90508060001914156109ac57604080517fd225b544f236c424d88abf1dd1a58e20df146bb6c02d916809b75d7a72bccb10602082015290810185905260009060600160405160208183030381529060405280519060200120905061095781856000015186602001516111c6565b9250610962836111a1565b91508160001914156109aa5760405162461bcd60e51b8152602060048201526011602482015270696e76616c6964207369676e617475726560781b6044820152606401610438565b505b6003546109b985436118ca565b11156109fe5760405162461bcd60e51b81526020600482015260146024820152731c185d5cd9481a5b9d195b9d08195e1c1a5c995960621b6044820152606401610438565b6008805460ff191660011790556040516001600160a01b03831681527feb225a736fbfee3f85ccb72bdf84ff0396ab358b7970e2cc351ab3e3fd92358d906020015b60405180910390a150505050565b6004546001600160a01b03163314610a785760405162461bcd60e51b815260040161043890611875565b61044a81610f13565b6004546001600160a01b03163314610aab5760405162461bcd60e51b815260040161043890611875565b60085460ff1615610aea576008805460ff191690556040517f823084e804e36d8971e8b86749b6b0ace7b9f87ed272bef910c1e72d123eeb4890600090a15b565b6004546001600160a01b03163314610b165760405162461bcd60e51b815260040161043890611875565b61044a816111f0565b6004546001600160a01b03163314610b495760405162461bcd60e51b815260040161043890611875565b6001600160a01b03821660009081526006602052604090205480610ba05760405162461bcd60e51b815260206004820152600e60248201526d3737ba10309033bab0b93234b0b760911b6044820152606401610438565b60055480821115610bb357610bb36118e1565b808214610c495760006005610bc96001846118ca565b81548110610bd957610bd96118f7565b6000918252602090912001546001600160a01b03169050806005610bfe6001866118ca565b81548110610c0e57610c0e6118f7565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559290911681526006909152604090208290555b6001600160a01b0384166000908152600660205260408120556005805480610c7357610c7361190d565b600082815260209020810160001990810180546001600160a01b0319169055019055610c9e83610f13565b6040516001600160a01b03851681527fb8107d0c6b40be480ce3172ee66ba6d64b71f6b1685a851340036e6e2e3e3c5290602001610a40565b6004546001600160a01b03163314610d015760405162461bcd60e51b815260040161043890611875565b61044a816112a5565b6004546001600160a01b03163314610d345760405162461bcd60e51b815260040161043890611875565b60005b8251811015610d7257610d62838281518110610d5557610d556118f7565b6020026020010151610e2d565b610d6b81611923565b9050610d37565b5061050d81610f13565b60085460009060ff16158015610d9457506000600754115b8015610dae5750600254600954610dab90436118ca565b10155b905090565b6004546001600160a01b03163314610ddd5760405162461bcd60e51b815260040161043890611875565b61044a816112f3565b60006104cb826111a1565b60018190556040518181527f4d72502b63cfe737b98b225a53708fe347cf8274baed31e0c4e4941b758da992906020015b60405180910390a150565b6001600160a01b03811660009081526006602052604090205415610e875760405162461bcd60e51b81526020600482015260116024820152706475706c6963617465206164647265737360781b6044820152606401610438565b600580546001810182557f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db00180546001600160a01b0319166001600160a01b038416908117909155905460008281526006602090815260409182902092909255519182527f038596bb31e2e7d3d9f184d4c98b310103f6d7f5830e5eec32bffe6f1728f9699101610e22565b60078190556040518181527f70d7432f2ec830b36e5b8c45176a8079968714429c4be85665c06ec1b8fde4bb90602001610e22565b6001600160a01b038116610fc45760405162461bcd60e51b815260206004820152603c60248201527f696e76616c69642076616c756520666f72206f776e65723a206d75737420626560448201527f20646966666572656e742066726f6d207a65726f2061646472657373000000006064820152608401610438565b600480546001600160a01b0319166001600160a01b0383169081179091556040519081527fa2ea9883a321a3e97b8266c2b078bfeec6d50c711ed71f874a90d500ae2eaf3690602001610e22565b604080517f1670745baff8f26a6c2e451bc4eedecf0009a8271dcf5d224e8ab295f22b08636020820152908101869052606081018590526080810184905260a0810183905260009060c0016040516020818303038152906040528051906020012090506000805b83518110156111975760006110c98486848151811061109a5761109a6118f7565b6020026020010151600001518785815181106110b8576110b86118f7565b6020026020010151602001516111c6565b90506110ec816001600160a01b0316600090815260066020526040902054151590565b61112c5760405162461bcd60e51b8152602060048201526011602482015270696e76616c6964207369676e617475726560781b6044820152606401610438565b826001600160a01b0316816001600160a01b0316116111855760405162461bcd60e51b81526020600482015260156024820152741cda59db985d1d5c995cc81b9bdd081cdbdc9d1959605a1b6044820152606401610438565b915061119081611923565b9050611079565b5050505050505050565b6001600160a01b0381166000908152600660205260408120546104cb9060019061193e565b60006001600160ff1b03821660ff83901c601b016111e6868287856113b0565b9695505050505050565b600081116112705760405162461bcd60e51b815260206004820152604160248201527f696e76616c69642076616c756520666f72206d696e4465706f736974426c6f6360448201527f6b44697374616e63653a206d7573742062652067726561746572207468656e206064820152600360fc1b608482015260a401610438565b60028190556040518181527fdb69cbc4aa6648b506b7854c26807bfd811c27feaf97ac8847e3a66356cace1490602001610e22565b600080546001600160a01b0319166001600160a01b0383169081179091556040519081527f7f40d0cbed36e9d36ffe92f223f1f44635a84ad83db42f8596e4885984b608a290602001610e22565b6000811161137b5760405162461bcd60e51b815260206004820152604960248201527f696e76616c69642076616c756520666f72207061757365496e74656e7456616c60448201527f6964697479506572696f64426c6f636b733a206d75737420626520677265617460648201526806572207468656e20360bc1b608482015260a401610438565b60038190556040518181527f8120886d27fee35672e5d5a482d6c858105aebb26caf12178b8c0034fa88c2ba90602001610e22565b60007f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a082111561142d5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610438565b8360ff16601b148061144257508360ff16601c145b6114995760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b6064820152608401610438565b6040805160008082526020820180845288905260ff871692820192909252606081018590526080810184905260019060a0016020604051602081039080840390855afa1580156114ed573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166115505760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610438565b95945050505050565b60006020828403121561156b57600080fd5b5035919050565b6020808252825182820181905260009190848201906040850190845b818110156115b35783516001600160a01b03168352928401929184019160010161158e565b50909695505050505050565b80356001600160a01b03811681146115d657600080fd5b919050565b6000602082840312156115ed57600080fd5b6115f6826115bf565b9392505050565b6000806040838503121561161057600080fd5b611619836115bf565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561166657611666611627565b604052919050565b600067ffffffffffffffff82111561168857611688611627565b5060051b60200190565b6000604082840312156116a457600080fd5b6040516040810181811067ffffffffffffffff821117156116c7576116c7611627565b604052823581526020928301359281019290925250919050565b600080600080600060a086880312156116f957600080fd5b853594506020808701359450604080880135945060608801359350608088013567ffffffffffffffff81111561172e57600080fd5b8801601f81018a1361173f57600080fd5b803561175261174d8261166e565b61163d565b81815260069190911b8201840190848101908c83111561177157600080fd5b928501925b82841015611797576117888d85611692565b82529284019290850190611776565b8096505050505050509295509295909350565b600080606083850312156117bd57600080fd5b823591506117ce8460208501611692565b90509250929050565b600080604083850312156117ea57600080fd5b823567ffffffffffffffff81111561180157600080fd5b8301601f8101851361181257600080fd5b8035602061182261174d8361166e565b82815260059290921b8301810191818101908884111561184157600080fd5b938201935b8385101561186657611857856115bf565b82529382019390820190611846565b98969091013596505050505050565b6020808252600c908201526b3737ba1030b71037bbb732b960a11b604082015260600190565b6000602082840312156118ad57600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b6000828210156118dc576118dc6118b4565b500390565b634e487b7160e01b600052600160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052603160045260246000fd5b6000600019821415611937576119376118b4565b5060010190565b60008083128015600160ff1b85018412161561195c5761195c6118b4565b6001600160ff1b0384018313811615611977576119776118b4565b5050039056fea2646970667358221220ad75fe8f6a607bdd29fc8a5e8b920609f7d6a7ecdb6c2096676458daf24bfbe764736f6c63430008090033'}), + (['0x00000000219ab540356cBB839Cbe05303d7705Fa', 'latest'], {'jsonrpc': '2.0', 'id': 0, 'result': '0x60806040526004361061003f5760003560e01c806301ffc9a71461004457806322895118146100a4578063621fd130146101ba578063c5f2892f14610244575b600080fd5b34801561005057600080fd5b506100906004803603602081101561006757600080fd5b50357fffffffff000000000000000000000000000000000000000000000000000000001661026b565b604080519115158252519081900360200190f35b6101b8600480360360808110156100ba57600080fd5b8101906020810181356401000000008111156100d557600080fd5b8201836020820111156100e757600080fd5b8035906020019184600183028401116401000000008311171561010957600080fd5b91939092909160208101903564010000000081111561012757600080fd5b82018360208201111561013957600080fd5b8035906020019184600183028401116401000000008311171561015b57600080fd5b91939092909160208101903564010000000081111561017957600080fd5b82018360208201111561018b57600080fd5b803590602001918460018302840111640100000000831117156101ad57600080fd5b919350915035610304565b005b3480156101c657600080fd5b506101cf6110b5565b6040805160208082528351818301528351919283929083019185019080838360005b838110156102095781810151838201526020016101f1565b50505050905090810190601f1680156102365780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561025057600080fd5b506102596110c7565b60408051918252519081900360200190f35b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a70000000000000000000000000000000000000000000000000000000014806102fe57507fffffffff0000000000000000000000000000000000000000000000000000000082167f8564090700000000000000000000000000000000000000000000000000000000145b92915050565b6030861461035d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806118056026913960400191505060405180910390fd5b602084146103b6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603681526020018061179c6036913960400191505060405180910390fd5b6060821461040f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260298152602001806118786029913960400191505060405180910390fd5b670de0b6b3a7640000341015610470576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806118526026913960400191505060405180910390fd5b633b9aca003406156104cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260338152602001806117d26033913960400191505060405180910390fd5b633b9aca00340467ffffffffffffffff811115610535576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602781526020018061182b6027913960400191505060405180910390fd5b6060610540826114ba565b90507f649bbc62d0e31342afea4e5cd82d4049e7e1ee912fc0889aa790803be39038c589898989858a8a6105756020546114ba565b6040805160a0808252810189905290819060208201908201606083016080840160c085018e8e80828437600083820152601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01690910187810386528c815260200190508c8c808284376000838201819052601f9091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01690920188810386528c5181528c51602091820193918e019250908190849084905b83811015610648578181015183820152602001610630565b50505050905090810190601f1680156106755780820380516001836020036101000a031916815260200191505b5086810383528881526020018989808284376000838201819052601f9091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169092018881038452895181528951602091820193918b019250908190849084905b838110156106ef5781810151838201526020016106d7565b50505050905090810190601f16801561071c5780820380516001836020036101000a031916815260200191505b509d505050505050505050505050505060405180910390a1600060028a8a600060801b604051602001808484808284377fffffffffffffffffffffffffffffffff0000000000000000000000000000000090941691909301908152604080517ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0818403018152601090920190819052815191955093508392506020850191508083835b602083106107fc57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920191602091820191016107bf565b51815160209384036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01801990921691161790526040519190930194509192505080830381855afa158015610859573d6000803e3d6000fd5b5050506040513d602081101561086e57600080fd5b5051905060006002806108846040848a8c6116fe565b6040516020018083838082843780830192505050925050506040516020818303038152906040526040518082805190602001908083835b602083106108f857805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920191602091820191016108bb565b51815160209384036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01801990921691161790526040519190930194509192505080830381855afa158015610955573d6000803e3d6000fd5b5050506040513d602081101561096a57600080fd5b5051600261097b896040818d6116fe565b60405160009060200180848480828437919091019283525050604080518083038152602092830191829052805190945090925082918401908083835b602083106109f457805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920191602091820191016109b7565b51815160209384036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01801990921691161790526040519190930194509192505080830381855afa158015610a51573d6000803e3d6000fd5b5050506040513d6020811015610a6657600080fd5b5051604080516020818101949094528082019290925280518083038201815260609092019081905281519192909182918401908083835b60208310610ada57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101610a9d565b51815160209384036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01801990921691161790526040519190930194509192505080830381855afa158015610b37573d6000803e3d6000fd5b5050506040513d6020811015610b4c57600080fd5b50516040805160208101858152929350600092600292839287928f928f92018383808284378083019250505093505050506040516020818303038152906040526040518082805190602001908083835b60208310610bd957805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101610b9c565b51815160209384036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01801990921691161790526040519190930194509192505080830381855afa158015610c36573d6000803e3d6000fd5b5050506040513d6020811015610c4b57600080fd5b50516040518651600291889160009188916020918201918291908601908083835b60208310610ca957805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101610c6c565b6001836020036101000a0380198251168184511680821785525050505050509050018367ffffffffffffffff191667ffffffffffffffff1916815260180182815260200193505050506040516020818303038152906040526040518082805190602001908083835b60208310610d4e57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101610d11565b51815160209384036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01801990921691161790526040519190930194509192505080830381855afa158015610dab573d6000803e3d6000fd5b5050506040513d6020811015610dc057600080fd5b5051604080516020818101949094528082019290925280518083038201815260609092019081905281519192909182918401908083835b60208310610e3457805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101610df7565b51815160209384036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01801990921691161790526040519190930194509192505080830381855afa158015610e91573d6000803e3d6000fd5b5050506040513d6020811015610ea657600080fd5b50519050858114610f02576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260548152602001806117486054913960600191505060405180910390fd5b60205463ffffffff11610f60576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806117276021913960400191505060405180910390fd5b602080546001019081905560005b60208110156110a9578160011660011415610fa0578260008260208110610f9157fe5b0155506110ac95505050505050565b600260008260208110610faf57fe5b01548460405160200180838152602001828152602001925050506040516020818303038152906040526040518082805190602001908083835b6020831061102557805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101610fe8565b51815160209384036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01801990921691161790526040519190930194509192505080830381855afa158015611082573d6000803e3d6000fd5b5050506040513d602081101561109757600080fd5b50519250600282049150600101610f6e565b50fe5b50505050505050565b60606110c26020546114ba565b905090565b6020546000908190815b60208110156112f05781600116600114156111e6576002600082602081106110f557fe5b01548460405160200180838152602001828152602001925050506040516020818303038152906040526040518082805190602001908083835b6020831061116b57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909201916020918201910161112e565b51815160209384036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01801990921691161790526040519190930194509192505080830381855afa1580156111c8573d6000803e3d6000fd5b5050506040513d60208110156111dd57600080fd5b505192506112e2565b600283602183602081106111f657fe5b015460405160200180838152602001828152602001925050506040516020818303038152906040526040518082805190602001908083835b6020831061126b57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909201916020918201910161122e565b51815160209384036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01801990921691161790526040519190930194509192505080830381855afa1580156112c8573d6000803e3d6000fd5b5050506040513d60208110156112dd57600080fd5b505192505b6002820491506001016110d1565b506002826112ff6020546114ba565b600060401b6040516020018084815260200183805190602001908083835b6020831061135a57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909201916020918201910161131d565b51815160209384036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01801990921691161790527fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000095909516920191825250604080518083037ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8018152601890920190819052815191955093508392850191508083835b6020831061143f57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101611402565b51815160209384036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01801990921691161790526040519190930194509192505080830381855afa15801561149c573d6000803e3d6000fd5b5050506040513d60208110156114b157600080fd5b50519250505090565b60408051600880825281830190925260609160208201818036833701905050905060c082901b8060071a60f81b826000815181106114f457fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508060061a60f81b8260018151811061153757fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508060051a60f81b8260028151811061157a57fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508060041a60f81b826003815181106115bd57fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508060031a60f81b8260048151811061160057fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508060021a60f81b8260058151811061164357fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508060011a60f81b8260068151811061168657fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508060001a60f81b826007815181106116c957fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535050919050565b6000808585111561170d578182fd5b83861115611719578182fd5b505082019391909203915056fe4465706f736974436f6e74726163743a206d65726b6c6520747265652066756c6c4465706f736974436f6e74726163743a207265636f6e7374727563746564204465706f7369744461746120646f6573206e6f74206d6174636820737570706c696564206465706f7369745f646174615f726f6f744465706f736974436f6e74726163743a20696e76616c6964207769746864726177616c5f63726564656e7469616c73206c656e6774684465706f736974436f6e74726163743a206465706f7369742076616c7565206e6f74206d756c7469706c65206f6620677765694465706f736974436f6e74726163743a20696e76616c6964207075626b6579206c656e6774684465706f736974436f6e74726163743a206465706f7369742076616c756520746f6f20686967684465706f736974436f6e74726163743a206465706f7369742076616c756520746f6f206c6f774465706f736974436f6e74726163743a20696e76616c6964207369676e6174757265206c656e677468a2646970667358221220dceca8706b29e917dacf25fceef95acac8d90d765ac926663ce4096195952b6164736f6c634300060b0033'}), + + ), + 'eth_maxPriorityFeePerGas': ( + ((), {'jsonrpc': '2.0', 'id': 14, 'result': '0x3b9aca00'}), + ), + 'eth_getBlockByHash': ( + (['0xf7b1887b32ad3b9346f907947e2dffb5012de2b7cb7b6b84b950356237944d0c', False], {'jsonrpc': '2.0', 'id': 0, 'result': {'baseFeePerGas': '0xffbf193d7', 'difficulty': '0x29aa4945316813', 'extraData': '0x486976656f6e2065752d6865617679', 'gasLimit': '0x1c9c380', 'gasUsed': '0x65fe32', 'hash': '0xf7b1887b32ad3b9346f907947e2dffb5012de2b7cb7b6b84b950356237944d0c', 'logsBloom': '0x092000900100008810000000805c080000000000000008000001606044086000080101400080020080005883004901909220824588002c900088840040212040880004004021410a8822000810002020800100088240050104000c03802844101a00002012004482014408221000189000008840081064082000003404288c0800820120104030000044008a0821000241000401910080180021084201100401071880289001a00202000080080810401000001021802010183c1000100c2000210003032200081028010d20005600400000024203991230848a000201026008a131202a0400090000419000010008a00000a880305102502000090000001220', 'miner': '0x1ad91ee08f21be3de0ba2ba6918e714da6b45836', 'mixHash': '0x98630b099b638f63942ba8ff6b65b8a7b26dd38c6e125528104aeff50c01d02a', 'nonce': '0x0000030ab4a3b4d8', 'number': '0xd17320', 'parentHash': '0xc2ea9185d4821a13da4a2975c85673eff34944e92c0b5d3516a3b4482ac2ab58', 'receiptsRoot': '0x3f30031d0a235a05e183de7416a42a2bdef7cbcbabd581282cfc8b2e239b9abe', 'sha3Uncles': '0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347', 'size': '0x63ff', 'stateRoot': '0x22b47b4d4370336d5a0ffb7423b1a40257b23fdcfe28a3ec45a21e60590e1dd8', 'timestamp': '0x61a88d67', 'totalDifficulty': '0x78d36e1e439ded9742d', 'transactions': ['0x65af93227a93216f5f27c5015f6f9396b90e4167be8e9372592c3b9650729c79', '0x0b8654b18d570962dfb3be131f294fe07ba5672c8e3648aec621c8ed51d59eb0', '0x4e5cdd826e957db5b1052a7a5d2cf993247ce6d17ea130b182ccaeebef6094e0', '0x35dcf51285cfc36f5fb4c0fd416f2d3bcc15d1480cf8a55c61efb9b695421355', '0xec4dbb6f8897b7d9f4c6cc59817f426e2efb6117fb9b60f669be676c0b808f30', '0x5784b40994e35ce5187655c613bb8270ba3b2a57c3b1536c7cc38c38c47a877b', '0x4e2cf3c48c1e4dedbd8770dbb0e11539d7224546130333642def3ab9f78cc7d8', '0x77afae22c5634e4f4c19e6beabf0b101db4e07cb6a482956725168afcaae6344', '0x4fe23160878453cbe977da19be25155ef46744ecf1d2981df5368cefc75604e8', '0xaf37fa5dfe43fae7c11b439279a2ce81fbd020cf9f89a4b01b6ba2dbf818f049', '0xa9afcffd6d3795362d7033f89aa10fcc0401ef1f1d96901b2edd46183f48fa21', '0xf797252a8371ea17a9af50bc10703712975807e3a8e58e34efa769ad68322ec2', '0xec9cd815126ef1f986e728d62f3cb367882be23172349672d21790e84630d52c', '0x3362d72d2b51bb41490481d4c769dcfb624f69a875a9e49bfcc325bc93405002', '0x562b3f8e433c3d71359a9fc067937ac597565a4699758838a48c53dc9664d9ce', '0xdca4669a396179c7ce92e23854080e9409380097e1a8063c5a305f15b960ccec', '0xbd265c019c17f35b09af4861d45ebde43d6b434a0bb0cc056a73f4bb619e1b3e', '0x7fa9303a4fa0b2762b806d686577f946d65061d6a0715691a480983b0c1bd3eb', '0xef0ce7a2ee102797454b4c15bffde48b11f69d9ef0f326f37841e7b8a0c5710c', '0x61bbbf3b653531b5705bd7f3958763af9f2b6c1645ebd516667ae47d03ea8e3f', '0x254fcdf47fbb9cff345400c5dc9216c4f33f7e2cef1ba056ce7ce06c1333f9f4', '0x8d6b3838aed7e0e875064211047fcc25a0dabb17c3c5133310eb6404fd066610', '0x5720197fa128bb7f5b7da15917b691b30a34dfaba6a4b6dbfed7e9fc62ce56ee', '0xfdcab88e7d59ad2a72702b25324884405906629da49a2970ce41dd94d7d2f693', '0x3139b8d1f05d220af2d9973fa7e7bc2f72f7dd5103533358d551e17bffe8c283', '0xd1d52415e2543f8f3ada618c6d38d8aeb4391d70e3d6e173fa5e0b59ca543642', '0x32d7cb13171ca1f8af20f9538562dc55f243c7c4932ecf6b13af07ccd0a5e911', '0x3f3561d30bf4595321e675850a026a62c38f88a211a52a98281a311e42382688', '0x9caf0cba2e321a488d09d9b180ea0df6c918a938e46f01a7b6c643f5dd08aa9c', '0xb065aebb4295617d35a7a6948147ce62fe65ccdc8bbe1970634e3da659a5a0e4', '0x17b5caf0210df90353f3cf30c33acfa60f57877acf28003396d1b9b079d8d033', '0x21834b1993e2d674b0956b86dea553d9462b5bf796ea641e5dd48b901345f8d6', '0x8e1b15ed802463a0324cc8a58d9fdd91c3858bd02743375dcafdfd1707200582', '0xc9c5971bff493ef3b62a4b2b4608dc608e5e7756204504211ac68498b7b34cc1', '0x707b3f3d0375a33e079e6317df5c89780f8a68abdf9c4f8ed303e326e2540403', '0x6afa5f502e2b36ffe30212d5825e40cf8570659f6b99c6a8f8924e956d84484f', '0x801d005f71330472eb94cb1a4b5fa1a4da54aa1dce6ec5e73653602c83cc3367', '0x10472a4f28d9e87344e4b4fee3e2ae18ce1017c58c81071e7ae763095069fd7f', '0x8675fe1441c22218c98dbdd08d28bdd2a91d6d5ff222f4aae52956db9f1a3847', '0xfcbd8ae334bb76c318948956597d56059072534039365adedc1cfc9ef184d846', '0xbb51f7a9e8b2344869516da8eb34940a8915eacf234c39649f09eade995c30c8', '0x7f0ed378838d0b72c8e4860efede754e85c2cc629d085f12a52920babc1707d3', '0x6b89090098ee6e1b6a16ac96c5dffad80322a6a136d85f139845f17b7301f2f4', '0x227f1a11a48aad6c4dbb7e3401219f0d26ea68ea5ba2160414b83fdb7e260a62', '0xa04141d8c2c600db65812ede705b10985399fcea8e7218d841b8a7a373f62d66', '0xfbe4fbeccb9cf51a8f8b77b84d42ec726bf33be845a8fe20372baf7f975fcfbd', '0x0f290cf9677c21190bdc81a3abab32e5e0c622470076404c7f9cbe9b85a76604', '0xcc88c425c5085ce25e5b231ea7a26e3fb3e7cb484b8babbe9d607973b41dfa9e', '0x006be29bbb258a38d2d606ba06a3bdf8b31046258d359f18aa995a6712da1357', '0xc2f104387aa55579c237f280e0ba1df680157e84ca8c91035d70d816b824c12d', '0xc62822e1042eab62bb258221e8025a9fc4d74bc58b09cd298e38d99d1f5124c7', '0xe2807ffcd149dc3d326e64f487dc52cdc9d8a4e467c357e5e4673e739a65d780', '0xac02ad169d2d0d7f965354ab5ebaa1674ade7405f13ed19e2df23f8e2dbd1e18', '0xbf35e37b9c35abe09c718124d017a000d1c709946f036999c2e88e43f83134fb', '0xbd60fbfaa148b42ea09bd873d892d85c9618af88f9b0492d00eb79095b4f5679', '0x39650ea365f331e083e5284a9bfe68bd0228734ab530449c4c1859267951d045', '0xe4fe2034919cd8550d43ca8eff8de469e97e3b7717d49ab170d7b0b3901031d1', '0xbad1ca6b0529eb796b3ec742470648eeb03c6f009acbcd7dff1c58593059a9a1', '0x39db5a0be5d0a5dbe9d366633ee7ebb5237f29a139318690b4b7a3df33fff669', '0xf5b5baa969befd31e539297ccd8a99bddf465183f44864fb89c73e7474ae56ea', '0x50a0a44e9cc1142a9fe7768bac30350650722de6ccf97aa5df00b0314316466d', '0xcdada45a8aa9f4cd9ad0a0b79045c3b96653230097de4dc05abefefbe02f4c7a', '0xd9167adec79e13b9a4327b6282dbbffcbbbf488ae9d31996403c52a586220d8f', '0x53a65c847879b49ed1df04080cb96cd751d0513bcc343d1bae174f49863a454b', '0xc7861a45ea4e9dfcd003917fb53df16f0558c38c2befc617cd018d71c817b587', '0xf83da1327dc6bcc1cf3eaeec6b1c1304758332059357f19a6b3a20de5b09ad08', '0x0b010e62fe93852e435c29da6ed3c49c56c26a05cf8cafa2e158374886752997', '0xcb5dd543f711f14d24111fc17d73b2c5bd058075e1bf4773ba7cdafd716d4dd3', '0x7d068f0129639e102f755e0b452b3ad98e6703b9b6a40fb48acce0f0f9eaf658', '0xd583e71f7c03e78e4b87fe45b7a64f7e61b91f6e5548159d11ceff37ca8a3362', '0xccc0f66457d1062975a192bfa84a98c259a3acfcf51edc135d460ce5fc44c999', '0x1dd110c83d242003f88e5a24193d100aad1a7f27a9ad87dcb0f37e945e445318', '0x6e48d8489c3a8d61ab67d8f54806d3469b1d1a15f90c43161f6cfc553c09a183', '0x150ed16197ed67682530cea4c6fd28b9149e744795154b050e9f758c7dc006c6', '0x6ad00ef83e6ae5b52d9ebf33140cd512fb551322de33a8fedb6906a644dd3452', '0x440518eead820d331fd3976fa370609dd4bfe59e0a0436668dd0526d1b4647d5', '0x42b3c2ab4d2996054a21817bcbe98b4e8dc0c83d7bce5bc3b8a8243b1e081585', '0xcbe3d82f95ecda55e7ba9d1f31c3f8f9576a0026aee4b55b706e7d7c65abdcbb', '0xa02785b22b85b9300ca384e2b6ecabf4bd14205b68a3913258140739dc2322ce', '0xf173c2b8d9cb3999be697dc582d8af92023577a8b15265a96f35ecf1c62cacd7', '0x9b56ddd6e4431c6199bbd94dff647fac2eca072d8c9fef1f9ab919343d684daa', '0x1a073ec19b0b8a0fa1344d7916d6aab03983bd63b1b3c31168f763170c9d106c', '0x13566558636a2f49e00c2babf517c3a18cc2a2ff01c971d4fc051751bf6b0b4b', '0x488688bdf3baddcb0b04c259ebfe57ef0543b575bbf66295d4f5b9c2b412f939'], 'transactionsRoot': '0xfa0b8a5325ea94fd117575c1aedf498ccaccdca636334f938b3b3184426f749c', 'uncles': []}}), + ) +} + + +LIDO_LOCATOR_CALLS = ( + (({'to': '0xC1d0b3DE6792Bf6b4b37EccdcC24e45978Cfd2Eb', 'data': '0x23509a2d'}, 'latest'), + {'jsonrpc': '2.0', 'id': 0, 'result': '0x000000000000000000000000ae7ab96520DE3A18E5e111B5EaAb095312D7fE84'}), + (({'to': '0xC1d0b3DE6792Bf6b4b37EccdcC24e45978Cfd2Eb', 'data': '0x472c1776'}, 'latest'), + {'jsonrpc': '2.0', 'id': 0, 'result': '0x000000000000000000000000710B3303fB508a84F10793c1106e32bE873C24cd'}), + (({'to': '0xC1d0b3DE6792Bf6b4b37EccdcC24e45978Cfd2Eb', 'data': '0xef6c064c'}, 'latest'), + {'jsonrpc': '2.0', 'id': 0, 'result': '0x0000000000000000000000000000000000000000000000000000000000000000'}), +) diff --git a/tests/fixtures/contracts.py b/tests/fixtures/contracts.py deleted file mode 100644 index 2f497af5..00000000 --- a/tests/fixtures/contracts.py +++ /dev/null @@ -1,51 +0,0 @@ -from typing import cast - -import pytest - -import variables -from blockchain.contracts.deposit_security_module import DepositSecurityModuleContract -from blockchain.contracts.lido import LidoContract -from blockchain.contracts.lido_locator import LidoLocatorContract -from blockchain.contracts.deposit import DepositContract -from blockchain.contracts.staking_router import StakingRouterContract - - -@pytest.fixture -def lido_locator(web3_provider_integration): - yield cast(LidoLocatorContract, web3_provider_integration.eth.contract( - # ToDo provide lido locator address via env variable - address=variables.LIDO_LOCATOR, - ContractFactoryClass=LidoLocatorContract, - )) - - -@pytest.fixture -def deposit_contract(web3_provider_integration): - yield cast(DepositContract, web3_provider_integration.eth.contract( - address=variables.DEPOSIT_CONTRACT, - ContractFactoryClass=DepositContract, - )) - - -@pytest.fixture -def lido_contract(web3_provider_integration, lido_locator): - yield cast(LidoContract, web3_provider_integration.eth.contract( - address=lido_locator.lido(), - ContractFactoryClass=LidoContract, - )) - - -@pytest.fixture -def deposit_security_module(web3_provider_integration, lido_locator): - yield cast(DepositSecurityModuleContract, web3_provider_integration.eth.contract( - address=lido_locator.deposit_security_module(), - ContractFactoryClass=DepositSecurityModuleContract, - )) - - -@pytest.fixture -def staking_router(web3_provider_integration, lido_locator): - yield cast(StakingRouterContract, web3_provider_integration.eth.contract( - address=lido_locator.staking_router(), - ContractFactoryClass=StakingRouterContract, - )) diff --git a/tests/fixtures/depositor_fixtures.py b/tests/fixtures/depositor_fixtures.py new file mode 100644 index 00000000..cf8bfd67 --- /dev/null +++ b/tests/fixtures/depositor_fixtures.py @@ -0,0 +1,139 @@ +from fixtures.common_fixtures import COMMON_FIXTURES, LIDO_LOCATOR_CALLS +from fixtures.gas_fee_fixtures import GAS_FEE_FIXTURES + + +DEPOSITOR_BASE_FIXTURES = { + 'eth_call': ( + *LIDO_LOCATOR_CALLS, + (({'to': '0x710B3303fB508a84F10793c1106e32bE873C24cd', 'data': '0x062b662e'}, 'latest'), {'jsonrpc': '2.0', 'id': 11, 'result': '0x0000000000000000000000000000000000000000000000000000000000000001'}), + (({'to': '0x710B3303fB508a84F10793c1106e32bE873C24cd', 'data': '0xc6dda2c3'}, 'latest'), {'jsonrpc': '2.0', 'id': 12, 'result': '0x1670745baff8f26a6c2e451bc4eedecf0009a8271dcf5d224e8ab295f22b0863'}), + (({'to': '0x00000000219ab540356cBB839Cbe05303d7705Fa', 'data': '0xc5f2892f'}, '0xd17320'), {'jsonrpc': '2.0', 'id': 0, 'result': '0x4eff65af4dac60f23b625a5d9c80f9cc36b0754cd1db072cd47bd6d053e2f94e'}), + (({'to': '0x55032650b14df07b85bF18A3a3eC8E0Af2e028d5', 'data': '0xd07442f1'}, '0xd17320'), {'jsonrpc': '2.0', 'id': 0, 'result': '0x0000000000000000000000000000000000000000000000000000000000000043'}), + (({'to': '0x710B3303fB508a84F10793c1106e32bE873C24cd', 'data': '0x39443b8e0000000000000000000000000000000000000000000000000000000000000001'}, '0xd17320'), {'jsonrpc': '2.0', 'id': 0, 'result': '0x0000000000000000000000000000000000000000000000000000000000000001'}), + (({'to': '0xae7ab96520DE3A18E5e111B5EaAb095312D7fE84', 'data': '0x47b714e0'}, '0xd17320'), {'jsonrpc': '2.0', 'id': 0, 'result': '0x0000000000000000000000000000000000000000001111271e5ec338bae335ab'}), + (({'from': '0xae7ab96520DE3A18E5e111B5EaAb095312D7fE84', 'to': '0x55032650b14df07b85bF18A3a3eC8E0Af2e028d5', 'data': '0x41bc716f0000000000000000000000000000000000000000000000000000000000000001'}, '0xd17320'), {'jsonrpc': '2.0', 'id': 0, 'result': '0x000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000030a6c073f8bc871eea37b7b6dacaaac419473076fb05d7a4631173d1dc70c2adb47b9c0235d0ffb29e240ccab19e6152e8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060a9d0b8d92e82182d933a26786a7b394843d5d19ef565b0214b2d9b7e82f6eb66d5cade6cbad25256ee7555b33c2c2f861148ec0ab495baefd06ff503c6c9006ff68e307f8a0f911573093d8258522d2666619a396d7fbe2cefb84940a1a48826'}), + (({'to': '0x710B3303fB508a84F10793c1106e32bE873C24cd', 'data': '0x0665f04b'}, 'latest'), {'jsonrpc': '2.0', 'id': 0, 'result': '0x0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000600000000000000000000000043464Fe06c18848a2E2e913194D64c1970f4326a0000000000000000000000007912fa976bcde9c2cf728e213e892ad7588e6aaf00000000000000000000000014d5d5b71e048d2d75a39ffc5b407e3a3ab6f314000000000000000000000000f82d88217c249297c6037ba77ce34b3d8a90ab43000000000000000000000000a56b128ea2ea237052b0fa2a96a387c0e43157d8000000000000000000000000d4ef84b638b334699bcf5af4b0410b8ccd71943f'}), + (({'to': '0x710B3303fB508a84F10793c1106e32bE873C24cd', 'data': '0x0df9a86d0000000000000000000000000000000000000000000000000000000000d1731f432e218931e9b94f0702ecb1b0d084c467a86b384767ce38c4fe1644630705324eff65af4dac60f23b625a5d9c80f9cc36b0754cd1db072cd47bd6d053e2f94e0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001c2235eb6983f80d19158f807d5d90d93abec52034ea7184bbf164ba211f0011675354ffc9fb6e7a4b4c01c622661a1d0382ace8c4ff8024626e39ac1a6a613d0'}, 'latest'), {'jsonrpc': '2.0', 'id': 0, 'error': {'code': 3, 'data': '0x08c379a0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000146465706f73697420726f6f74206368616e676564000000000000000000000000', 'message': 'execution reverted: deposit root changed'}}), + (({'to': '0xae7ab96520DE3A18E5e111B5EaAb095312D7fE84', 'data': '0xf2cfa87d'}, '0xd17320'), {'jsonrpc': '2.0', 'id': 11, 'result': '0x0000000000000000000000000000000000000000001111271e5ec338bae335ab'}), + (({'to': '0x0000000000000000000000000000000000000000', 'data': '0x19c64b7900000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000001111271e5ec338bae335ab'}, '0xd17320'), {'jsonrpc': '2.0', 'id': 11, 'result': '0x0000000000000000000000000000000000000000000000000000000000000001'}), + ), + 'eth_accounts': ( + ((), {'jsonrpc': '2.0', 'id': 0, 'result': []}), + ), + 'eth_getBalance': ( + (['0x3f17f1962B36e491b30A40b2405849e597Ba5FB5', {'blockHash': '0xf7b1887b32ad3b9346f907947e2dffb5012de2b7cb7b6b84b950356237944d0c'}], {'jsonrpc': '2.0', 'id': 0, 'result': '0xffffffffffffffff'}), + ), + **GAS_FEE_FIXTURES, + **COMMON_FIXTURES, +} + +DEPOSITOR_BASE_FIXTURES_SMALL_BALANCE = { + **DEPOSITOR_BASE_FIXTURES, + 'eth_getBalance': ( + (['0x3f17f1962B36e491b30A40b2405849e597Ba5FB5', {'blockHash': '0xf7b1887b32ad3b9346f907947e2dffb5012de2b7cb7b6b84b950356237944d0c'}], {'jsonrpc': '2.0', 'id': 0, 'result': '0xfff'}), + ), +} + +DEPOSITOR_FIXTURES_WITH_HIGH_GAS = { + **DEPOSITOR_BASE_FIXTURES, + 'eth_getBlockByNumber': ( + (('latest', False), {'jsonrpc': '2.0', 'id': 15, + 'result': {'baseFeePerGas': '0xffbf193d7', 'difficulty': '0x29aa4945316813', + 'extraData': '0x486976656f6e2065752d6865617679', 'gasLimit': '0x1c9c380', + 'gasUsed': '0x65fe32', + 'hash': '0xf7b1887b32ad3b9346f907947e2dffb5012de2b7cb7b6b84b950356237944d0c', + 'logsBloom': '0x092000900100008810000000805c080000000000000008000001606044086000080101400080020080005883004901909220824588002c900088840040212040880004004021410a8822000810002020800100088240050104000c03802844101a00002012004482014408221000189000008840081064082000003404288c0800820120104030000044008a0821000241000401910080180021084201100401071880289001a00202000080080810401000001021802010183c1000100c2000210003032200081028010d20005600400000024203991230848a000201026008a131202a0400090000419000010008a00000a880305102502000090000001220', + 'miner': '0x1ad91ee08f21be3de0ba2ba6918e714da6b45836', + 'mixHash': '0x98630b099b638f63942ba8ff6b65b8a7b26dd38c6e125528104aeff50c01d02a', + 'nonce': '0x0000030ab4a3b4d8', 'number': '0xd17320', + 'parentHash': '0xc2ea9185d4821a13da4a2975c85673eff34944e92c0b5d3516a3b4482ac2ab58', + 'receiptsRoot': '0x3f30031d0a235a05e183de7416a42a2bdef7cbcbabd581282cfc8b2e239b9abe', + 'sha3Uncles': '0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347', + 'size': '0x63ff', + 'stateRoot': '0x22b47b4d4370336d5a0ffb7423b1a40257b23fdcfe28a3ec45a21e60590e1dd8', + 'timestamp': '0x61a88d67', 'totalDifficulty': '0x78d36e1e439ded9742d', + 'transactions': [], + 'transactionsRoot': '0xfa0b8a5325ea94fd117575c1aedf498ccaccdca636334f938b3b3184426f749c', + 'uncles': []}}), + (('pending', False), {'jsonrpc': '2.0', 'id': 0, + 'result': {'baseFeePerGas': '0x994a1533d7f', 'difficulty': '0x29be4af025287c', + 'extraData': '0xd883010a0c846765746888676f312e31372e33856c696e7578', + 'gasLimit': '0x1c95111', 'gasUsed': '0x1b68674', 'hash': None, + 'logsBloom': '0x57aa6b0f5ba66e9fbecbbec7849fcff758cddfdfbeb53b3ee5e9bb7d7f7bdfcf79fe7df2bdccb9b3d3e9dff8fcffd7d5ba2bf9139feffdb5f73ffe3bb23ef82d26fa5fa7af73bf2ce9afb63efaff5f7f6ef6387464cfb554b5f7b7ff96e35f753a41fbbf7fb5de9abf76d7d87dbefff6fffaf271ffbf37cf769f5d37b4affeed7f12b75b57fef817f3d72fbd0ff366cc5575ad3ddf361f2dcbae546fe9bfedd6bb5babcb6eee27f9eefd4fd3fdb94f29fb7eca707fffa7f355f3973e1efdbe93efebfbf7cda9997baf3bd9af57fbfd55ffeeff585f0efd7f779fbfab78de60fd8cfe3debfef5c3bdf9d53f9f97adff87c3e3cdc9f1f6f3f9255ffa56e8db7bef', + 'miner': None, + 'mixHash': '0x0000000000000000000000000000000000000000000000000000000000000000', + 'nonce': None, 'number': '0xd18e3e', + 'parentHash': '0x01802ffbfec338704593f416bb06005afb88c2a343d5a405d6d3f5359422a41c', + 'receiptsRoot': '0xa67cb02111fe0430601215c03aa86a2a95a032487c1644f7561e7d7ef58a4677', + 'sha3Uncles': '0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347', + 'size': '0x19b97', + 'stateRoot': '0xdbffeb5d663c710239c0b8bf57b562848e8bd6d55117ad29cbb9fe930ac0e11a', + 'timestamp': '0x61aa03ce', 'totalDifficulty': None, 'transactions': [], + 'transactionsRoot': '0xaeade20445251ded37c5efce433e9a526683d340da591774ac14acb4ca7a11d3', + 'uncles': []}}), + ), +} + +DEPOSITOR_FIXTURES_WITH_DEPOSIT_PROHIBIT = { + **DEPOSITOR_BASE_FIXTURES, + 'eth_call': ( + *LIDO_LOCATOR_CALLS, + (({'to': '0x710B3303fB508a84F10793c1106e32bE873C24cd', 'data': '0x062b662e'}, 'latest'), {'jsonrpc': '2.0', 'id': 11, 'result': '0x0000000000000000000000000000000000000000000000000000000000000001'}), + (({'to': '0x710B3303fB508a84F10793c1106e32bE873C24cd', 'data': '0xc6dda2c3'}, 'latest'), {'jsonrpc': '2.0', 'id': 12, 'result': '0x1670745baff8f26a6c2e451bc4eedecf0009a8271dcf5d224e8ab295f22b0863'}), + (({'to': '0x00000000219ab540356cBB839Cbe05303d7705Fa', 'data': '0xc5f2892f'}, '0xd17320'), {'jsonrpc': '2.0', 'id': 0, 'result': '0x4eff65af4dac60f23b625a5d9c80f9cc36b0754cd1db072cd47bd6d053e2f94e'}), + (({'to': '0x55032650b14df07b85bF18A3a3eC8E0Af2e028d5', 'data': '0xd07442f1'}, '0xd17320'), {'jsonrpc': '2.0', 'id': 0, 'result': '0x0000000000000000000000000000000000000000000000000000000000000043'}), + (({'to': '0x710B3303fB508a84F10793c1106e32bE873C24cd', 'data': '0x39443b8e0000000000000000000000000000000000000000000000000000000000000001'}, '0xd17320'), {'jsonrpc': '2.0', 'id': 0, 'result': '0x0000000000000000000000000000000000000000000000000000000000000000'}), + (({'to': '0xae7ab96520DE3A18E5e111B5EaAb095312D7fE84', 'data': '0x47b714e0'}, '0xd17320'), {'jsonrpc': '2.0', 'id': 0, 'result': '0x0000000000000000000000000000000000000000000011271e5ec338bae335ab'}), + (({'from': '0xae7ab96520DE3A18E5e111B5EaAb095312D7fE84', 'to': '0x55032650b14df07b85bF18A3a3eC8E0Af2e028d5', 'data': '0x41bc716f0000000000000000000000000000000000000000000000000000000000000001'}, '0xd17320'), {'jsonrpc': '2.0', 'id': 0, 'result': '0x000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000030a6c073f8bc871eea37b7b6dacaaac419473076fb05d7a4631173d1dc70c2adb47b9c0235d0ffb29e240ccab19e6152e8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060a9d0b8d92e82182d933a26786a7b394843d5d19ef565b0214b2d9b7e82f6eb66d5cade6cbad25256ee7555b33c2c2f861148ec0ab495baefd06ff503c6c9006ff68e307f8a0f911573093d8258522d2666619a396d7fbe2cefb84940a1a48826'}), + (({'to': '0x710B3303fB508a84F10793c1106e32bE873C24cd', 'data': '0x0665f04b'}, 'latest'), {'jsonrpc': '2.0', 'id': 0, 'result': '0x0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000600000000000000000000000043464Fe06c18848a2E2e913194D64c1970f4326a0000000000000000000000007912fa976bcde9c2cf728e213e892ad7588e6aaf00000000000000000000000014d5d5b71e048d2d75a39ffc5b407e3a3ab6f314000000000000000000000000f82d88217c249297c6037ba77ce34b3d8a90ab43000000000000000000000000a56b128ea2ea237052b0fa2a96a387c0e43157d8000000000000000000000000d4ef84b638b334699bcf5af4b0410b8ccd71943f'}), + (({'to': '0xae7ab96520DE3A18E5e111B5EaAb095312D7fE84', 'data': '0xf2cfa87d'}, '0xd17320'), + {'jsonrpc': '2.0', 'id': 11, 'result': '0x0000000000000000000000000000000000000000001111271e5ec338bae335ab'}), + (({'to': '0x0000000000000000000000000000000000000000', + 'data': '0x19c64b7900000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000001111271e5ec338bae335ab'}, + '0xd17320'), + {'jsonrpc': '2.0', 'id': 11, 'result': '0x0000000000000000000000000000000000000000000000000000000000000001'}), + + ), +} + +DEPOSITOR_FIXTURES_NOT_ENOUGH_BUFFERED_ETHER = { + **DEPOSITOR_BASE_FIXTURES, + 'eth_call': ( + *LIDO_LOCATOR_CALLS, + (({'to': '0x710B3303fB508a84F10793c1106e32bE873C24cd', 'data': '0x062b662e'}, 'latest'), {'jsonrpc': '2.0', 'id': 11, 'result': '0x0000000000000000000000000000000000000000000000000000000000000001'}), + (({'to': '0x710B3303fB508a84F10793c1106e32bE873C24cd', 'data': '0xc6dda2c3'}, 'latest'), {'jsonrpc': '2.0', 'id': 12, 'result': '0x1670745baff8f26a6c2e451bc4eedecf0009a8271dcf5d224e8ab295f22b0863'}), + (({'to': '0x00000000219ab540356cBB839Cbe05303d7705Fa', 'data': '0xc5f2892f'}, '0xd17320'), {'jsonrpc': '2.0', 'id': 0, 'result': '0x4eff65af4dac60f23b625a5d9c80f9cc36b0754cd1db072cd47bd6d053e2f94e'}), + (({'to': '0x55032650b14df07b85bF18A3a3eC8E0Af2e028d5', 'data': '0xd07442f1'}, '0xd17320'), {'jsonrpc': '2.0', 'id': 0, 'result': '0x0000000000000000000000000000000000000000000000000000000000000043'}), + (({'to': '0x710B3303fB508a84F10793c1106e32bE873C24cd', 'data': '0x39443b8e0000000000000000000000000000000000000000000000000000000000000001'}, '0xd17320'), {'jsonrpc': '2.0', 'id': 0, 'result': '0x0000000000000000000000000000000000000000000000000000000000000001'}), + (({'to': '0xae7ab96520DE3A18E5e111B5EaAb095312D7fE84', 'data': '0x47b714e0'}, '0xd17320'), {'jsonrpc': '2.0', 'id': 0, 'result': '0x0000000000000000000000000000000000000000000000000e5ec338bae335ab'}), + (({'from': '0xae7ab96520DE3A18E5e111B5EaAb095312D7fE84', 'to': '0x55032650b14df07b85bF18A3a3eC8E0Af2e028d5', 'data': '0x41bc716f0000000000000000000000000000000000000000000000000000000000000001'}, '0xd17320'), {'jsonrpc': '2.0', 'id': 0, 'result': '0x000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000030a6c073f8bc871eea37b7b6dacaaac419473076fb05d7a4631173d1dc70c2adb47b9c0235d0ffb29e240ccab19e6152e8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060a9d0b8d92e82182d933a26786a7b394843d5d19ef565b0214b2d9b7e82f6eb66d5cade6cbad25256ee7555b33c2c2f861148ec0ab495baefd06ff503c6c9006ff68e307f8a0f911573093d8258522d2666619a396d7fbe2cefb84940a1a48826'}), + (({'to': '0x710B3303fB508a84F10793c1106e32bE873C24cd', 'data': '0x0665f04b'}, 'latest'), {'jsonrpc': '2.0', 'id': 0, 'result': '0x0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000600000000000000000000000043464Fe06c18848a2E2e913194D64c1970f4326a0000000000000000000000007912fa976bcde9c2cf728e213e892ad7588e6aaf00000000000000000000000014d5d5b71e048d2d75a39ffc5b407e3a3ab6f314000000000000000000000000f82d88217c249297c6037ba77ce34b3d8a90ab43000000000000000000000000a56b128ea2ea237052b0fa2a96a387c0e43157d8000000000000000000000000d4ef84b638b334699bcf5af4b0410b8ccd71943f'}), + (({'to': '0xae7ab96520DE3A18E5e111B5EaAb095312D7fE84', 'data': '0xf2cfa87d'}, '0xd17320'), + {'jsonrpc': '2.0', 'id': 11, 'result': '0x0000000000000000000000000000000000000000000000000000000000000001'}), + (({'to': '0x0000000000000000000000000000000000000000', + 'data': '0x19c64b7900000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001'}, + '0xd17320'), + {'jsonrpc': '2.0', 'id': 11, 'result': '0x0000000000000000000000000000000000000000000000000000000000000001'}), + ), +} + +DEPOSITOR_FIXTURES_NO_FREE_KEYS = { + **DEPOSITOR_BASE_FIXTURES, + 'eth_call': ( + *LIDO_LOCATOR_CALLS, + (({'to': '0x710B3303fB508a84F10793c1106e32bE873C24cd', 'data': '0x062b662e'}, 'latest'), {'jsonrpc': '2.0', 'id': 11, 'result': '0x0000000000000000000000000000000000000000000000000000000000000001'}), + (({'to': '0x710B3303fB508a84F10793c1106e32bE873C24cd', 'data': '0xc6dda2c3'}, 'latest'), {'jsonrpc': '2.0', 'id': 12, 'result': '0x1670745baff8f26a6c2e451bc4eedecf0009a8271dcf5d224e8ab295f22b0863'}), + (({'to': '0x00000000219ab540356cBB839Cbe05303d7705Fa', 'data': '0xc5f2892f'}, '0xd17320'), {'jsonrpc': '2.0', 'id': 0, 'result': '0x4eff65af4dac60f23b625a5d9c80f9cc36b0754cd1db072cd47bd6d053e2f94e'}), + (({'to': '0x55032650b14df07b85bF18A3a3eC8E0Af2e028d5', 'data': '0xd07442f1'}, '0xd17320'), {'jsonrpc': '2.0', 'id': 0, 'result': '0x0000000000000000000000000000000000000000000000000000000000000043'}), + (({'to': '0x710B3303fB508a84F10793c1106e32bE873C24cd', 'data': '0x39443b8e0000000000000000000000000000000000000000000000000000000000000001'}, '0xd17320'), {'jsonrpc': '2.0', 'id': 0, 'result': '0x0000000000000000000000000000000000000000000000000000000000000001'}), + (({'to': '0xae7ab96520DE3A18E5e111B5EaAb095312D7fE84', 'data': '0x47b714e0'}, '0xd17320'), {'jsonrpc': '2.0', 'id': 0, 'result': '0x0000000000000000000000000000000000000000000011271e5ec338bae335ab'}), + (({'from': '0xae7ab96520DE3A18E5e111B5EaAb095312D7fE84', 'to': '0x55032650b14df07b85bF18A3a3eC8E0Af2e028d5', 'data': '0x41bc716f0000000000000000000000000000000000000000000000000000000000000001'}, '0xd17320'), {'jsonrpc': '2.0', 'id': 0, 'result': '0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000'}), + (({'to': '0x710B3303fB508a84F10793c1106e32bE873C24cd', 'data': '0x0665f04b'}, 'latest'), {'jsonrpc': '2.0', 'id': 0, 'result': '0x0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000600000000000000000000000043464Fe06c18848a2E2e913194D64c1970f4326a0000000000000000000000007912fa976bcde9c2cf728e213e892ad7588e6aaf00000000000000000000000014d5d5b71e048d2d75a39ffc5b407e3a3ab6f314000000000000000000000000f82d88217c249297c6037ba77ce34b3d8a90ab43000000000000000000000000a56b128ea2ea237052b0fa2a96a387c0e43157d8000000000000000000000000d4ef84b638b334699bcf5af4b0410b8ccd71943f'}), + (({'to': '0xae7ab96520DE3A18E5e111B5EaAb095312D7fE84', 'data': '0xf2cfa87d'}, '0xd17320'), + {'jsonrpc': '2.0', 'id': 11, 'result': '0x0000000000000000000000000000000000000000001111271e5ec338bae335ab'}), + (({'to': '0x0000000000000000000000000000000000000000', + 'data': '0x19c64b7900000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000001111271e5ec338bae335ab'}, + '0xd17320'), + {'jsonrpc': '2.0', 'id': 11, 'result': '0x0000000000000000000000000000000000000000000000000000000000000000'}), + ), +} diff --git a/tests/fixtures/gas_fee_fixtures.py b/tests/fixtures/gas_fee_fixtures.py new file mode 100644 index 00000000..4db5e10b --- /dev/null +++ b/tests/fixtures/gas_fee_fixtures.py @@ -0,0 +1,27 @@ +GAS_FEE_FIXTURES = { + 'eth_getFilterChanges': ( + ('default', {'jsonrpc': '2.0', 'id': 15, 'result': []}), + ), + 'eth_getBlockByNumber': ( + (('latest', False), {'jsonrpc': '2.0', 'id': 11, 'result': {'baseFeePerGas': '0x1816eeb4af', 'difficulty': '0x27aca623255aa9', 'extraData': '0x486976656f6e2065752d68656176792d32', 'gasLimit': '0x1c9c364', 'gasUsed': '0x8454f8', 'hash': '0x2420cd3a3f572ba42a881457c88c5c3f58cf44a46e7f25aea53d3a7313922694', 'logsBloom': '0x5260400700da108048d93200854128614100802800081404698960db80801ec8464604e3940845a34200c3c2800a4971922881803c01a13902474008842a2518012005042016030f1a80920a703402e209a160240845ce0128a451c282e040c0be0401180a3a0608a355581942010aa06441180242406622780550b4460a02004c11890083047425054a21690dcc044450012c7389089a0a0c20674c419008840b790700804034120a000fc08c2394019087886200038c440c8124b090850d11404120a2818840537b410143518037f000006a0b063a2438148c25020023e606b81825ad000202011506060096a080810459c904a1000062108b191212013223', 'miner': '0x1ad91ee08f21be3de0ba2ba6918e714da6b45836', 'mixHash': '0x4889052c97da7a2386244f85d8061a0765e1c0f98a212c2eda929dc406713dbe', 'nonce': '0xf078269bfcafc704', 'number': '0xd1271e', 'parentHash': '0x857a1b6ee3a8f2b837f9ae69f5a0b1b181903f5e23df0ed9d166776333e14ec8', 'receiptsRoot': '0x1760ed19deceff14ce9cdfebd18ff257c3afc22359edb144d663cd6eb6523aba', 'sha3Uncles': '0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347', 'size': '0xa1cc', 'stateRoot': '0xa9d6469a301598d5de4f43f121c020da2814875c9154fffb72fb7a6edb8a88cd', 'timestamp': '0x61a4733a', 'totalDifficulty': '0x78150c58dfe2dc7fcb1', 'transactions': [], 'transactionsRoot': '0x46fdbd1a3ea670807040dd45f91ebe007c9521395d219150c2d8ac8b77055722', 'uncles': []}}), + ), + 'eth_feeHistory': ( + (('0x1', 'latest', [25]), {'jsonrpc': '2.0', 'id': 0, 'result': {'baseFeePerGas': ['0x48639c26c', '0x4cc965382'], 'gasUsedRatio': [0.7429978666666667], 'oldestBlock': '0xec38ea', 'reward': [['0x73a20d00']]}}), + (('0x400', 'latest', []), {'jsonrpc': '2.0', 'id': 12, 'result': {'baseFeePerGas': ['0x1d0ee0340f', '0x1e80eda479', '0x2007facf70', '0x1fb3b8b928', '0x1c72e60775', '0x1be78472de', '0x1abaeb9912', '0x187ecbf92a', '0x1ae433de3b', '0x1cbf6c8178', '0x1a982062ea', '0x180cf420bb', '0x1b0def7476', '0x1d7f25b2b2', '0x1e911fed9c', '0x1dca48b562', '0x1ba2717bb6', '0x1b4549a641', '0x18afd68002', '0x19c4496086', '0x1b9396e657', '0x1d28dd2bec', '0x1a7473795e', '0x1cfd90b8d4', '0x19e14dbde4', '0x1938c26edc', '0x19212a67d5', '0x1683c240bb', '0x1953e4065b', '0x1982ca677b', '0x17c3a5305d', '0x19a5e882e7', '0x18b46b86a9', '0x1733a3a821', '0x1568dcfff6', '0x1612eb0583', '0x18d4c00e61', '0x1bee92a48c', '0x1eb62a6156', '0x1ead4fff40', '0x203c9219db', '0x1c8a275a93', '0x1bfbfe0641', '0x1c56b4eb7e', '0x1a805afe1f', '0x1d95b4c675', '0x1a9de9ae1d', '0x1bb43a2fe4', '0x19f8ff0813', '0x18264f2346', '0x1a7c1eb5f2', '0x1dcb6c5a0b', '0x1ca4cf5114', '0x1dff403962', '0x1c18bfe181', '0x1adcdd560e', '0x19c6e7538d', '0x19acf0d71c', '0x1702489ccf', '0x165a3826e1', '0x1577e341ca', '0x14a672ecb4', '0x173a93feef', '0x162589c853', '0x147bad337d', '0x15fefb0079', '0x167fe3ee07', '0x151880a95a', '0x12ecbc915f', '0x11e17c55b9', '0x141d2e7341', '0x169eca18d6', '0x13caf0d5bc', '0x141a3dce05', '0x144c10cafe', '0x14618e5df8', '0x156993dfea', '0x15475d430e', '0x176b8137a9', '0x147e1110b4', '0x170c0c8bf1', '0x195dd93331', '0x1918b17004', '0x16a601d63e', '0x197aa3e9e3', '0x19d53d43bd', '0x17a286d25e', '0x15f37f14af', '0x18a3506ed9', '0x168411521a', '0x15ab9cab86', '0x13ea3aa5ff', '0x154edab671', '0x1356c248a9', '0x1267b90354', '0x14b49ff9ba', '0x15d38b0ccb', '0x131919ab32', '0x157bc74278', '0x178e84e7b7', '0x1a7def1fbf', '0x1dcd6ba973', '0x1c18a5a851', '0x1b6ab446aa', '0x1a56f8a628', '0x19dfc4e8c8', '0x1d1bbacf53', '0x1b502bb3d0', '0x1879656035', '0x17d79b991d', '0x170bd3596b', '0x15cad65073', '0x1883ae8c1b', '0x1734a699f7', '0x16ead94424', '0x19c7b6f3bd', '0x1939814e5b', '0x176354b516', '0x199d367279', '0x1744a16fb6', '0x16811e55db', '0x1939ae2c6a', '0x1ba61faaa6', '0x1abd92ee14', '0x1993ad620c', '0x1afc143b30', '0x19402a9ab2', '0x17ef500f29', '0x1aeca301ea', '0x1e494795e9', '0x1a903e3a23', '0x1a23a4abfe', '0x17ad1bd184', '0x15fb09f309', '0x1822918d8d', '0x1b25e29cf7', '0x195aee52a9', '0x1662c96e7f', '0x1777cf6644', '0x1604f93ef1', '0x18c4ea10be', '0x19bff19c79', '0x17a5285ad4', '0x163973f2ed', '0x1891db1f22', '0x19548108e6', '0x169024908f', '0x19538fea82', '0x199d235261', '0x1cca718725', '0x20629b66b3', '0x1cdd2ccefa', '0x1bcbe95bfd', '0x1c9c3a9f96', '0x19ffd23496', '0x179b67cbd1', '0x1a8da63ae0', '0x1d7243f0a7', '0x1a248bad17', '0x182b5611a0', '0x172dda125f', '0x14f4e7f233', '0x17931ef1ff', '0x1642709872', '0x14546ab9c9', '0x16578edeae', '0x158ce100da', '0x1380a55585', '0x15f0b97504', '0x16957bf2bf', '0x15d5ceaad5', '0x1556026b70', '0x13c5bffc11', '0x1339d1c452', '0x1564954215', '0x141257854c', '0x11d901eca8', '0x1335aff23d', '0x146ed69c46', '0x12b77d8b17', '0x12b6d76321', '0x1163021cfc', '0x138f36c00f', '0x15954b94ea', '0x1847528aa1', '0x16b28962ec', '0x189c5ab5b7', '0x15ca546a9d', '0x18839363fd', '0x187390f017', '0x15c8c0a1fa', '0x17f4b61d23', '0x1af29013c1', '0x1e508b78f7', '0x1bb1b78b9b', '0x1c3e1d6e3a', '0x1b1c3fac3d', '0x1ceb533163', '0x19cbaa5c33', '0x1d04195b85', '0x1e1f864dc8', '0x1b38cdb010', '0x1a8af5bdf4', '0x1bf770d431', '0x18cc01321a', '0x19f133faf3', '0x1766319608', '0x1624fb5409', '0x1871049637', '0x17ab5b72f7', '0x14b5f00499', '0x121f320406', '0x1462fef3b1', '0x169b5fead3', '0x196e137a95', '0x19124624bd', '0x1b1ec51ec3', '0x1819bf1987', '0x163c5c1dcf', '0x18828db725', '0x15ba6750d5', '0x15203467f3', '0x16b1a81eca', '0x149b37d8e3', '0x13fdb0f37b', '0x162b906510', '0x187de464e8', '0x169e2bbd83', '0x14f21b6f16', '0x178fd97840', '0x18506cefdb', '0x15b1e583fa', '0x14747fca36', '0x154b9b25b8', '0x1730f53e93', '0x15f4efb3a1', '0x16bd0e378a', '0x18adbe67c9', '0x1a8a45f95b', '0x1a5733974e', '0x184ac7ba31', '0x1b530b1ee5', '0x1ada7c4c68', '0x182035f63d', '0x15d37a262e', '0x1466d17f72', '0x14f1a85460', '0x178fc06bb2', '0x1a818a10c4', '0x19077f647e', '0x1af9596f39', '0x1b165a8a5e', '0x17b38f3913', '0x18dd276211', '0x16f07e8c55', '0x19cda8409d', '0x18f6b01316', '0x1704997b76', '0x17b471604f', '0x17e709aa6c', '0x15f180286a', '0x14462f826b', '0x1321c469e6', '0x1585582fee', '0x1835bd4b84', '0x1b3b7f57d0', '0x1a73bece7b', '0x1dc22bb349', '0x1d1ea41009', '0x1a72217030', '0x1c9addfd69', '0x19f954ad85', '0x198a0db22f', '0x17a16cb7ad', '0x1a94dd7cf5', '0x1de6a15965', '0x1a29cd2e39', '0x1ae98c2f6d', '0x1a44505369', '0x1d3d6345aa', '0x20c5579493', '0x1e2b8be3da', '0x1ac30fc3a3', '0x1e1b4ea844', '0x1b9a5dac87', '0x1f0cb3db4a', '0x20ad2e2fee', '0x1d2ead4dc5', '0x1d3355a1f9', '0x1a08dae8c0', '0x1c983daa39', '0x1d926d2f8a', '0x1b0377e7dc', '0x1bedf1e28f', '0x18d6bfe004', '0x1bec55ebf6', '0x1f69c1e7a2', '0x2026b2560a', '0x1e126b9b23', '0x1ef9b3b245', '0x1d3e8c84b8', '0x1a785f985a', '0x1d401fe018', '0x20e6f0c9e3', '0x211a9b1849', '0x1d9389264a', '0x1d2ce8a208', '0x1c003e6ae2', '0x1c1449be56', '0x1b37d8f523', '0x1ae7bcc773', '0x17b7822418', '0x1aadf8bb7b', '0x19b2adf465', '0x1cc77319b9', '0x1cf23a543d', '0x208d4fb06a', '0x1e6af48a07', '0x1dc5e744cf', '0x1a93a22d23', '0x1b9bda3963', '0x1c26ea5cae', '0x1fa9d4aa0a', '0x1fc60cc6b6', '0x1bcd4b2de0', '0x1a48258a25', '0x1be5e1d785', '0x1a2f80a73e', '0x175e92f70c', '0x1a4a364867', '0x1846e77dad', '0x1b3b002246', '0x1ea19dac57', '0x223f40a97d', '0x1e9a9fb973', '0x1dc92dfacf', '0x1a10083b76', '0x1cab8f8629', '0x1c3f1e6c1b', '0x1cb12bf5c9', '0x19e6dfa88d', '0x18bc57fe18', '0x1b7be93b93', '0x19a48f8f82', '0x166ffd9d92', '0x16da751fbb', '0x19b5af9ec1', '0x18e0e0a83e', '0x1b7ebbdac5', '0x1eee4ca296', '0x1fc8ed12e0', '0x1c339b3310', '0x1e29eea2c4', '0x1b13856aa9', '0x1ba33b6262', '0x1c5cb8fbdd', '0x19d4784b75', '0x1b95747ec9', '0x1822c5eef0', '0x151e6d3112', '0x17c1da1628', '0x159dcb0d83', '0x1472a29ff5', '0x15b5686316', '0x13554b44fb', '0x11d518807c', '0x10294f7e22', '0x122e373b75', '0x1473e8274b', '0x1701cfb223', '0x1932f75ae9', '0x16acfb4d28', '0x1982995635', '0x1b507d397c', '0x1b25d280ba', '0x18867cf091', '0x19f919437c', '0x1934bd5491', '0x17aead1b38', '0x152dc0b281', '0x17d3381ae7', '0x15d07529c2', '0x180d97956d', '0x175a88603b', '0x154c406e28', '0x17f517b378', '0x1af3982a3f', '0x1e51990592', '0x1b88100848', '0x183b8d7ca3', '0x1b425c8ce1', '0x1a02e66197', '0x170ccc327c', '0x177a670105', '0x151d3d1da3', '0x152331bf65', '0x17c6c61cc2', '0x1abefcb7c0', '0x19ca28c70a', '0x185de1ac3b', '0x1ababde0e0', '0x19986c791c', '0x1bde32b812', '0x19218766fd', '0x169a059757', '0x1830a5eb5b', '0x15f8e3f4cf', '0x13a1e245fc', '0x1615a3724b', '0x17ee502cfe', '0x15c5ab59d8', '0x172243e29b', '0x14fc6a124a', '0x179bd3fee2', '0x1a0b64f75a', '0x1ce459e832', '0x1b73e67855', '0x19d3125449', '0x1705b56910', '0x19e5aced3f', '0x1d21784509', '0x20c57b1195', '0x1d8415fcf6', '0x1d24afcfd5', '0x1fbf23e9a9', '0x1cade1885e', '0x1918255753', '0x1c3a53dae4', '0x1fc065ccc4', '0x219a07e823', '0x1dccc2a80e', '0x1cb431fefb', '0x1b76128fd5', '0x1dc5704667', '0x1a4e95c696', '0x1aab046672', '0x19b3762192', '0x17697715df', '0x1a564cd77f', '0x1a834d08d2', '0x1b6aaebce3', '0x1a23316ddb', '0x1a17281d1e', '0x19ad17f3f6', '0x1b3b63ab9a', '0x1e8244d4ef', '0x1b419a8aa6', '0x18228fc610', '0x1b2475769c', '0x191f9bf437', '0x15fba875b1', '0x18251b2edd', '0x1806c807b9', '0x19df0ef96b', '0x1a2aafbcab', '0x189665135f', '0x1675cfd87f', '0x19442fc68d', '0x1a6cce3f83', '0x17ef89ce81', '0x1a053dce1c', '0x19144ffef2', '0x1625c04dd0', '0x1751b4c003', '0x19e3ce4956', '0x1becf5178d', '0x191b30f615', '0x172c93a87f', '0x165ee2250f', '0x192a0eba28', '0x1c4f1235b8', '0x192637b8ad', '0x1c4aa41952', '0x1a6b2c3dd5', '0x1db83e0e08', '0x1afe3f0301', '0x1b8928113e', '0x1efa215eb3', '0x22d880eb6e', '0x1f6cd8cf2d', '0x22c3c0dda2', '0x1fe5396a30', '0x1e381d8678', '0x1c2abc71b0', '0x1da682c7a2', '0x215a1295c7', '0x1d2ed0430f', '0x1cfc7eb2e4', '0x1aaa8abd5f', '0x1deba51d48', '0x1bec717e7a', '0x1e65f5e32b', '0x1d8924043e', '0x1e05f10cf2', '0x1f2a18906a', '0x1e5f2a7bff', '0x1e51a5c5e3', '0x1b1ea06a19', '0x1b54115fc4', '0x185ae765e4', '0x1b65f67524', '0x1bae6009ca', '0x1b7fdd5536', '0x1979390767', '0x190dd69ca8', '0x1a5fd52fee', '0x192fd44d77', '0x165d6803f2', '0x1929115101', '0x1907f5037b', '0x1b8fa2734b', '0x1dda789dff', '0x1b28945450', '0x1c896b20b4', '0x1df4008f2d', '0x1fb7fc5e59', '0x1c317a678b', '0x1a2de0e787', '0x19ba9e28f6', '0x1cf1273a1c', '0x208e7d4f87', '0x1ec727e42f', '0x1ddf824f73', '0x1ca832d4e5', '0x1bc70f36d9', '0x18be4c7224', '0x191cead633', '0x1703b33d71', '0x189633fb9b', '0x16741a3047', '0x18ae691940', '0x174f4d1872', '0x15de6ee00d', '0x164d1cf841', '0x16a89b186e', '0x149cc39207', '0x173040c179', '0x1a159685de', '0x1ae7b3d241', '0x17dc962b36', '0x16cf7aebc6', '0x177516cbf0', '0x150aefc5e3', '0x150ec1defe', '0x17b0630aa5', '0x17fbef057d', '0x1afb49d599', '0x1e59dde26d', '0x1b57d9d66c', '0x1c0014a897', '0x1b38951656', '0x180c564afa', '0x1a604edeef', '0x19b36ec857', '0x1aa0cc5a10', '0x1adb32ba73', '0x17a1a7ab8a', '0x1a95b7d580', '0x1a99723792', '0x1786660006', '0x16dda0bc3b', '0x1767d88d9d', '0x1530107013', '0x174043fea7', '0x17c93df149', '0x1ac1ca789b', '0x199f5983a7', '0x17a1aef98c', '0x15b1554b46', '0x16370d3b7e', '0x1785c3700e', '0x150072a15d', '0x14ae97bb00', '0x16ea2a6ab3', '0x19c6f5057b', '0x180d2be0ca', '0x15d805aa7e', '0x15bb778c4a', '0x1356cfd91e', '0x1584a76845', '0x15e07a9730', '0x1583da6eac', '0x14ad468a97', '0x13293d7315', '0x1506e61e47', '0x17a73081ea', '0x1664f35fbb', '0x15d720e07c', '0x138caffc85', '0x123316374a', '0x1479588bce', '0x156c3f2065', '0x13d9b296e1', '0x146283cd8a', '0x15f5a4a889', '0x18088c5348', '0x16b4eef257', '0x1667505057', '0x15dbb0e85b', '0x1602304e08', '0x14ce332ff7', '0x1767a71aae', '0x16522b1053', '0x191c3ead04', '0x1be0d1f531', '0x18b0f63954', '0x16232ef086', '0x145b94a747', '0x16e7042642', '0x1502fed120', '0x13d2922448', '0x157feb2bb3', '0x13120f4fbc', '0x1142fc9e9f', '0xf9153cb3f', '0x11837291c1', '0x13b36b4392', '0x15beca0777', '0x17fd3ecbde', '0x172363c1e7', '0x18b75b56c7', '0x15a06febef', '0x18283f1c14', '0x15660975d4', '0x12c91bd78c', '0x15220892c7', '0x140debf21d', '0x168f2aab46', '0x157a7e4080', '0x15ebb2e9b8', '0x164ca9dcf5', '0x1746079313', '0x16c4c56747', '0x199cef3ac0', '0x172b672aa6', '0x17b4053c9a', '0x1aaa58445b', '0x1b08a395a2', '0x1865da0e95', '0x19b0e6fcda', '0x18653c3241', '0x1b70ce51b4', '0x1ea4ecd718', '0x1be82c67b3', '0x194d46ef69', '0x186ae41b5f', '0x1660b0687d', '0x161a1bae5e', '0x155c2cdcb6', '0x1807ae412b', '0x1b07ab68d9', '0x1c03ebb9d3', '0x1ded840e90', '0x1af70f3376', '0x18f36f0abf', '0x1c119e34b2', '0x1aab2b7728', '0x1aaafeffe7', '0x199e88872d', '0x1cd22fed9e', '0x1dfcdfacbc', '0x1ab5608570', '0x17db2258f3', '0x1a00779c4b', '0x176ce115db', '0x19c67c8e63', '0x1cff4be2cd', '0x2095eb7ef0', '0x1cb5303a0f', '0x1a5bad76d9', '0x1da6b4914f', '0x19f1ddff26', '0x188ee1039c', '0x194d847963', '0x166767fd73', '0x183b5c3dc6', '0x1691d97669', '0x18b9bedf97', '0x17aca6d2f6', '0x18782b434d', '0x1595964902', '0x171387ad3e', '0x16eb06cf95', '0x17966eb884', '0x182c30bdb3', '0x16a48d6072', '0x1467050743', '0x1674360261', '0x163c6d9f1c', '0x1760994deb', '0x1612b2daa9', '0x13e4e36ccc', '0x13dbbebb88', '0x15e471d9f7', '0x18814f367d', '0x17c7a808af', '0x16a3e77e8c', '0x14b03ee8fe', '0x145ecee5f9', '0x139aa7cbd0', '0x1557dfa3bb', '0x13a6568372', '0x128c7e4693', '0x14dd4dd754', '0x12967a5a16', '0x1377f09b34', '0x1585cd7949', '0x1835916e3c', '0x166934610b', '0x18acb66a8f', '0x1618275756', '0x164482db04', '0x13eab6f8b5', '0x13bf28104d', '0x1147430e44', '0x136ff644c8', '0x15dd3be88f', '0x17ef3a4211', '0x14f152f9cf', '0x1253289a96', '0x149d217967', '0x1698eae0c8', '0x18d4a1f0c8', '0x197269a8fd', '0x16fe913855', '0x19c079ac7b', '0x174487efff', '0x16c07e2eb4', '0x149c2de143', '0x16c4c83202', '0x13ec2f2bc2', '0x142c9720ee', '0x16b1ff32f9', '0x158dcca50f', '0x16cf141482', '0x1634010903', '0x136d80e7e3', '0x1354565295', '0x155b0d8476', '0x1805e92639', '0x15b2e01ca0', '0x16e7014957', '0x145e9e7ad4', '0x1464cab6fd', '0x13e2dbcec1', '0x12325b1441', '0x12ade8e4af', '0x15014927ed', '0x17441b581e', '0x1599b8586f', '0x184c803a67', '0x17a848a9b8', '0x1576e3bfbe', '0x131394704a', '0x15755d028e', '0x16757c14be', '0x15f1ac7edf', '0x14447e4d05', '0x141a35c20a', '0x13e84470d2', '0x11bad8910b', '0x1393d25f05', '0x156abaf1da', '0x141e44af53', '0x14b22f7bde', '0x174853431c', '0x16d8073e51', '0x19b21677c0', '0x1a0beb9b71', '0x16f8184973', '0x1717e15f7d', '0x145864b3ca', '0x140f2228bc', '0x13c19e8833', '0x16394da85f', '0x18a167f841', '0x18e4f722f3', '0x15e8e06e17', '0x132cc0647a', '0x159223ea79', '0x158642be96', '0x18313965a0', '0x17e79a81e4', '0x1ae41a5914', '0x19c40ae989', '0x1cfc591b14', '0x1d4b259417', '0x19f5461170', '0x17e23c1d1f', '0x1ade77e73d', '0x188bd0750f', '0x188a16e2f7', '0x17fcd4e6b9', '0x1afbc4e00a', '0x1e5a7e59e7', '0x1b80d19aa2', '0x1a49a746da', '0x188fdb6abf', '0x16dfae4b72', '0x1950b13d0f', '0x16d5fa2f05', '0x155c630319', '0x140127c665', '0x160d7f105f', '0x1420354fa9', '0x16a436c110', '0x1482e14792', '0x1243c14dd8', '0x148c26723d', '0x13ef055bcb', '0x15c7900486', '0x1795d8dd1f', '0x18951f7108', '0x1a35542b59', '0x1d7bd9f0e9', '0x1ba6cf0e7b', '0x1920d4e0c8', '0x1674529d97', '0x1942287223', '0x1c69a616b5', '0x1dff5e76dc', '0x1a9f43f106', '0x19308be76a', '0x1667a58700', '0x17277d8769', '0x19a4477fb3', '0x1c3779872a', '0x19b87f23a9', '0x1821c7c133', '0x1754d9d206', '0x16cbedb7fa', '0x188ebfcd00', '0x170ce97105', '0x16f7de3f38', '0x1504a30b68', '0x17a4e55a44', '0x16a0be1ea5', '0x191e71dcd5', '0x1664753241', '0x1584300559', '0x14fb2b7a94', '0x14720125e1', '0x12916dd376', '0x14e3441dee', '0x177f4079f5', '0x18087edc24', '0x1a73c10d1a', '0x1a3a10fc48', '0x18029c3e7c', '0x1682b0a80d', '0x18717b1d25', '0x193581a5b3', '0x17fbdb2af7', '0x15bbc10cde', '0x14583f2ca2', '0x11cd37470e', '0x1406a2cebe', '0x167d02c069', '0x148e289f7e', '0x171f6379d3', '0x18aed9186e', '0x1bc44d9a80', '0x18a7b155d0', '0x1b2e53723a', '0x1957f3582a', '0x179dc6c561', '0x1703ad1749', '0x17eb8ade42', '0x1527eb4242', '0x14c2c4e763', '0x14b6cdc201', '0x174cd6886f', '0x1a35672fb7', '0x180dd4d774', '0x19c674a0ae', '0x17bbea800f', '0x1776838e42', '0x15af8d029c', '0x174fe8497a', '0x18146e976c', '0x18631bad59', '0x15e0dfc1b6', '0x189c526230', '0x186447a795', '0x166d75f61a', '0x1437f13aeb', '0x162355035c', '0x16c8d9980d', '0x15afb43b66', '0x13f14e602a', '0x12de6eda8f', '0x1538f4c3f5', '0x15f5943532', '0x13cebe6e42', '0x12035d5e8a', '0x13fa03ee2b', '0x11d6553456', '0xfc864f56a', '0x11c0dc8376', '0x13f83e00b5', '0x167712502a', '0x14b09a4ca2', '0x1608599ddd', '0x14385a9e21', '0x12151749b3', '0x1457a69b76', '0x13c00173b0', '0x117098b69b', '0x1298bf2a5e', '0x14eb8c6eb7', '0x1414af6c11', '0x120bc5e59f', '0x10a9d7fdd8', '0x12be5ec813', '0x121685dd05', '0x10c5104d21', '0xfc2f7fa16', '0x11bb0b1779', '0x11de6d06db', '0x10e0ba9282', '0x12fc26da0d', '0x141294ccc2', '0x11c157a925', '0x13c01aa71c', '0x120a36b6d2', '0x108ff721c2', '0x1084411de8', '0x1294b4a2d5', '0x126d3885c2', '0x14ba6510db', '0x16564356f7', '0x15cc6e138a', '0x13580db6f2', '0x15c2459180', '0x1309fcdf50', '0x156ab303c3', '0x1815b6cff2', '0x1a9227209c', '0x17cabd3e81', '0x1552b44406', '0x17fcf5dbb5', '0x190a8fd93b', '0x165437f50e', '0x17246ca99f', '0x145fd11a2f', '0x1341e59f25', '0x1496e2afe4', '0x1327655a9b', '0x11b1130895', '0x13cc60cb9d', '0x138e23b3b4', '0x1479601b7e', '0x12f3e2e0b9', '0x10b9ecdeed', '0x111449ba03', '0x108854e182', '0x1298cbb6ba', '0x12cce7cdc0', '0x11faa1147b', '0x12ae32a36a', '0x116841bac2', '0xfba909609', '0xf6a934786', '0x11574ae9cc', '0xfa0870ba1', '0x11942792e2', '0x120e0df6bd', '0x14160fa69a', '0x14e81c1683', '0x1410f850f6', '0x12cdf27819', '0x13c6855c1e', '0x12c47a41a4', '0x138a6173ba', '0x15fb1d43e0', '0x1812d2a907', '0x16235568f9', '0x15018caf4e', '0x13146f09e9', '0x1328747eb3', '0x12aedac1f6', '0x146130b678', '0x13feb3165f', '0x12ba6a7e9e', '0x11bf4e61c8', '0x13ebc2d76d', '0x138b7c3c13', '0x119847b7f7', '0x1161b60877', '0x128e2dcf89', '0x1148008f3f', '0x10da52cc48', '0x12f59acaa1', '0x1096e7714d', '0x10842aa227', '0xf8330d028', '0x1173060996', '0x11e74cb43a', '0x1033a0efdc', '0x110279fb7c', '0x1322b95c62', '0x1586615e53', '0x1443a4e543', '0x1456819ef2', '0x156dbcbf7e', '0x181b370d53', '0x196024f540', '0x169dec0d18', '0x1662c774b6', '0x14b3c886a0', '0x14ba020f91', '0x1520d6f131', '0x140bdb066e', '0x131fb30925', '0x1583347c4c', '0x163a501874', '0x15798e9dd0', '0x16333d44d0', '0x140a6d5f0d', '0x12224cb58f', '0x1465f18094', '0x130c0b4d25', '0x156ce04eb8', '0x1816eeb4af', '0x16d1c17fdf'], 'gasUsedRatio': [0.69898302207346, 0.7003098897358982, 0.45889834525131734, 0.08952607414796689, 0.4234474172062155, 0.33168118605119756, 0.16556761279225637, 0.8912777667487565, 0.7761227510594937, 0.20035841676218702, 0.11741434503849763, 0.9995858623044163, 0.861084419024391, 0.6451315470030967, 0.3983577975587281, 0.21055851794423977, 0.44732837794389463, 0.12101558827554956, 0.6749720214707206, 0.7809476338444791, 0.7296306089950793, 0.12897494536673765, 0.8833850952077835, 0.07083897450161264, 0.3982421305312438, 0.485383452243286, 0.08377764017821616, 0.9997654806797761, 0.5289331778554855, 0.2261309332031, 0.8170881646635965, 0.35288358300833966, 0.256638078154804, 0.19104116826023135, 0.6241079990023047, 0.9996229730039787, 0.9995147372534449, 0.8980619111035039, 0.49549586732188766, 0.7033578666666667, 0.0412741, 0.4221689146117851, 0.5506502139401996, 0.2406641998777672, 0.965394668736715, 0.098720451465699, 0.6633801241310142, 0.2500186766233506, 0.21924358517605133, 0.8867880258492049, 0.9998750994171306, 0.3454978, 0.6889813333333333, 0.24658916666666666, 0.3243314666666667, 0.3383211, 0.48426233333333335, 0.08456516666666666, 0.3858701355206693, 0.34178752536868806, 0.34756690172754195, 0.9994877656934215, 0.313647519127858, 0.19954403333333334, 0.7954445182387267, 0.591571885467093, 0.2504204025821639, 0.08835980002277782, 0.27934741749947145, 0.9995718634497232, 0.9984155264831568, 0, 0.5626024003796789, 0.5387266320151705, 0.5165436895092016, 0.7024101, 0.4750339373064464, 0.9024995726658152, 0, 0.998645821911721, 0.9025725084957371, 0.4574025648397644, 0.10982669278755826, 0.9999187413017624, 0.5555597263028814, 0.15964475232679826, 0.2150461351817213, 0.9895938608035424, 0.15548154671085576, 0.34978963021843557, 0.17598101263389562, 0.7798032109378205, 0.13035095046525813, 0.3068690229621553, 0.9999463631923252, 0.716516554103138, 0, 0.9996240741361705, 0.8860088666666667, 0.9984080788223033, 0.9998494331928043, 0.2710057, 0.4032662561658126, 0.34285822000100535, 0.42928806753757925, 0.9999936, 0.25331417204433204, 0.08423514067628989, 0.3967099961750647, 0.3664513, 0.2823743, 0.9996343095699617, 0.28645760069376064, 0.45030706666666664, 0.9996658333333334, 0.4138086508141867, 0.20875797615331634, 0.8807250760983297, 0.13363574758213775, 0.36870958132982806, 0.9836296062897691, 0.8843134360221879, 0.3685811188822176, 0.32593325905779313, 0.7201707238621083, 0.2429603202947664, 0.2915563, 0.9996147571436842, 0.9994563994926395, 0.008318233333333333, 0.4361200333333333, 0.12309133333333333, 0.21353768045503566, 0.8920567623215369, 0.9993497333333333, 0.23584929316522416, 0.03156543333333333, 0.6933579359755199, 0.25309703333333333, 0.9995167280849749, 0.658355381131689, 0.17306385838397978, 0.25965951503285917, 0.9221164898418721, 0.6237853885255902, 0.06304370536940315, 0.9898904436380964, 0.5453921916664213, 0.9961344056830755, 0.9993802999365691, 0.06508275027198822, 0.352073622753795, 0.6170994885191114, 0.13496068121470806, 0.1319518460816841, 0.9992177589152299, 0.9358071240638939, 0.051239051914533214, 0.19804648694448976, 0.33612698246189326, 0.1164745435078481, 0.9997029144512735, 0.27685215546456005, 0.15322231968746075, 0.895926121344864, 0.3582553545466924, 0.11990604015683175, 0.9999982983773327, 0.6173351, 0.36738568121562626, 0.4085493615977162, 0.20687746666666668, 0.3894212031381978, 0.9508606208032461, 0.2529546, 0.05679526666666666, 0.8052564666666666, 0.7547140666666666, 0.1640325, 0.49945816666666665, 0.21626436666666668, 0.9998468162505979, 0.9138679500723518, 0.9995405, 0.23949169697542985, 0.8371927226741749, 0.04159747527764591, 0.9999675699975386, 0.48979562567372237, 0.06366708226580751, 0.8987689046552098, 0.9995189373375933, 0.9998037883247741, 0.1542367286583982, 0.5792121828097432, 0.3396339403571404, 0.7668931472239291, 0.06794574859062406, 0.9993793748385127, 0.6526234527442525, 0.1147474369407218, 0.4002161204933931, 0.7145594801554631, 0.046648348901296446, 0.6847499442134686, 0.10789673333333333, 0.285508132024255, 0.9149148414314636, 0.37363902976714797, 0, 0, 0.999914702112826, 0.9356230511989408, 0.9995020398165756, 0.44359384442337546, 0.8268766666666667, 0.054631066666666665, 0.19049836666666667, 0.9091053413658438, 0.04600754294037341, 0.3891135, 0.7969206930567699, 0.132034323232035, 0.38055323333333335, 0.9360347379215804, 0.9188680583744843, 0.19395243055823694, 0.20428250433427417, 0.9996112959985308, 0.6277061333333334, 0.06909823333333333, 0.27140563333333334, 0.6643134687689195, 0.856116665708888, 0.2870817666666667, 0.642409846548488, 0.8413045852176129, 0.8017087, 0.469932422343752, 0.18891848147039564, 0.9993025849667188, 0.43106094305715537, 0.09370064650255966, 0.11870884029867552, 0.23894564873685126, 0.6063327707311954, 0.9999156333333333, 0.9998797492418013, 0.277148625338717, 0.8107932333333333, 0.5168010562314099, 0, 0.6961872, 0.19040212767767725, 0.9993877327618839, 0.36982706666666665, 0.18824121754893652, 0.6193655428306416, 0.5333494980226672, 0.17214639374481477, 0.19572586666666666, 0.27463746666666666, 0.9994742866409049, 0.9998017129304211, 0.9993807877722134, 0.38538926109677674, 0.9999746845191794, 0.41413695433298525, 0.13270651298129307, 0.8265736005982427, 0.1320914364441328, 0.43305956560175785, 0.20105546950992959, 0.99951230114185, 0.9995044333333334, 0, 0.6145128666666667, 0.40406693803165455, 0.9527296225476477, 0.9830501, 0.18255166169764775, 0.04814287826668638, 0.99992, 0.16735913333333333, 0.999457063510815, 0.7095827859300264, 0.07227296666666666, 0.5024937518153143, 0.06631806189685777, 0.8933383119774038, 0.6367089592641094, 0.15393858103497204, 0.6356243320244873, 0.05736981479889826, 0.9966926691231953, 0.999932736967846, 0.5939790517570889, 0.24132138250040702, 0.6201709405017403, 0.27645916049233293, 0.12055922365289289, 0.9201368482585489, 0.9993592538570556, 0.5245354797366384, 0.07375239807057446, 0.4457827200878277, 0.3389778666666667, 0.5111850054911955, 0.3773334801087376, 0.45401158118689083, 0.025981316031167125, 0.9996868666666666, 0.35282977160530593, 0.9795917476189644, 0.5232255333333333, 0.9982753333333333, 0.2377484, 0.41521622531068253, 0.07056926586464814, 0.6553399, 0.5787017022122102, 0.9989181548327772, 0.5139253600021904, 0, 0.28129494285750894, 0.7459729467942687, 0.25447387894904877, 0.06981982824448896, 0.9998770762685758, 0.19373458752864323, 0.9866341803947543, 0.999564059404813, 0.9721662911085345, 0.07449444553451033, 0.3930673292013003, 0, 0.900194973725176, 0.4409001115067707, 0.5630900333333333, 0.11101083125661125, 0.31991516666666664, 0.9444277666666666, 0.2320317, 0, 0.5741413666666667, 0.9999462, 0.37066628896450715, 0.9207059926589265, 0.9998430198113061, 0.610441226504997, 0.04905829863938878, 0.7783120624930426, 0.09056308670361732, 0.5829317399250461, 0.6048675651874174, 0.14287152296630107, 0.7715990635336524, 0, 0, 0.999720339754896, 0.1395448348933404, 0.283759231857166, 0.7466437186230653, 0.062304033333333335, 0.18949243333333332, 0.12516869389625637, 0.9997499997666665, 0.9999262, 0.9995538977144515, 0.8811021367777994, 0.09944940848181069, 0.9999962593610742, 0.7829082882282763, 0.47559272040323886, 0.11361070583575164, 0.7361145543277239, 0.38187324407391, 0.25820293333333333, 0.07713494439346645, 0.9998136, 0.16240826666666666, 0.9105210905115512, 0.383682191436712, 0.14788614885142568, 0.9994933772324015, 0.9999121093580232, 0.9997414614996729, 0.1322741071088953, 0.020713711354979437, 0.9995904, 0.31688446666666664, 0.04460809313628091, 0.574298236011687, 0.09725582775457492, 0.5044072748935798, 0.9993940071167629, 0.9995837321677834, 0.3569719, 0.2792978009693132, 0.8878625620050579, 0.3302914120414594, 0.8551506289832415, 0.10714900591217133, 0.09741716666666667, 0.7811094, 0.13326986197977675, 0.07403147156375585, 0.999617259216976, 0.8344215854010123, 0.1391670944185124, 0.7501732921576612, 0.12862126666666668, 0.9998972333333334, 0.9126962145201456, 0.9373263415045854, 0.30073907564909924, 0.2627577659064219, 0.06596267121084602, 0.999493176350149, 0.999447825885745, 0.999907318814461, 0.10264770988770637, 0.44949812506621284, 0.8573148085094803, 0.11351261213580734, 0, 0.9994790955747237, 0.9993242222449995, 0.7330757920488276, 0.04742291656157002, 0.3528908559113969, 0.3268294312122707, 0.8364779333333333, 0.03454796942547731, 0.5548999683983113, 0.35495525693180896, 0.14374209977893826, 0.9997676059512496, 0.5266975670460079, 0.6363614907433214, 0.31336126697368755, 0.4928046385032767, 0.4364811114775588, 0.7423794926383731, 0.9813270333333334, 0.07355363333333333, 0.041938979919441996, 0.9984313318169541, 0.2024666, 0, 0.8933772333333333, 0.4803758, 0.8071330654384006, 0.545675561741557, 0.2585845240403581, 0.15392515428487374, 0.9997552887455868, 0.683432552925334, 0.12318659917341282, 0.8483964308364457, 0.3553249, 0.032383322314239855, 0.7116176584437929, 0.940959537147515, 0.8145243262900967, 0.09615586089561673, 0.1921738, 0.3613125884092483, 0.9995206662192885, 0.9998487187993784, 0.053555660872350364, 0.9997801515669598, 0.23519703305826034, 0.9998065883185072, 0.13303153333333334, 0.5804083312645202, 0.9999030893601599, 0.9995495394392924, 0.10735101014385572, 0.9250703180340377, 0.1698654113926009, 0.2897870536649833, 0.2283498420077277, 0.7106718333333333, 0.9993401666666667, 0, 0.4730585666666667, 0.1798310717081897, 0.9881552222782075, 0.2330416, 0.8544923451083316, 0.38649656706534935, 0.5660222678994627, 0.6520460722208705, 0.39825642595393196, 0.4930453426215133, 0.07791387378868354, 0.5307902013624386, 0.06480469687116604, 0.9998048324030344, 0.5412961558745545, 0.47374646702152867, 0.20531148361170976, 0.43413232754885034, 0.7107907181351952, 0.3198986946053284, 0.05183491048856097, 0.9999899, 0.4794378289600205, 0.9042957408192162, 0.8326910333333334, 0.13891691903810738, 0.7029974979825618, 0.6985286268890359, 0.7357764496793244, 0.05541416127630373, 0.21424943038817848, 0.4312069033176503, 0.9995191410040597, 0.999563809174547, 0.2814701480959311, 0.38240019316945706, 0.33717026666666666, 0.3772448, 0.06306886666666667, 0.5597500626027982, 0.16574952078119962, 0.7732677434436247, 0.15295001648052034, 0.8968671186917315, 0.27772295758394616, 0.2527404425459986, 0.5790793100300446, 0.5641028818094909, 0.1387674559470795, 0.9999192442841368, 0.9995306190650071, 0.6258624596617641, 0.04753223378923298, 0.3237847993095219, 0.6134408438553671, 0.08824761101625218, 0.5028370080187208, 0.9998404, 0.5498298, 0.9999107666666667, 0.9995177666666667, 0.10358866666666666, 0.5961333241910726, 0.3886740627624586, 0.03376727192382074, 0.887224415951019, 0.39759036908377826, 0.6443075588714168, 0.5342682333333333, 0.019697801569899673, 0.9999049665779688, 0.5021911333333333, 0.03767298767246216, 0.3879047492642137, 0.5944494878927655, 0.12096374622850915, 0.8895244108879558, 0.5920498769744447, 0.9996017202003831, 0.3303941, 0.18919713333333332, 0.17181733333333332, 0.5963158357469402, 0.7354202197255384, 0.0713444, 0.4391009821090295, 0.9318164030286429, 0.9996731521951568, 0.23220876666666668, 0.13285136666666666, 0.47957436666666664, 0.0595156170000005, 0.9507075111088519, 0.5666768395206049, 0.433844486734137, 0.3441660013464419, 0.20677096922048682, 0.8895090329293243, 0.9995750806563576, 0.28713214254446373, 0.4010476236538671, 0.08044892719760526, 0.22377842219195343, 0.999891150797165, 0.6853727498494548, 0.2063961465964054, 0.6076941216760092, 0.8089985199446773, 0.877757811681771, 0.2792038339600541, 0.44658828788594956, 0.4026224500288941, 0.5275194754324241, 0.28134296154321303, 0.9997579977336232, 0.3147525830891319, 0.9998639049341699, 0.9409137107307417, 0.04273285802851208, 0.0862791302252187, 0.1784274233651436, 0.9999907154038498, 0.16978032255251072, 0.2736198, 0.8384308, 0.048061033333333336, 0.1205921, 0.10745799940308377, 0.9999541332905244, 0.9995900332831967, 0.9150915386739235, 0.9127737578446752, 0.3581032812926303, 0.7727945568026288, 0, 0.9680333297398106, 0.04322029981038915, 0.011556273118935841, 0.9998220851836903, 0.2958520290580084, 0.9996141779709649, 0.30837019279580746, 0.5823539663081629, 0.5691160552148672, 0.6747281541010841, 0.41322063814776006, 0.9997028496934607, 0.11840003333333333, 0.5921316333333333, 0.9998824852468435, 0.5552531182362437, 0.1099856, 0.7120130192866666, 0.29828366666666667, 0.9993059666666667, 0.9669847, 0.1426980780065067, 0.12660684500190003, 0.3601967803462291, 0.16583838789951402, 0.4507175303889836, 0.3657269304220447, 0.999987954869666, 0.9993684653708512, 0.6458169040321496, 0.7730621580436562, 0.10401754254842085, 0.201219065589452, 0.9998465492653433, 0.3004635342048352, 0.49989823326949945, 0.34270516897516085, 0.9999007022678621, 0.6619294827335946, 0.06258407940669695, 0.07279356297457969, 0.8597976029942153, 0.10364080705694736, 0.9012802250851747, 0.9999993988408249, 0.9949949042075941, 0.02397935677585349, 0.17261103694776958, 0.9997439069993901, 0, 0.2862117962446751, 0.6212929449532488, 0.04173106052433705, 0.8263615861279451, 0.2256255753229008, 0.8820772, 0.3299496, 0.6343204333333333, 0.02837674322309068, 0.7764903943491291, 0.47257506558281476, 0.61686046739032, 0.5992031367951396, 0.24684803359512217, 0.10422500421145808, 0.9022127645547949, 0.4611825055127474, 0.7053047254150361, 0.276827015575386, 0.10513889712236522, 0.4928187470777644, 0.909697685045567, 0.9773815635592927, 0.38162352587003345, 0.30829922747665506, 0.1551644, 0.4384941333333333, 0.3495417274969007, 0.8548505311938291, 0.18261663333333333, 0.2758841, 0.9993675, 0.06353270635442176, 0.6895244102227829, 0.9220458333333333, 0.999303119496188, 0.20287475601643895, 0.9040350339767099, 0.08170717411103885, 0.5313693584469712, 0.07772458688632951, 0.4658280676208901, 0, 0.9998121825554864, 0.9994185972674071, 0.8787538999933401, 0, 0, 0.9996395642998056, 0.8848960785049089, 0.8953142256194391, 0.5992853500940042, 0.11448836933486037, 0.9796738, 0.1141393, 0.4113321992258774, 0.12344280191218605, 0.9189416099913673, 0, 0.5505127328996013, 0.999870416800021, 0.2988312321296255, 0.7329037267728994, 0.39376789791749217, 0, 0.47975965196681225, 0.9193049779372654, 0.9996168588256067, 0.11297954799447452, 0.7218804666666667, 0.057642566666666666, 0.5047349737018199, 0.40044940708611326, 0.16017296666666667, 0.6060923158130581, 0.9980236420174609, 0.9305674135774604, 0.21364736196491949, 0.9996859004746926, 0.39440266962135734, 0.1292154, 0.054997571795524995, 0.9994561383457935, 0.6864951261025944, 0.4082972424314273, 0.194407, 0.4674021817695021, 0.4611810124749787, 0.06248654518169693, 0.9168246891787891, 0.8758381492398212, 0.2574478865035613, 0.6148811479296156, 0.9998992329470596, 0.42463703333333336, 0.9993542666666667, 0.5546253249631599, 0.02739359223401942, 0.5216224178052434, 0.024018111500474802, 0.44373700416030365, 0.4396205225263149, 0.9995900652038563, 0.9331656789190522, 0.5428579636617776, 0.020418736325755, 0.0007020573556789051, 0.9998328061684437, 0.4913949481180415, 0.9957757719792875, 0.45245083333333336, 0.9997051666666666, 0.3326229, 0.9998787517322668, 0.5424770845260722, 0.04454920742984527, 0.18035093333333332, 0.9999700040422806, 0.1541938967660805, 0.4989019970385395, 0.41005681855944026, 0.9995658192986165, 0.9995676666666666, 0.1243869, 0.3232220596746056, 0.23740322157634014, 0.22507246014363255, 0.9269436611929562, 0.10824243773441268, 0.24164078464888983, 0.24600816666666667, 0.9095489666666666, 0.1504908876851579, 0.9999841666518888, 0.123662, 0.06188303333333333, 0.9999364045657251, 0.3805134884792559, 0.8704014593997993, 0.831650519080969, 0.6691170084438278, 0.764546540730314, 0.999914382821764, 0.2514299119538816, 0.13497968275034408, 0.07436544951761273, 0.9995093767876377, 0.9995181333333333, 0.7231178245556786, 0.049909059144053136, 0.28476618278479937, 0.05779187647123196, 0.6337905, 0.9297190626686375, 0.901686368226032, 0.14616581037978085, 0.2529248666666667, 0.36731193333333334, 0.4083035582420433, 0.8089966486967604, 0.2545075666666667, 0.4857352538086775, 0.16037928302066415, 0.9997616336794795, 0.3280801405144247, 0.9403455556487171, 0.06582351475960595, 0.34350850933347393, 0.40049884187897106, 0.3978506664132627, 0.1327282610238525, 0.9997125512790668, 0.9996839648758009, 0.5912638, 0.902606395144859, 0.4659244823177831, 0.1619300486089288, 0.25015805868861885, 0.843444359294467, 0.6253063277208222, 0.30559385510189163, 0.12468044195198667, 0.24441190513766997, 0, 0.9997963757695122, 0.9918428266727288, 0.15617429848887276, 0.9995895331145181, 0.7699329136114419, 0.9997461900339271, 0.05172962624634899, 0.9098001771136245, 0.22960427534867864, 0.22738749443537296, 0.3980443063668422, 0.6574195727516758, 0.037768551790345266, 0.42529443333333333, 0.4909945771287671, 0.9993843333333333, 0.9993027475337, 0.17116498266270982, 0.7862203491753678, 0.18323523333333333, 0.4543100003820397, 0.1970202172188694, 0.7999929666666666, 0.6317209421666924, 0.5510516562364173, 0.08851645521776019, 0.9995275439442413, 0.4644196369868158, 0.17790097664946639, 0.10601073333333333, 0.8797490082398796, 0.6168224423676129, 0.30719823333333335, 0.17837054550435166, 0.2846372976474944, 0.9989391964332069, 0.638873047192123, 0.10805668795192205, 0.13762386118840209, 0.9360103, 0.07162230584832756, 0.03929029727964301, 0.9994235365261698, 0.9993602505479953, 0.9998427461375792, 0.18390669386585576, 0.7595983252798348, 0.17094518292502844, 0.07710541977634008, 0.9999338706598279, 0.38352126997151403, 0.032113549713900034, 0.7653321091976539, 0.999755031708377, 0.3395209610408313, 0.09467488303994834, 0.19355263536337325, 0.9993398943891023, 0.3600797118495051, 0.2084914667695032, 0.2595237, 0.9997061203068537, 0.531180613474593, 0.2781605, 0.9993814292990438, 0.729152913876053, 0.038208079183529954, 0.9494813723652284, 0.15357486666666667, 0.17238556666666666, 0.4889518, 0.9999238, 0.4667965, 0.9995941666666667, 0.8104693666666667, 0.4035839666666667, 0.04958566666666667, 0.9993630446797965, 0, 0.9995593102479925, 0.9983055243133301, 0.9128888705537288, 0.08165385131111974, 0.08492061342415824, 0.9999400593335708, 0.675608682168117, 0.06675041036628195, 0.6456948345942691, 0.021568609442382595, 0.280728613079995, 0.7766699098152647, 0.22111737765434872, 0.19464300194629175, 0.9763037023806049, 0.45088080339446535, 0.6879579518471318, 0.20275803146153185, 0.0301118479915781, 0.5844131666666667, 0.37196046666666666, 0.9994544333333333, 0.5437823666666667, 0.3252396368279708, 0.6560574, 0.2273713281018915, 0.11430232576003864, 0.4205382419213565, 0.9993871883485352, 0.10465312898508, 0.9995611815427191, 0.6083517786396256, 0.9500220276928337, 0.6633963880352134, 0.3392112571471152, 0.24847207444616867, 0.7065446552684569, 0.29611471159071295, 0.6647655591160393, 0.9995490633864184, 0.8808051539064139, 0.1784011045853303, 0.29547059277985455, 0.1332040782480012, 0.5163959986444528, 0.4008244261727984, 0.8632439666666667, 0.42448752126881434, 0.2465891, 0.2904981, 0.9899118489204708, 0.4244860250199072, 0.10091407347635402, 0.4515402245930934, 0.7701010262065258, 0.22533517929418065, 0.400833, 0.9999914666666667, 0, 0.4823518162354126, 0.2568914399362176, 0.9994299341132884, 0.6041194782962301, 0.11977527045175553, 0.6994853699283283, 0.9999430234692877, 0.999441300557545, 0.2657248942752059, 0.5145439493511206, 0.7145246333333334, 0.9998253961660228, 0.7106096240267418, 0.06514372062235475, 0.45914074720096915, 0.1991712152429386, 0.5046981134543234, 0.5775208339421467, 0.2951619419122867, 0.3159291749004754, 0.9996268100961532, 0.6329951013071274, 0.364502510200756, 0.6351016333333334, 0.1109176, 0.11942538555566178, 0.999445332815644, 0.23504176666666668, 0.9994475333333334, 0.9974086361999159, 0.28908373647815405], 'oldestBlock': '0xd1231f'}}), + (('0x400', '0xd1231d', []), {'jsonrpc': '2.0', 'id': 13, 'result': {'baseFeePerGas': ['0x22d0b84596', '0x2049c3d3e5', '0x1f997c9826', '0x1dfacbc934', '0x1dbe40e7e2', '0x1ee609699c', '0x1bd2f0db58', '0x1cc19025dc', '0x1c2c116d4f', '0x19234c3580', '0x1c46e2c0db', '0x1f5648da2d', '0x1e1e9ec321', '0x21e1e7bbf9', '0x261dd52f24', '0x23be1055c3', '0x207627cb1d', '0x2484280aae', '0x279ef0e1ad', '0x256d0dc5d2', '0x2426046bb1', '0x1fa143de3b', '0x2394a779fa', '0x2805ae7f0f', '0x24894794ba', '0x23fa96f5ae', '0x27d75d7ca3', '0x2732755146', '0x27f18211e1', '0x23a8d38063', '0x1f9d621024', '0x238faf381c', '0x241158b835', '0x243fb3a9c9', '0x22ca86b8f9', '0x2344685f94', '0x23c87254ba', '0x28096f24b2', '0x26b1d50606', '0x23eff7df6d', '0x1fd45a0f5d', '0x2213df96a9', '0x1f5306fa90', '0x1edbba980e', '0x22b5e24fbd', '0x270c335f70', '0x269e77b146', '0x2424c1340f', '0x26b0c90d12', '0x21daafeb70', '0x2494c3734e', '0x2925e454dc', '0x2c23f7f2eb', '0x2763b307b5', '0x2c4e886c35', '0x28ef921770', '0x2e0c587032', '0x2cc6b17cdb', '0x2c4581ad6b', '0x2e700c18af', '0x343ce8f0cb', '0x34159decb1', '0x2fa158e01e', '0x2c868842bc', '0x2b56dab869', '0x280e7a00b5', '0x2c4507956f', '0x2cc5cb3ec8', '0x2987f5e154', '0x2e399a928f', '0x340096b55c', '0x2f1327a15c', '0x2bf57145df', '0x2ec7a836c0', '0x2bb093b11b', '0x28fb723a0d', '0x24e1acf22b', '0x297c9743be', '0x279ca0e53a', '0x2556863aa9', '0x21385dd8e2', '0x24c226a8c3', '0x29596ee337', '0x28ac2607d4', '0x25ea37b87c', '0x23a3725730', '0x22fe14669a', '0x261c9a34ea', '0x251d917b9e', '0x29c11b97c3', '0x2ef8512de9', '0x2afb5a42d4', '0x290ba6fb29', '0x2c9e072381', '0x2b9dc1ec2c', '0x284bfc9430', '0x241b2edaf0', '0x202885378e', '0x241e82211a', '0x223a18ce1a', '0x22943f8671', '0x2038be18e1', '0x1e7f0ae534', '0x1ccab9c90a', '0x1f38b218df', '0x231f31e689', '0x2782af4cce', '0x25194589e0', '0x293d225cf0', '0x2899a6894f', '0x2daba5b276', '0x2c8250ff25', '0x297ecf0b6b', '0x25a4c16a18', '0x2a57e09e0e', '0x2991962ea1', '0x253f86f912', '0x23159f80a1', '0x24c373ba81', '0x295bd75a0d', '0x2961dc4fb3', '0x2bb7202771', '0x272a4f751e', '0x27184990a6', '0x22fe5bd156', '0x258f154312', '0x2790374ed2', '0x2b381cef54', '0x2619657ef9', '0x2adc56146d', '0x290dd59aff', '0x278557cdf1', '0x246e3d5b8b', '0x266c140a78', '0x27a75c5725', '0x2440b456ff', '0x2122cf3706', '0x25466d98ef', '0x226dad38ae', '0x26ba100221', '0x2b9044ccb4', '0x2d05ebc5a7', '0x295a1540ec', '0x26794665fc', '0x22b10ecfad', '0x258c80b056', '0x242c26b256', '0x248c6f5824', '0x27418358f6', '0x23083fd385', '0x2535065c7b', '0x22034c001d', '0x2064e33b00', '0x1ea52afcce', '0x2278d9290f', '0x26c7bb7def', '0x2a27189201', '0x26250eec0b', '0x25fe6d6ce0', '0x273fa1c606', '0x2404df87f7', '0x242f5acefa', '0x233a50295b', '0x1ffb35e2ed', '0x23f9ae7796', '0x224fff1fe0', '0x26991a93c8', '0x2b6b460d26', '0x29434f342b', '0x2765725417', '0x2907ac80df', '0x286359ad2a', '0x2820b92242', '0x23e1b98ec4', '0x285d87d3f1', '0x2d68c5af48', '0x2dfac524f1', '0x283b6c8053', '0x29a44c1d1d', '0x250d9a29e8', '0x26084c1a22', '0x2a2d5cb390', '0x26608d441d', '0x249160ab72', '0x2192000315', '0x2020285e07', '0x1db85c3c06', '0x216e95dcbf', '0x2367b76fc7', '0x220b039dc1', '0x20a1566783', '0x1d066f78bc', '0x1ecf2a5db0', '0x1bedb2fe92', '0x1f6addd9d5', '0x1ff7d78b60', '0x1d6ac0fced', '0x1cb7ece81a', '0x204db7b453', '0x2456ae4795', '0x25766ffb24', '0x21f0c4cdf2', '0x262e02963d', '0x2851fd2912', '0x2d5c20fe6d', '0x2a28c0f87a', '0x2f6d397076', '0x2b2d7a60fa', '0x25c7cb14db', '0x2617dca3ac', '0x27c70f7d24', '0x250fb838ff', '0x27b1565cea', '0x22bb2b914d', '0x26883df987', '0x22e7956219', '0x274415a320', '0x23b3283e91', '0x2829512a85', '0x25f3b30cb6', '0x2670215ed7', '0x2341755ad7', '0x22c3200973', '0x1fc63b9aef', '0x1d3427d125', '0x20d9dcbae4', '0x24f4ee780f', '0x20eabedff4', '0x1f421d494a', '0x2329bbc5af', '0x278e528aa4', '0x2c7fe93193', '0x27c2048e73', '0x296f6cb036', '0x24417f1a30', '0x26e942d611', '0x228def4c9a', '0x205d2699bf', '0x2467c98c91', '0x2186b5eca7', '0x1d55df2f13', '0x1ec551444e', '0x1bd894474a', '0x1e82fab430', '0x1c4d694e70', '0x1d9b5d0203', '0x214e48cc8e', '0x23f08026ce', '0x2071eb05ab', '0x1d6792d6bb', '0x1e5c168ced', '0x1b1ffd1be6', '0x1e83f4dbbd', '0x1d538d93e0', '0x1b588a428e', '0x1dc1616050', '0x217892b4f7', '0x217a3e2c41', '0x1fe820382d', '0x1fbb7faf6a', '0x1ec772bf93', '0x1bea49d3fa', '0x1f30cc4a21', '0x1fd3a452cc', '0x1d7b2f1544', '0x1a50f14b23', '0x1706d321bf', '0x19e77e279c', '0x1d2461106f', '0x20c87bb849', '0x20314b9baf', '0x1c4d97f75f', '0x1b99f951e5', '0x1e7ccc25d2', '0x21ba7cd414', '0x21f86e5c82', '0x2282ac5fc3', '0x1e4c74a6ea', '0x1b63a69993', '0x1d0957a94f', '0x1b6d4a7e9b', '0x1a215cd6b0', '0x1bef512728', '0x1b63b86bfd', '0x1bc28b754b', '0x19152e2356', '0x184c8b34d0', '0x17bc58e893', '0x15e660ca8f', '0x18a30534ba', '0x1b48170a52', '0x1bb9401d04', '0x1f2fb704dc', '0x1dc95c4292', '0x1ab05d5b2c', '0x1bdc90fda8', '0x19f2e371c7', '0x1d304ab24c', '0x1d819e615d', '0x1d7b37f13d', '0x1edc54fed8', '0x1bb1642a12', '0x196d8019c6', '0x1c24c0a360', '0x1c7660d42b', '0x19de419362', '0x1924c55a64', '0x170e141434', '0x19efa3310f', '0x1c95c8320d', '0x1b3ed6f9c3', '0x1b434e0e60', '0x1ccba9eec4', '0x1934cbc8e8', '0x18a61d3222', '0x1bbab6cd8b', '0x1f3150c9ba', '0x1c839184cd', '0x1a6ed0bfd0', '0x1833415d03', '0x19017de80a', '0x198fcc406d', '0x18f6255de7', '0x18ea05ecbd', '0x171edeadb7', '0x195511d151', '0x1c7ece26d7', '0x1cbc4bad3e', '0x1f383f96e2', '0x1c34be9246', '0x1b6dff8b58', '0x1eb88e87f3', '0x1c12efc83c', '0x1ca1b37032', '0x195a1b24d0', '0x1740921471', '0x1644695134', '0x18926a5998', '0x1ba3f31a4f', '0x1f174aad14', '0x1b47ef0ff1', '0x185be62727', '0x1b67082eee', '0x1be38d5889', '0x1d0ab2b6d6', '0x207ae13c9e', '0x1dcee1637e', '0x1a51182b83', '0x1d9a711239', '0x20967cb810', '0x1e9bcd2fd0', '0x209e2bca91', '0x236b03fdda', '0x20f90ab21f', '0x1d240caeb2', '0x203155e767', '0x1d9ddab6a2', '0x207c7b5191', '0x1dfe6b96e3', '0x1e2102cae6', '0x1b305d21ee', '0x1aa3d95450', '0x183aceb8f1', '0x17ba1fb27d', '0x18c80b29f3', '0x1993101d50', '0x19563a773e', '0x1728974c10', '0x1a0d5bd4ea', '0x180058d023', '0x15684815c3', '0x1814c50fa0', '0x15122c6dac', '0x165bd4cd77', '0x1926cc1010', '0x1bc718b9cf', '0x1b2b7d91b2', '0x1c3fed2f6d', '0x18b7ef8980', '0x1b29a33ff3', '0x1a0d8feefe', '0x195dc3eed7', '0x1c88b924ef', '0x201960cdb1', '0x1d7ab4e3cb', '0x1af2f61d06', '0x1e507b9c42', '0x21a2cbcca2', '0x226f20ed80', '0x2012a7d7db', '0x200f41c85c', '0x209964973a', '0x1c9e006215', '0x2030f12715', '0x1d3125f192', '0x1d6a856dfd', '0x1b997a4243', '0x1dbadcef22', '0x1c72dde16c', '0x1ae17b74f5', '0x1e3d7c004c', '0x1bd9597552', '0x1f5455ac9f', '0x20ffa4595f', '0x1f0c04b62a', '0x20ac2e1e49', '0x1cffcd9433', '0x1a2f3ae3a5', '0x1aadfd19a2', '0x1b78a44ccd', '0x1af684365d', '0x1e544784f1', '0x221d9d54ba', '0x25eef02c5d', '0x239f18f579', '0x23a36a66e7', '0x22c6aaa6da', '0x223ef319ae', '0x21d95fe82f', '0x23faddebc7', '0x208bb4cd40', '0x249c31394c', '0x2447a43a6d', '0x203297b252', '0x214af0cb5f', '0x1ee660ca6d', '0x20e2fc885a', '0x1cc69cf74f', '0x205ea7c680', '0x1f40887596', '0x1f6d9d233f', '0x1c04a4b348', '0x1db11e2f84', '0x1af8e87634', '0x1e57ce83fb', '0x21a81419a7', '0x1eab10946e', '0x1cfd9c9893', '0x1bb58447e3', '0x19659c526d', '0x1c9207b5bf', '0x196cacad5a', '0x1c7604e964', '0x1adcdd1e32', '0x188ca122fb', '0x188473589e', '0x186dc9c054', '0x1b7a3060ca', '0x1c84366e83', '0x1fd9b8cb9f', '0x1d5535c00b', '0x1ce79027b7', '0x1b00132ece', '0x1a79ac8173', '0x1838747d0c', '0x18b0a4e6c5', '0x16f521969a', '0x18ae220f76', '0x16824dbbb7', '0x15a7e240bd', '0x1641f05926', '0x13ea04a69b', '0x1666908533', '0x18a5cd7e20', '0x1b509c71d0', '0x1c44e6427b', '0x1bc859912d', '0x187c3c3e63', '0x1b7976815b', '0x1ee814b316', '0x22514879f3', '0x1e62c42a24', '0x1e3e0ad582', '0x1d38624fd1', '0x20dd800b2c', '0x1e8b8b6a93', '0x1c4172e15e', '0x19635e3bad', '0x1c8ef3c744', '0x1b2c374d0e', '0x1e909d3097', '0x1af3d4bfc9', '0x1d902eac09', '0x1bc4ff8b67', '0x19323d9c58', '0x1b84b8d9a8', '0x187d6eae4f', '0x19f0627573', '0x1a5dbd6cca', '0x1a7de82452', '0x176c3340d1', '0x1a58d5253c', '0x18fcfae4e3', '0x17e49ae41c', '0x1a325fd36f', '0x1bd193c66c', '0x1ab2c9b5e0', '0x19088a3a5b', '0x1bbba0ed18', '0x1f14715911', '0x1c55ed0f1b', '0x19f9cca6c3', '0x1c1fdccdcd', '0x1a801ddd0c', '0x1877ab0db9', '0x17743b5c4e', '0x18b4614304', '0x1af019f1e5', '0x17bad21041', '0x15bafead3a', '0x16490d3693', '0x15ee020874', '0x18ab28eeca', '0x1595c3d0f1', '0x17ea6f9365', '0x1a7b48acf4', '0x172bdf9756', '0x195c57eabe', '0x1773f8571a', '0x1a61e25387', '0x1dadd871d5', '0x1a72bc2d89', '0x1d03b26e20', '0x1fb25b68a5', '0x1ed5ccbe0a', '0x22b07079f8', '0x2199696b9c', '0x23288d7ea4', '0x20613a314f', '0x2233c7a39a', '0x1f5c8da19c', '0x2247b2e412', '0x21b242533b', '0x22730fdd35', '0x1e9778db50', '0x1d7b7da1df', '0x1dafae0503', '0x1a90eb50d4', '0x1de2d67ca0', '0x1b51f6ee45', '0x1afc9ce8f6', '0x1847537ad3', '0x1b4f417821', '0x1c4a6f7b7e', '0x1e263ae4c2', '0x1d06e02fb9', '0x19e7a9504a', '0x1c646bdfb6', '0x1d4254e3fc', '0x199a0a477d', '0x1acb175c43', '0x18fed0b080', '0x1632ed1b83', '0x16509edaaf', '0x1919b9c32c', '0x1c1c63beca', '0x1c74cf52e9', '0x19bfa828e2', '0x1cf718cb95', '0x1fbc51c62b', '0x1c28174fb1', '0x1995ce0ea0', '0x1bffe0b2f1', '0x1da5afe81b', '0x1a374b3a9a', '0x1d7e1fdb9b', '0x212ce6c195', '0x1ec2cd0abe', '0x21646c80b1', '0x1f277faffc', '0x209973d65e', '0x21cf97ed9a', '0x24b4839a51', '0x253fb49ac4', '0x25b3912880', '0x219af40f00', '0x1ea57b714e', '0x1dac9f08ad', '0x209b5bb508', '0x1f3207419d', '0x1fd9ce82aa', '0x1c37c54866', '0x1c064459a0', '0x19fbc1ab31', '0x1b26d9fea8', '0x1936f96e8b', '0x1877a8267c', '0x179078469b', '0x17f7edf8ff', '0x1587b3a10e', '0x15f3c4ed25', '0x1695a7af2b', '0x143c359580', '0x16c2ee7d6f', '0x1826cf78d5', '0x18fa87009b', '0x18cd303ca7', '0x16f3a3f79e', '0x16b7230b1b', '0x145dfe17d4', '0x158cd02550', '0x1561cffd88', '0x17719da71e', '0x1a5ecafa0a', '0x1b74f641b9', '0x19a0fb0932', '0x189124dc0f', '0x16ae9056dc', '0x1814b57459', '0x16d5f9c851', '0x147b234e45', '0x1709faf579', '0x19eb166b28', '0x1c7273bdc2', '0x19d541d400', '0x1a72d31be4', '0x18f986028b', '0x1a60f825d8', '0x17696a752f', '0x1a55cc7924', '0x1b6a9dff4c', '0x1b44747106', '0x19d610c410', '0x1a08f84d58', '0x17ca0f558e', '0x194be5c3fe', '0x17acb94ec7', '0x14f9b5dc54', '0x159fc7da9b', '0x133a01d369', '0x15a06d940c', '0x13f4107304', '0x160aee635f', '0x13e1e7795d', '0x15eb670b7a', '0x142add6e31', '0x124090c8d5', '0x14889511d4', '0x1719639423', '0x19fc01895c', '0x1c641c52f1', '0x195fa1d274', '0x1a594d399b', '0x197041dcf2', '0x18f7a08d30', '0x1a044fe576', '0x18ce907497', '0x1aa3403c57', '0x17a3b4a0f1', '0x14af3e0cd3', '0x17449977de', '0x193bb8ef8e', '0x175cf02708', '0x18c2c6f0e2', '0x17a776ca71', '0x15f0fa3f8a', '0x1630ee90af', '0x18f6a5f8a1', '0x1c149882ae', '0x1b99b98b52', '0x1ba15fd4e9', '0x19d6888074', '0x1c867632af', '0x19aa735eaf', '0x17076366bc', '0x194d66d815', '0x169246b2e3', '0x1692689b63', '0x18606c5a42', '0x19692bfdfc', '0x1c95ee4ea6', '0x2027d8bac4', '0x1d5a944429', '0x1eca62ed08', '0x1ba5e8ea21', '0x1a150c9b38', '0x1cd368ce34', '0x1b4c80862b', '0x18a38f67ed', '0x180949abb3', '0x1b0a66a2c8', '0x19e893e66b', '0x19fe2d2473', '0x1a7340c9a1', '0x1b092421bb', '0x19b9beb113', '0x172a31c141', '0x18c870b903', '0x165cd0c307', '0x16531529d3', '0x162175b3c3', '0x18e51cdad0', '0x1715191e05', '0x15efe3535a', '0x155a0994c4', '0x13e3796e7a', '0x165f69f636', '0x15049d6072', '0x17a4a076bd', '0x1a98ae8e97', '0x1deb7624da', '0x1af6e9d2a5', '0x1854e336f0', '0x1b5ed1ecd6', '0x18ca3cb843', '0x198096b21d', '0x16fb6f5bb9', '0x19da859bfb', '0x179785f5a8', '0x16fe43824e', '0x1635b92b61', '0x17dd6f3ef4', '0x179e93e35a', '0x1a91acc72c', '0x173f772e47', '0x152e1601c4', '0x17d3545bbd', '0x1acd1cb5a0', '0x1c6b6fbae8', '0x198a85acec', '0x1cbb413929', '0x19f1f2a971', '0x1a6513780f', '0x17e2c3cc78', '0x1ade83f911', '0x1e39c8bbbc', '0x203f48f5e6', '0x1da7a0aa4f', '0x1b1a1ade1d', '0x1e7d5c8620', '0x20c69baf14', '0x1eb510271a', '0x1cd942e6e0', '0x1ad02d87be', '0x1c090b46af', '0x1b94bc55b0', '0x1b9a57b952', '0x1ad00c4330', '0x1aa30b8f7d', '0x177811d056', '0x1a667c1647', '0x1719ac937f', '0x1745743f3e', '0x14d616050f', '0x1770b9c083', '0x1545bed7a4', '0x12fcfb05a1', '0x155c3e0dd7', '0x158634a2fb', '0x1739df8605', '0x179e919342', '0x178a87ba38', '0x178dfb327e', '0x1537bc27ff', '0x13e49af749', '0x163dc09cbc', '0x1904a9e761', '0x1a175c4e12', '0x1d599a337a', '0x1b050e00bb', '0x191e82c7cf', '0x198f3dae9f', '0x1cc0b132ba', '0x1de15bd292', '0x1ada089965', '0x1e35465861', '0x1caa695779', '0x1b9f70349f', '0x192a0f194a', '0x1b8cf00d58', '0x188ff6a32a', '0x16facb9146', '0x19d93cf9cd', '0x1ba860bbad', '0x1a8d26e328', '0x19d6fdcbf6', '0x19b1278843', '0x19c57be9c2', '0x17a8c25a5f', '0x1562ab82e5', '0x180e21b1ce', '0x150c5d7b95', '0x17add91ce3', '0x1aa383c2cb', '0x1d3334f9b4', '0x1ab5240849', '0x1bfe4ae6f0', '0x19f60d863c', '0x1b687ac445', '0x1e171e2131', '0x21d97f855c', '0x1f175386d5', '0x22a2f6a482', '0x210ee04353', '0x22d1e2f649', '0x1f105b6c91', '0x1edfc56db9', '0x1dca53bdbe', '0x1e23cee443', '0x1c5276be9b', '0x1efa8333bb', '0x1c8dd3786b', '0x201ef7a0db', '0x1e39cf2caf', '0x1dd91b808b', '0x1ccbafa90e', '0x1aa3bf4a22', '0x1df7dd2be8', '0x1d39e8d3e2', '0x1da1f34d7d', '0x1b4704db98', '0x1d2980a818', '0x1d6bdc4252', '0x2118e509a5', '0x20aabd918a', '0x1d3a28d7bc', '0x1d813218fd', '0x1cda537eaa', '0x1da5645f1f', '0x1c5807fb1c', '0x1adfc9f2a1', '0x1e3abd09fb', '0x1c59fc192f', '0x1ab0556c1a', '0x181d2f46fb', '0x1b20abad7d', '0x1b4fee098e', '0x19ea78b8e9', '0x1c804e5ee0', '0x1c991cd0ef', '0x1de9fe5c6d', '0x1aa190af50', '0x1df4c5be8d', '0x21b2762a83', '0x20d204ed1f', '0x1da0d0bad6', '0x1cc878d14f', '0x19950e18c3', '0x1cc757de07', '0x1e837ae0ec', '0x1d5f97f02e', '0x1b16e38ffd', '0x1b962d4adc', '0x1bd5067eb1', '0x19234ba9a2', '0x1937f264bc', '0x176efbac29', '0x1a5c143451', '0x1da689a7f6', '0x1ce4d9332a', '0x1aec63d67a', '0x1946e4d033', '0x177167e27d', '0x176c56188f', '0x15d9019c59', '0x166e71bcf1', '0x16fd592dca', '0x145a02af4a', '0x1457d7841f', '0x16e2ae6a21', '0x179fb93c02', '0x1620688795', '0x18e3d11db2', '0x1c00230946', '0x1ca5880bca', '0x1ae5e66213', '0x1b2de4bdf6', '0x18931ee0dd', '0x192f0f408d', '0x17a594d801', '0x19d1954232', '0x192176b884', '0x19f2ae277f', '0x1795a14761', '0x17114461ef', '0x167ffbd28b', '0x14ce11de48', '0x13f43e24a6', '0x12029aea7d', '0x14425acf0a', '0x159a6e1a4d', '0x12fa827440', '0x1559c1f54b', '0x1804aadc55', '0x18ae8d7eca', '0x167367fd7b', '0x17fd675bb7', '0x17c0ae6ba8', '0x15be33903c', '0x18753cefca', '0x1b830459f2', '0x1ab4459624', '0x19c6e6e986', '0x190ab1b093', '0x162a372b5f', '0x179c051478', '0x15a3bd9659', '0x179fdae345', '0x1a93a5bff1', '0x193fa79587', '0x1c668b7749', '0x1cf4dd7a75', '0x1f226b993f', '0x1bf3a9aeaf', '0x1a5d6a6b12', '0x198065410e', '0x1825bc5768', '0x163c45adf1', '0x18745846c3', '0x15e14662f2', '0x164b8e65ab', '0x1914a76b47', '0x1b12cc4767', '0x18320b87e8', '0x16f004ce41', '0x1439678aaa', '0x1691b4480a', '0x15482d993c', '0x1334c186a9', '0x1199e7192a', '0x128f5849a9', '0x13df720b0f', '0x15d940e8ee', '0x131e18cbd1', '0x111bc43f95', '0x133ecb86ba', '0x15a6a2e4fb', '0x185ae49947', '0x181b302092', '0x17db8f1583', '0x1ad6954b42', '0x1c1fcac44b', '0x19f4d8d98d', '0x1d3254ec58', '0x1b51372d7d', '0x1c266b1eab', '0x1bb0baa633', '0x1f25d23432', '0x21d395ea08', '0x1e647c8965', '0x1c882d776a', '0x18f727c87d', '0x1bf1525fe2', '0x1f6e621c03', '0x1fe92e8d4f', '0x2316e63907', '0x220ff30630', '0x20eee930a1', '0x1d92b792cb', '0x208a01ab44', '0x1f51336e78', '0x222ce325fb', '0x1ef6e76afe', '0x1bec17ffc7', '0x1d700d9e71', '0x1e237a7438', '0x1ed7d6b518', '0x1c874ef220', '0x1fcf1e9d66', '0x231973cd5a', '0x1eb64553af', '0x1fe3731f42', '0x1c68f97a31', '0x1be6d565b1', '0x1e1a155cbe', '0x21dc4116dc', '0x214e9ecefc', '0x23f2c858f7', '0x207e500de9', '0x1d6c4e4ea5', '0x1f390fd935', '0x1dfda488a1', '0x1e936dd4c4', '0x21aad38293', '0x241fa81638', '0x216436d986', '0x1f13f5d12b', '0x22f5d23895', '0x269c7cf392', '0x234fd9100a', '0x22b11dd884', '0x23a0946ffb', '0x215c0d5c66', '0x20dd363bba', '0x22b8a12102', '0x1f688afc09', '0x2308b87db3', '0x24319e0cf6', '0x20e78bf72e', '0x236e746152', '0x1fe2c387c3', '0x1e513e19ce', '0x1c2df8a7f6', '0x1f487fb5e5', '0x1bebc2b413', '0x19bf78fe7a', '0x1bd95f102f', '0x1efc5e6778', '0x1f7c7cdb9e', '0x1c828e49c3', '0x1f6dea6905', '0x1bfad529cd', '0x19d9bc98be', '0x1b84bc1c84', '0x1a874945d5', '0x1b8b399710', '0x18f1971bd2', '0x18a20183f8', '0x1bb5f4e70f', '0x1da4b932a2', '0x1bb2991eca', '0x1a518a1a19', '0x187772299a', '0x1b374da35a', '0x18b0ce498a', '0x163b6271da', '0x138bbfe97a', '0x15fd11cd98', '0x18bc8ac86a', '0x185a1556b5', '0x1a4f44254d', '0x1d9835b3f4', '0x1d1d2bf108', '0x1d998830da', '0x1a31468b15'], 'gasUsedRatio': [0.20964873865422806, 0.4146947511677008, 0.2949483455185905, 0.46844606666666666, 0.6553839666666667, 0.1019761, 0.634002063651511, 0.41876996666666666, 0.069183, 0.9994876997387949, 0.93288365107915, 0.34460066900059244, 0.9997185503193922, 0.9998567264830819, 0.2508590452410677, 0.13282950448684017, 0.9996301102234796, 0.8400818000422091, 0.2784125253071889, 0.3634653066400053, 0, 0.9996200637751286, 0.9993173831182657, 0.15159877274854758, 0.4389775706090325, 0.929408118476934, 0.43532658326900964, 0.5761575, 0.0710015, 0.046297366666666666, 0.9993221666666666, 0.5569712490914044, 0.5200816674202489, 0.33914330127221687, 0.5547380218479364, 0.5584992876530159, 0.9755172298160588, 0.365904, 0.21497038142254088, 0.042773874681412194, 0.7825217222327584, 0.17681963595730832, 0.44049234437640455, 0.9993361647858002, 0.999811450251272, 0.4560900666666667, 0.24360393333333333, 0.7818752321691201, 0, 0.822188294985405, 0.999373365476061, 0.7908997496483893, 0.0694610245265574, 0.9993538338330616, 0.19567212596144623, 0.999552828289333, 0.3895002899513821, 0.45491923041016047, 0.6957172322548906, 0.9996153333333333, 0.48824696017672076, 0.15792635266214092, 0.23926276666666665, 0.39343263333333334, 0.1970207, 0.9207149781761891, 0.5454474424176129, 0.2104001406361334, 0.9520871756323004, 0.9999271333333334, 0.12098013333333334, 0.2352246, 0.756708840483934, 0.23577059457824143, 0.2521119563828167, 0.09976132620523066, 0.9994517333333334, 0.3192332666666667, 0.2703873332309, 0.0588617216042735, 0.9260326017994188, 0.999580565883723, 0.43451958614576547, 0.22880490732040717, 0.2598359907190445, 0.4274980349920047, 0.8565597569777734, 0.3954414252413653, 0.9999340973775018, 0.9996523, 0.16036673333333334, 0.31980025161236614, 0.8480798915412321, 0.41025396990209584, 0.19557967160137604, 0.08402287796979731, 0.06263436687357166, 0.9926743325140532, 0.2904456781041177, 0.5411551031363494, 0.22729839103227695, 0.2858097651225147, 0.276449618311145, 0.8375352666666667, 0.9997058666666667, 0.9998177779398417, 0.2558349403876472, 0.9463861354453352, 0.43805754691125737, 0.9995344537059, 0.3982757883331195, 0.22916053983271215, 0.12870337747952657, 0.9993887426140707, 0.4268291351053526, 0.0842501856136322, 0.26764611369001323, 0.6914259609937714, 0.9999819652078802, 0.5022740701114563, 0.725513638056601, 0.08366467493022917, 0.4928097109518002, 0.08037627722996121, 0.7932342216239849, 0.7134700195234147, 0.8696196748314492, 0.02613768227352287, 0.9999036809410465, 0.33139347071266106, 0.35061936232753826, 0.1872288208533301, 0.7186684555725673, 0.6282146641228704, 0.15693022732744677, 0.1561058384155872, 0.9996545632535201, 0.19452157228332942, 0.9993992209830772, 0.9995756802000024, 0.6340183758597148, 0.17383500866400928, 0.2215937013502507, 0.10678643333333333, 0.8294403818662257, 0.3533778170574172, 0.5415905867455242, 0.7963000672413245, 0.06962541265164046, 0.7483318432807574, 0.1565980677451823, 0.30962667813869393, 0.28404641682087556, 0.9995076241459593, 0.9998993743726987, 0.8478593029111178, 0.11967247756263902, 0.48417587071978424, 0.6320955663320542, 0.17086423333333334, 0.5184284120109954, 0.3941888345762456, 0.13137113333333333, 0.9995454561379187, 0.31511415717575086, 0.9995936207279905, 0.9996080442177956, 0.3013672838418716, 0.31904806355594334, 0.6658735651804168, 0.4374224357098302, 0.4742238501908689, 0.0767438362718105, 0.9998214891227094, 0.9998258947640157, 0.5502367988332008, 0, 0.6401528831226792, 0.05922613333333333, 0.6057160183081222, 0.9359213, 0.13961186666666667, 0.31142173665918105, 0.17210912730185216, 0.3278602, 0.20049338487633492, 0.9995689333333333, 0.7360815830008663, 0.34611061140234023, 0.3339983831412765, 0.058067858203998984, 0.7458698739933842, 0.12599171823350305, 0.9996950968740104, 0.5701119997589325, 0.18079142983867086, 0.4050143206759995, 0.9993479268089801, 0.9996364645945148, 0.6237306333333333, 0.12393011775999263, 0.999606499632733, 0.7242595365381379, 0.9999578665866132, 0.21775198187239728, 0.9997688326783593, 0.1416353749104957, 0, 0.5331142666666666, 0.6768682048646164, 0.22686368596822976, 0.7839956333333333, 0, 0.9377699731776408, 0.12342426218476335, 0.999799924081602, 0.13672118941949807, 0.9998972333333334, 0.2799434981592859, 0.5512288144802269, 0.16883693333333333, 0.4440102426686326, 0.15619437911475384, 0.17639121064899535, 0.999565150739394, 0.9999222075875316, 0.06275513988589931, 0.2984364326840057, 0.9996774447047946, 0.9997210569321331, 0.9999202795366153, 0.07377014955260919, 0.6687584819966672, 0, 0.7929547081702809, 0.05213448907384339, 0.24642182544454969, 0.999513669568634, 0.18365086666666666, 0, 0.6957134, 0.1198004, 0.882909427722838, 0.21037282968130772, 0.6843660221622622, 0.9997364661747369, 0.8163001333333333, 0.11107223333333334, 0.1251615, 0.6299300266710443, 0.07380854586877224, 0.9999822480459478, 0.34413459486376896, 0.22986513337983216, 0.8524529486166877, 0.9994854666666667, 0.5007794778267645, 0.3123194350251314, 0.4781457398653392, 0.3798298410128314, 0.12781158118507743, 0.9693399255919449, 0.5815769577005747, 0.20521140110134636, 0.07057287657526055, 0, 0.9998744101003375, 0.999969699828299, 0.9997623333333333, 0.4279412487039739, 0.01672561869858359, 0.4008392013311281, 0.91824300860315, 0.9252205666430892, 0.5286958489281003, 0.5635857333333333, 0.011824546669823082, 0.11590452001670729, 0.7405662572462073, 0.27826855849474025, 0.3109018059506883, 0.7762321815008306, 0.42191836490311235, 0.5540947573142119, 0.11423473424257372, 0.3750158288189603, 0.4072772399440092, 0.19062386666666667, 0.9998894, 0.9294069659022035, 0.5648104142493089, 0.9996100855382775, 0.32045724220209354, 0.08402190703384191, 0.6757527146326915, 0.22538472677575572, 0.9994232725555188, 0.5435351608515161, 0.4966108172912018, 0.6871489182528725, 0.08941434299508841, 0.17281203598174127, 0.9272229862550573, 0.5453177048568251, 0.13541717947668028, 0.38796250683505995, 0.16772625981803208, 0.9998638992604948, 0.9085431168711453, 0.312543054955056, 0.5025607231144613, 0.7248698963229167, 0.0014054952521868418, 0.41155338717190887, 0.9998958953203041, 0.999584288114688, 0.15649590212504333, 0.20806327882883338, 0.1621393819841718, 0.6331576845653458, 0.5889205258477813, 0.406077848175345, 0.49241153684058936, 0.21204036416661573, 0.8826404255941123, 0.9994461, 0.5337173082848735, 0.8458005590780242, 0.113873874583276, 0.3899026408150176, 0.9799537200530333, 0.15535495841023497, 0.5794576348256271, 0.04181219221966377, 0.1687047, 0.3305543863582789, 0.9140080379572951, 0.9995118045479771, 0.9993489952543985, 0.009826802279687345, 0.07156821714265962, 0.9997726067943231, 0.5710018903857103, 0.6653582325893532, 0.973553447233949, 0.17095163333333332, 0.03148996666666667, 0.9995312333333334, 0.9032731128613758, 0.25705773992055725, 0.7625740319446237, 0.8433915436848164, 0.2238457106432934, 0.0351321470442529, 0.9189173061306606, 0.1799153630587268, 0.8875713112547384, 0.19310991628283397, 0.5180196462341935, 0.10967402973355046, 0.4192485423476395, 0.1380908501013233, 0.4170158263650292, 0.6777506022081611, 0.6280062481929706, 0.4628324543156835, 0.15610993333333334, 0.9997934333333334, 0.18512006974810902, 0.06769020245453809, 0.9996007430729957, 0, 0.7444546325609854, 0.9996414656388681, 0.9176552876668981, 0.4124714007246561, 0.6589742666666667, 0, 0.8955172656666901, 0.33658886666666665, 0.39456766666666665, 0.9995300921983017, 0.9997614997694497, 0.17353502470214552, 0.15667395612544485, 0.9995078926233739, 0.93827849035115, 0.5949192097174842, 0.22571109101501646, 0.49834424516504444, 0.5673237993273229, 0.011399190329634885, 0.999557913793958, 0.12732717021444104, 0.5307088565446072, 0.2529819660346116, 0.8087607, 0.3276167510907735, 0.2795458942428346, 0.9998935038940511, 0.1837118490525132, 0.9998970666666667, 0.7131119666666667, 0.2634257685963677, 0.7094417621456447, 0.050283666666666664, 0.11174993333333333, 0.5756403127654154, 0.6186843107720233, 0.42598777465053594, 0.999390576462498, 0.9993819286122876, 0.9476146849082739, 0.2562168884060457, 0.5018940904677408, 0.4032165, 0.43902186666666665, 0.4536555, 0.7518031642101488, 0.1182072142669738, 0.9995308243631396, 0.4639142, 0.04991847872781104, 0.636048475694454, 0.21251118927047224, 0.7571853386521434, 0, 0.9995740343439736, 0.3618876540387771, 0.5225388856477655, 0.06598937879790993, 0.7389492889916108, 0.13362764955866885, 0.9998755326197204, 0.9368140388249101, 0.14484364411774167, 0.2812000827863777, 0.3231678, 0.166227, 0.9998266, 0.05955576666666667, 0.9777284, 0.2753750296169124, 0.1555207, 0.49479436666666665, 0.4855571201388511, 0.9991539991821992, 0.6512746659434708, 0.9676626385590132, 0.18381953333333334, 0.4415934, 0.23647731323695745, 0.4222224247893757, 0.15934104830993595, 0.577535653617297, 0.2193242132883958, 0.8001476937567221, 0.14810528271037712, 0.34838019051139063, 0.6111531666666666, 0.07885073333333334, 0.9994461333333333, 0.901242763558615, 0.9328556297129083, 0.6397408415295431, 0.4311585955756101, 0.025268266437961064, 0.9883209033963902, 0.9996786923624964, 0.9414526123786056, 0.04172593726963876, 0.481115798352805, 0.3648117490522262, 0.9989669708419405, 0.2176178385714631, 0.20018926314721422, 0.09406325575057359, 0.9994849647095325, 0.3059151552934008, 0.9993507969119869, 0.0272441714696862, 0.8874594935239835, 0.2573081149183421, 0.12933874308098076, 0.8686568537360003, 0.05978974550083734, 0.736673585030815, 0.5658728744053054, 0.5190625618630246, 0.03658661545906738, 0.9994045333333333, 0.2937072333333333, 0.3246828805005246, 0.8856840666666667, 0.7476467103459862, 0.3389180907076006, 0.2505420813993461, 0.9313547984897373, 0.9827374137056878, 0.14681867295319484, 0.1668691677739479, 0.830875, 0.26902566666666666, 0.19313706501064956, 0.3343230876219105, 0.7132816041615127, 0.8615984016784781, 0.023626034244520925, 0.16298544970207438, 0.6021440857647679, 0.4361662614244587, 0.9995731482238706, 0, 0.9319191301144393, 0.9291416443697026, 0, 0.8779379236548935, 0.1991081249998335, 0.9996120887258878, 0.9998376572992542, 0.06455528420509188, 0.8881184929862078, 0.869783567284437, 0.39127551795151627, 0.999956699548232, 0.3743181270368436, 0.6856164661275598, 0.18387478624219622, 0.7251367744056477, 0.1677730055016418, 0.8722441752080723, 0.4318847587432341, 0.5894027607166611, 0.05206579566326271, 0.354953773689202, 0.5276589829729346, 0.07958198938507761, 0.9998845666666667, 0.15657446162844685, 0.4511855442614346, 0.09859564061885023, 0.9993653321274644, 0.6437108, 0.7627815333333333, 0.35107759393714627, 0.06978726272265214, 0.8840726571103351, 0.6221229051250491, 0, 0.6861758875723079, 0.23158189340268936, 0.05248653347909024, 0.5209007103883915, 0.9993190493516555, 0.9797366333333334, 0.5491469753547673, 0.11939817319395281, 0.9996861932643761, 0.8825830102410528, 0.04889593978748808, 0.13469598163861465, 0.8774602927800627, 0.7353887032974491, 0.037059561586237605, 0.9999515997725189, 0.9994762423210457, 0.20888608368780756, 0.8421662809823048, 0.23191546397539556, 0.6855450927139805, 0.648651486507865, 0.8424008333333334, 0.5592523432465135, 0.5486011393307162, 0.06541205256868239, 0.14780877647642773, 0.3731188394586411, 0.895300450452331, 0.3268530588063993, 0.5840359333333334, 0.04375369214704826, 0.47258847441590945, 0.2086752, 0.6798592507749516, 0.21463800748340722, 0.38144491635757566, 0.3523629028228487, 0.5686019201186441, 0.09306709702344157, 0.5784277333333333, 0.6152259014260759, 0.0838937449674953, 0.999379238927144, 0.7442992808353003, 0.6369713127323774, 0.47163890297689176, 0.20166396290767424, 0.4588105287025606, 0.08649685953807183, 0.7323137329516693, 0.46882212389537026, 0.8856934248938323, 0.9993168957216445, 0.6648215433162373, 0.2336839577188737, 0.33427073333333335, 0.1930710004986536, 0.7467173302695083, 0.293188538917556, 0.08751946336966496, 0.999580489564974, 0.9999048664002926, 0.8902673388048916, 0.13243426108790807, 0.5953040034943586, 0.2771017931417013, 0.7248812029509322, 0.05009214885243853, 0.9994700128152529, 0.664240095176625, 0.4782508, 0.29004843333333336, 0.5307855666666667, 0.15496616666666665, 0.7534212333333333, 0.2435575993375802, 0.04393997580864328, 0.6237089333333333, 0.05650443333333333, 0.9993254586895897, 0.19051251749543358, 0.9188412064417425, 0.107986, 0.9098295485541631, 0.18026705998556247, 0.1201338584256591, 0.9999538097905208, 0.9997975018758353, 0.9996234655998192, 0.8704775, 0.07486694090112328, 0.6537461101630362, 0.3618034333333333, 0.4259058, 0.6681480465674732, 0.3139739930423935, 0.7952094201966369, 0.04977732791025636, 0, 0.9995858622611647, 0.8378591569316076, 0.20352638722661656, 0.739319659779694, 0.3212190783477401, 0.21035316693523043, 0.5455436133435265, 0.9997182824839401, 0.9994468949444393, 0.43163004723406856, 0.5043305002148644, 0.24052489787594783, 0.9160102783075532, 0.09903326718908313, 0.08903130896380801, 0.8948940263082773, 0.06826789737966449, 0.5000916909586357, 0.8198213362714462, 0.6696991030574041, 0.9997617333162188, 0.9995486982850534, 0.1514670498156009, 0.6957832933742553, 0.09175987117759517, 0.2734582162632255, 0.920760773873406, 0.2881091408687167, 0.11025016829671357, 0.4021666570237393, 0.9999688763198104, 0.3325302395872036, 0.5130257668619953, 0.5703779, 0.5885437666666666, 0.3061613, 0.10183666666666667, 0.7794147666666666, 0.1093431, 0.49319956666666664, 0.4652688016514793, 0.9996261329843907, 0.20876736666666668, 0.3015195328428456, 0.3932667, 0.2258979, 0.9996113333333333, 0.2577970333333333, 0.9995801333333333, 0.9996541666666666, 0.9998204666666667, 0.10490792407880371, 0.10942530577779558, 0.9995643, 0.12289150355321972, 0.6149351739394957, 0.1047209, 0.9997671392781718, 0.1500737539726716, 0.3984955828156829, 0.3637231244072697, 0.7980878333333333, 0.45884603333333335, 0.9995204, 0, 0.14420220125538785, 0.9996184270378677, 0.9995844992243985, 0.741549327973313, 0.09484806873619475, 0.9996435509175319, 0.11208311127423, 0.5693339501900565, 0.11976972643581074, 0.9996108276890365, 0.9996825800788941, 0.7675189071654374, 0.1784327055593324, 0.15566137770923658, 0.9999961333187688, 0.7999203686066662, 0.24755343016778847, 0.25789444484516616, 0.2177711340364262, 0.6823182333333333, 0.4351775666666667, 0.5031764333333333, 0.3854882626217835, 0.47377480885648826, 0.0242879, 0.9996047859265428, 0, 0.5296127, 0.08145337255163, 0.9999091332485244, 0.13005798968104723, 0.07047943156160558, 0.9997031666666667, 0.530695924570343, 0.8162622650254807, 0.5677414483410385, 0.4867438914800605, 0.5022905744313569, 0.10315215893111697, 0.2502605333333333, 0.9721724735795496, 0.9994325333333334, 0.6715605333333333, 0.9995938, 0.1824172304255105, 0.21864103521013253, 0.5701220085926657, 0.999722499472749, 0.6568692152628048, 0.0945672710928438, 0.9999924333333333, 0.2957588084764773, 0.3544790308470955, 0.14398793861079615, 0.879306508038815, 0.06615282171567256, 0.24225788909810508, 0.9993836964333738, 0.7799594761131871, 0.33999386152007843, 0.3928018469480134, 0.4771204558508335, 0.5123637568747978, 0.17216299956600684, 0.11557710516741834, 0.9993628164129666, 0, 0.9999534101639251, 0.9999574927984659, 0.8845975694777842, 0.15856935368924283, 0.6925669266310573, 0.20961845996845985, 0.72294540073414, 0.8914430756000117, 0.9997355475713418, 0.17403057289028354, 0.9561376561971631, 0.31771102459877304, 0.7131712868288796, 0.068525157836152, 0.4755615, 0.3595889946800283, 0.5469326953682722, 0.25875796061456874, 0.8751752294996027, 0.18693753333333332, 0.9996787470368519, 0.2639985551986034, 0.4500107371618845, 0.35896218202814584, 0.20050871105623075, 0.999793696890601, 0.40096044712150186, 0.5556226367556134, 0.18207995382863737, 0.7763753302374828, 0.5355543585263409, 0.9997619075689046, 0.44799690985323604, 0.07880746606995996, 0.537976282961296, 0.4116297, 0.6099685666666667, 0.32430164722518207, 0.2925905730845349, 0.9994045808710549, 0.25150797786515794, 0.2654163833895083, 0.11410022328396598, 0.9998949356310073, 0.5272204226593353, 0.2955023648497107, 0.8990277186987925, 0.5135994446817513, 0.6840599991419951, 0.06101899952800307, 0.99942006281975, 0.9995267, 0.39592843333333333, 0.11094880817785234, 0.3859070935132873, 0.05517676494261374, 0.9997900662747904, 0.7411380621400363, 0.35053459318134733, 0.18897010610668746, 0.5734189165712473, 0.5355971912787099, 0.1127846376067726, 0.5128362666666667, 0.21687266666666666, 0.99948183931724, 0.9993769666666666, 0.3979311797970718, 0.22720357872334015, 0.2553845880758716, 0.2097847582648821, 0.49662113333333335, 0.23094903333333333, 0.606874879986974, 0.5995423262395045, 0.04100397865553721, 0.4983350302253898, 0.9998918666666666, 0.6290681333333333, 0.24647303333333334, 0.9995462569198823, 0.9999013741424176, 0.5922943146160601, 0.2558439527701769, 0.5418208747088421, 0.11668116781934774, 0.5991485861536594, 0.25587124455836197, 0.8673868949526853, 0.39341578192787274, 0.6300801629582218, 0.13565893533110399, 0.41230804337774457, 0.4015905937024635, 0.19867005396292836, 0.3364069007041389, 0.11032579253997155, 0.9995002292888459, 0.7653697139085811, 0.014019349416739102, 0.9999459290719676, 0.999773183707984, 0.610518425128477, 0.1384320713598487, 0.7742089333333333, 0.46045046666666667, 0.1615643, 0.9994692183083219, 0.9994405, 0.38258145745987626, 0.3611115370374346, 0.38591561359123416, 0.04046873333333333, 0.7606910518545307, 0.16626232895130677, 0.8668868230079283, 0.9998747, 0.30011143333333334, 0.9993399, 0.5782996763005742, 0.8008581141342399, 0.0911094, 0.2729087287069156, 0.36901374441282814, 0.28759876666666667, 0.1832840769010939, 0.8991886725760944, 0.07889227860952223, 0.5758979286546626, 0.9997569622118281, 0.8178143171405652, 0.07479474899084504, 0.2920413666891479, 0.026831, 0.9637842979663692, 0.27186362946817516, 0.10983496001224664, 0.1657525869941525, 0.7178849692500799, 0.7829519777956697, 0.8976911688076913, 0, 0.07963213004374856, 0.9995959647542332, 0.9999933935174992, 0.9995865643238645, 0.45913003333333335, 0.45875730984639834, 0.9997245330762309, 0.6916628209633036, 0.19168832448487239, 0.9993250245202684, 0.2425235, 0.6219484007200302, 0.4346752535194117, 0.9994362166561114, 0.8440079650820659, 0.09393015879824053, 0.25512643333333335, 0, 0.9770132, 0.9993828, 0.5610453666666667, 0.8984327529165563, 0.3829108573834669, 0.36741278817291984, 0.09188570485331572, 0.901171709695042, 0.3497933395325573, 0.8650582804092808, 0.12418840110964419, 0.10700408023102327, 0.7170981333333334, 0.5952356, 0.5935057333333333, 0.19982653333333333, 0.9599620362617429, 0.9137641618949631, 0, 0.6532274082358649, 0.06367701767091255, 0.4284249031791401, 0.8154209366828266, 0.9994343760116382, 0.4346424758216468, 0.8172005676606278, 0.11556414320794527, 0.12203544856795133, 0.7446825609904048, 0.3421534952278016, 0.5780376407630636, 0.9044225103494498, 0.7918403529632622, 0.1974618052925235, 0.22286420719466368, 0.999681207624032, 0.9177365463505213, 0.15819567150030928, 0.4297637226859533, 0.6078527666666667, 0.2453988, 0.4405903666666667, 0.7260338, 0.11834993333333334, 0.9617488, 0.6324143, 0.13647510126972323, 0.8071902558587868, 0.09971540181476053, 0.30324250949410136, 0.21794657225963215, 0.9405492982230116, 0.07008756666666667, 0.18869246666666667, 0.8264209333747738, 0.9505291629613781, 0.5646056498692255, 0.1218928942188392, 0.9095932486482524, 0.06097824695505363, 0.19559753782835745, 0.7580931103970613, 0.35609189492819704, 0.6531013307623483, 0.12240053102443464, 0.45014753842207, 0.9998096993610601, 0.7789792813700157, 0.2374392109456167, 0.3008299571319996, 0.21853611176793566, 0.9495016212020848, 0.1288392, 0.1016829, 0.016718725835778638, 0.9998810332222977, 0.9998854783901319, 0.43780773183469046, 0.8215759632557827, 0.9994270471358686, 0.4350397300769797, 0.5667422433028408, 0.039556448601392735], 'oldestBlock': '0xd11f1e'}}), + (('0x400', '0xd11f1c', []), {'jsonrpc': '2.0', 'id': 14, 'result': {'baseFeePerGas': ['0x22d21c4e2b', '0x1e937d4d6c', '0x226548ee59', '0x20a953d2f3', '0x1dc99e40c0', '0x1c2a14fc29', '0x1de2422a66', '0x219de0c4e5', '0x212ab95619', '0x20d012483a', '0x1d3da1cb24', '0x1f6f08e9e5', '0x1eed647bb7', '0x210a67b48e', '0x24ed65248b', '0x2124566680', '0x1ebef012e0', '0x1ea798de81', '0x1bddd9b779', '0x1b290d5e59', '0x1ad892c43c', '0x1b522367e9', '0x1bdc18b813', '0x19fcf70d03', '0x1b2094997f', '0x18878f4f39', '0x1b403dabbf', '0x18a0b99089', '0x160b256abf', '0x15fa23ebe4', '0x13dab168f1', '0x152f006d6b', '0x14ca78f8d5', '0x147e1181ad', '0x1639a0eabc', '0x1900601e9a', '0x1a23b2e45a', '0x198ba0d63a', '0x19b08a8720', '0x192f078035', '0x1b76b5b984', '0x1b7240d548', '0x19cc3a2f2f', '0x1aa7981f8d', '0x1812a6dfd6', '0x188eff09de', '0x1b3f13bbbb', '0x1955cc89a3', '0x16a9a16244', '0x1915039de5', '0x17e20c919e', '0x1ade3a06e7', '0x1a7e18ef9d', '0x186de91ed4', '0x1805b1b6dd', '0x1591588a50', '0x14fbd30b80', '0x1748d61dd4', '0x15086043bd', '0x17a95fac11', '0x1a9d7e9501', '0x1ded990d95', '0x1cc2c851b4', '0x1c278b828b', '0x1c3da43f14', '0x1b576640b5', '0x1c0a855a89', '0x1b7e4771fd', '0x18bfb2bce9', '0x15a7bc654c', '0x185c58d695', '0x1b678f4bbe', '0x1c3fb4ca87', '0x1a430547ce', '0x1903fba04f', '0x1c23ea4588', '0x1e252741fc', '0x1a83c2ef08', '0x1743e88fea', '0x1a2c4a94db', '0x1aff49d8b1', '0x18f12dadbe', '0x1c067ca6b6', '0x1a7ee2e4c6', '0x192e1c1344', '0x17f2f1d345', '0x1af11b6313', '0x1df589fe59', '0x20e5f4540b', '0x1cec9ab207', '0x1b93991a85', '0x1ef5442555', '0x22a9436394', '0x2205928b38', '0x1e7f541c27', '0x224eb665b4', '0x24319d8027', '0x1ff36585bc', '0x203854c662', '0x1c71fefa44', '0x1ef14d6753', '0x20bfd87337', '0x1dba657c58', '0x1fd21ac22f', '0x1e985d894f', '0x1b6c09debe', '0x1b2c7b12c1', '0x1958377829', '0x185be1060f', '0x1b664dfe09', '0x1e750e2b3f', '0x1f7d6fc950', '0x1bf390cd51', '0x1de5dab66b', '0x1bc16ee837', '0x1b1f8a83bb', '0x19887a65d1', '0x16fd9726ea', '0x17b581c4ed', '0x14bed18c50', '0x1705f5b222', '0x1650205245', '0x18b02dc68a', '0x18871d9bf5', '0x1b0b7e43ad', '0x1b40458de5', '0x1b1f6fa631', '0x1a2545fb54', '0x1d698dd8b8', '0x2005bd5d65', '0x1dc9b479b4', '0x1c238c5ca0', '0x1b3a289be4', '0x1bc1beacee', '0x18949fa4df', '0x182f8f98fb', '0x18e35eab14', '0x1bff03cbe3', '0x1f143de3dd', '0x1b9b5114bb', '0x1838ba1ab0', '0x191ba0bdc1', '0x16d4810474', '0x19ae20ea7f', '0x1ce122a29f', '0x207ce8b33d', '0x1d62b5277c', '0x1f18bc1913', '0x1c7470fc65', '0x1dabd8fc5f', '0x1ab1580053', '0x1ca6d2a442', '0x19d55d7a51', '0x188306835b', '0x15b967a6a3', '0x1869d5fd5b', '0x17d4a4d514', '0x1ace89ac24', '0x1bf308e6a2', '0x191bf2eb2b', '0x19080c2bc0', '0x1aa3c125e6', '0x193dddde14', '0x18dc0dc117', '0x1b8821d9c0', '0x18d7534ea7', '0x18aebb92d3', '0x1bc3b07d4c', '0x1f3b538084', '0x22e7213fa2', '0x21707be5e7', '0x1efe9bd5ca', '0x1f2b9df72b', '0x1bafd0866b', '0x1f24c475a6', '0x1d4c9cef24', '0x20df1eaca4', '0x1dc57a993c', '0x1e1b1464d1', '0x1ce5ebf90a', '0x2081e8f123', '0x23908627d9', '0x252a944665', '0x20ca2b50c1', '0x1ed6884f89', '0x2159eabf8e', '0x21e294e1d4', '0x2402b8e9cc', '0x211e922dfd', '0x22204bb715', '0x1ee1ac93e9', '0x1cb11539e8', '0x1dc209c2ff', '0x1cbc097ec3', '0x19bf384878', '0x1cf6167461', '0x1a187b4db1', '0x18e4a3fa3b', '0x1796aeb315', '0x19472aaea8', '0x1a2824259d', '0x1c3c6143af', '0x1b71898646', '0x1b9a02583a', '0x192d7db80e', '0x1b062427e0', '0x1e65c7f6b6', '0x1e5286e96b', '0x1d3342259b', '0x1e49c86c2e', '0x1b52d156d7', '0x19cbe1d74a', '0x194873bfca', '0x17ef2b3510', '0x179e575f8d', '0x1796b84ecd', '0x15663ea375', '0x16f2d55ca1', '0x1992cbd2fc', '0x18b8c6f8f9', '0x179f636a92', '0x188fa2f470', '0x17cffdce37', '0x1606e3cc96', '0x18a20431eb', '0x1bb52bcf56', '0x190aecd1ec', '0x185206a671', '0x19fcdb4249', '0x16f95f6b03', '0x1633206933', '0x18f9717513', '0x18ec24c1f6', '0x1755ffdc68', '0x16c3e8a6c1', '0x15d1970bf9', '0x188ad6cde4', '0x1b9216c93d', '0x1f0428873d', '0x204fcf48f9', '0x1d0f75e3f9', '0x20b0af9a0b', '0x20e84a4a43', '0x1e3730e8a9', '0x1e5dafbf9d', '0x1e09196613', '0x1f87f516b5', '0x230d41957e', '0x222ee0cbe2', '0x240dee09db', '0x21ef0db7f1', '0x1de98d7674', '0x21a5d1250c', '0x25d9cc7c5a', '0x2975d2402a', '0x249fba3c87', '0x263cec77f0', '0x2423482ea2', '0x21a8585204', '0x1f1374c8d5', '0x1f9b7fedd1', '0x237242e3f1', '0x27e078dc1a', '0x2cd71b285e', '0x2e1bce8c09', '0x2a2b7674d1', '0x28b99ed749', '0x29cde783d3', '0x25506c9a7b', '0x29f61e407d', '0x26cd706bb9', '0x25cabde14b', '0x215d17aad3', '0x258846ba70', '0x2773624f24', '0x23c6fa8ea6', '0x2007c5d14e', '0x2407868a47', '0x28873e3577', '0x2d96e2ee22', '0x2a102fc86c', '0x2e0b4f6565', '0x2f9c07a556', '0x2b86eb365d', '0x2868f4b7bc', '0x28296860f3', '0x2d2e3a121c', '0x32d33d4a14', '0x2ed66b82a7', '0x3045e8e35c', '0x2b9483bb6b', '0x30ee963399', '0x311e061455', '0x31c4b65c01', '0x3025f69394', '0x3628c898bf', '0x3810f8da8d', '0x32e1558190', '0x2f0c751321', '0x2c80674d7a', '0x30703daf1c', '0x36514f0212', '0x3d19af561e', '0x35e9fc3aa3', '0x37188fdb1d', '0x321510d353', '0x3856043911', '0x3f608a3384', '0x38b7d39e62', '0x3f4c78530e', '0x3822755751', '0x341e1357a4', '0x3664e414d5', '0x3d30add38a', '0x3c04e979a2', '0x34ed4628e1', '0x305c4a0c55', '0x32596ebcae', '0x35a605f4f8', '0x2fe178402e', '0x317f9738ee', '0x30b24a5bca', '0x2ef49fb161', '0x2fe41d5619', '0x2e18107c52', '0x33d5adc147', '0x3277b04c54', '0x38c5edab6f', '0x3fdcb2ea57', '0x3c4c5a8695', '0x3a75f6d22d', '0x3a17d09429', '0x3e0ebb9b23', '0x39111dd237', '0x4032c88fd3', '0x39c8c12e54', '0x34f4803687', '0x3a244f48f4', '0x3411914446', '0x362cac2aba', '0x2fba2f5ae7', '0x35b14cd231', '0x355f6d96b8', '0x3ba2baddcb', '0x377ffddfcb', '0x34d8c17634', '0x3548095a3d', '0x325a35fa9c', '0x2f2cdcb8eb', '0x2eccd58b3d', '0x296a1b8e8c', '0x2e9693a8d7', '0x3467edc811', '0x3af304715e', '0x36453aaa7f', '0x34080efa40', '0x317f4d4e89', '0x36155c31bc', '0x36c36ce91b', '0x347f8dc5e5', '0x3b0d7a1704', '0x383d964cce', '0x350e1b0909', '0x2e927b8a72', '0x3463157b7a', '0x3109f473ce', '0x3689bd437c', '0x3d59bd4dbe', '0x3f8e4f8672', '0x3845689492', '0x35d3090ba9', '0x3bc15e7dc0', '0x38c4543e9d', '0x3912a9edbb', '0x36bde9e9ae', '0x35a662c811', '0x3518db24dd', '0x311495b833', '0x33fc38591f', '0x3320cd6896', '0x34f2736f57', '0x2e9cde71f3', '0x2e5d08974c', '0x2a35948280', '0x27e6689bea', '0x28ed02d87d', '0x2d73aba29f', '0x33111cca33', '0x2e001872d2', '0x323035976b', '0x35cc53b1f2', '0x2f780b8ece', '0x356091f494', '0x3541a3b43f', '0x30677e801a', '0x350a5ba30b', '0x2f15d1827c', '0x2e4d06a6cb', '0x2fb91179df', '0x2c10645430', '0x30e58576a8', '0x36b029b48d', '0x3761955e8e', '0x3b1d308e1a', '0x362ec5c0a8', '0x31c558fbbd', '0x2fe375ab17', '0x2c9a0d1e5c', '0x2acf39f3c5', '0x29dc9c6147', '0x29e3efa00a', '0x253809e8e1', '0x29dec47c41', '0x2ee25b304d', '0x30bb18cfdd', '0x313635efcf', '0x2e927fd61f', '0x2eeafcbb1f', '0x2b877007b0', '0x30f7c42314', '0x2b03277729', '0x2cde00f68c', '0x32795880ac', '0x33cd06393a', '0x2f26996ae3', '0x2941c63d87', '0x28e25a3b3e', '0x27f4340031', '0x28486a0ab0', '0x2d4ff54424', '0x32f9420574', '0x324ed5560c', '0x2ed7b488fb', '0x34b2a03806', '0x37b788de97', '0x330ed7d3fa', '0x2e4f9e71ce', '0x3375c1f1a0', '0x2d735cd8d4', '0x302bbd3e2d', '0x2aa8b82a55', '0x2b6ce48801', '0x2797ad6efe', '0x265c3e585d', '0x23ffc6eae4', '0x27bc5c9ae7', '0x27157a71b5', '0x2bf7b11337', '0x317627f5f0', '0x305012e2dc', '0x2b698c284b', '0x30a9fe2c40', '0x2a94be66b8', '0x2fe6188fd6', '0x2d7019a788', '0x2df0253f24', '0x2a895c9675', '0x2aadb612e9', '0x2af9e39ffb', '0x30578749b7', '0x2f12710a6f', '0x29584b08ee', '0x297b407c1c', '0x288e30f14c', '0x2aff30cf6d', '0x25d40a8405', '0x2a8dff5e1f', '0x2fde12b5c5', '0x3024b89d09', '0x2f404b02c0', '0x2cdfc12161', '0x2a3d87bb3a', '0x278ea4cd57', '0x2a05101287', '0x2f451f4d9c', '0x352c298bd8', '0x34725ae63d', '0x2ec09194d6', '0x3497a2be33', '0x2e853b01e4', '0x3454cedda5', '0x2e309d03a4', '0x30a7e4de2c', '0x2bbe651f6a', '0x2a88c20d86', '0x276f9e4c0f', '0x235c443bb9', '0x27c64729b8', '0x2b98c5e4d9', '0x28f17bbcad', '0x2b25dba54b', '0x2671b0fb4e', '0x2b3f02ab2b', '0x2b5c873538', '0x294ac2d2df', '0x2abdd98ffa', '0x26013f15f7', '0x231a9a8ba5', '0x277ccb398b', '0x2c6c1b68e6', '0x2b08b49604', '0x2620ecd165', '0x2ae3e6c4d0', '0x2cdafa2376', '0x273f9adf08', '0x25fd8dcf05', '0x2a3f08030d', '0x287f0240d0', '0x2668e29e04', '0x24b1bb6392', '0x21de917b82', '0x230e6ff32a', '0x2712287925', '0x2997e11e96', '0x2464e4fac4', '0x220baba24e', '0x1eec776943', '0x1b0ee87c1b', '0x1e6ffa3158', '0x223ccd587c', '0x2283037262', '0x26d28ddb09', '0x25d1ffb251', '0x225cdcdc9d', '0x21b217304e', '0x25e818f895', '0x2aa4cfe23a', '0x2da95552db', '0x294858cd94', '0x2e715fa357', '0x2ac7e69c04', '0x256ee9c884', '0x2a1bd8fead', '0x27706dcd3a', '0x2c5e664f97', '0x31e971718f', '0x2e448cfe9a', '0x2ed2f1de57', '0x2e8ec43cd3', '0x2950fa3767', '0x2adba15f8e', '0x2fe63ec7c0', '0x2adc9c6a52', '0x26f60b0cc7', '0x2b67fd348c', '0x30d3a9fc14', '0x303ebfc2d2', '0x2ba6cd7357', '0x277d609583', '0x2c6b6fee25', '0x2d76633d6a', '0x2ab1109b64', '0x26e455644c', '0x23e83f20d9', '0x2864eacffc', '0x23584d75fd', '0x275b03055c', '0x2c45ebccc9', '0x30ae2a867b', '0x2f62be1f07', '0x2d061eb1f3', '0x32a509d2fc', '0x354b4cd3bf', '0x3b57f38c92', '0x3851c55f4a', '0x339d827553', '0x31f9a59571', '0x2ed4923985', '0x2fe345c468', '0x2dc8fe215c', '0x2db519d4ba', '0x28cab93f09', '0x2de2f83102', '0x339ef1cbf6', '0x37dfbc5bbc', '0x3751be3fed', '0x333aa8148c', '0x2d41c44e8f', '0x30a8a02232', '0x2cc8914b6d', '0x3081cd23f6', '0x2c70b8d2d6', '0x2c8a1ff8ae', '0x2b786e50d2', '0x2618513c4b', '0x2adb23295a', '0x2ce93ec87c', '0x309afb0c26', '0x30d0f011e8', '0x2d25487336', '0x3283e6873f', '0x2c6996b4fc', '0x2d98843a1d', '0x2934d6abd2', '0x297c4266e9', '0x2eaa02949c', '0x347f0f800c', '0x31f65d6523', '0x34245dc877', '0x3150cf64b5', '0x35db25ebee', '0x2f3dd4faff', '0x33dbefd1e2', '0x3a55e4a8e0', '0x365340737c', '0x39bd327434', '0x37e169cb8f', '0x31a23bd754', '0x2db46e59ac', '0x2b7d578532', '0x30eb135c0d', '0x3682e0de3c', '0x373d0f51e2', '0x33cc4429a1', '0x309f04aaf4', '0x36b1d447a4', '0x3a666476e1', '0x35453b892c', '0x3a01f97727', '0x3513c03b64', '0x311fcd771f', '0x2d858d6ac0', '0x32b6e0f062', '0x381a2cba7c', '0x32522964cc', '0x2f372b621c', '0x2b68422cfa', '0x30d39319e4', '0x36ec3af312', '0x3dc7dd8918', '0x3970252d98', '0x3f09caaa39', '0x37289154f2', '0x3dcbec0071', '0x3e66b07184', '0x40a70a369d', '0x39e910b12b', '0x3576a02d52', '0x2ffa0172ba', '0x34132a8ba4', '0x3a8b1d92a3', '0x365109e0a4', '0x35b37de8cd', '0x308fc33d03', '0x2fc0ea2a07', '0x2c50b6f2f0', '0x2e73a7eb9c', '0x296a019305', '0x2be9e0fe38', '0x3165fa3501', '0x36fdf1fc1c', '0x311f3d3de8', '0x3742b98975', '0x36f295d0f7', '0x32ec2c3047', '0x384ad901f3', '0x34b39630ab', '0x32e2f9582c', '0x2fe58d56ab', '0x35e15ca19d', '0x34132dbe9a', '0x3108086ffb', '0x2c3770e0e0', '0x31ba9c129a', '0x2e3e8d42c9', '0x34051f1b6b', '0x3a843507b9', '0x3bbcac139f', '0x385139f95e', '0x35dbdd27ac', '0x3a3aa7fd90', '0x333b1f0020', '0x37db2c8770', '0x32879b91c9', '0x2e2ece09db', '0x31624a85e0', '0x30385040d7', '0x35a6e5d9d1', '0x3c5966b4da', '0x3b86ad07b6', '0x34383573dd', '0x3153d6a356', '0x377cfbc394', '0x3e29b3e9b9', '0x45ed97eb83', '0x3f15ba6fe5', '0x397d20459a', '0x36a47700c5', '0x3b0c43dc42', '0x354a3af7ef', '0x3652504f61', '0x32484c04b6', '0x2d261b1586', '0x32ca7f3faf', '0x3922b70095', '0x3d7fdf5da5', '0x37a08e8c83', '0x351b07b540', '0x384875a9a7', '0x350d7d94f2', '0x3b67ec23d8', '0x42ba8377b9', '0x3edd247008', '0x3fd7883460', '0x3e926ef6f4', '0x3bd490829d', '0x365c7e6eee', '0x35424cb06f', '0x32ed2135b8', '0x30ec4803e5', '0x2bf0f364bd', '0x2b6b6d265d', '0x2c0ef2da05', '0x277116f5bb', '0x25d4b2358b', '0x24e1ef1440', '0x297cf294d9', '0x2e656931a3', '0x2c282d7e8d', '0x294ac1eb69', '0x2e73341f99', '0x2ecad53cd8', '0x29efb06a48', '0x2ee267bc34', '0x2a976175f7', '0x2d45f1d750', '0x282ad2a311', '0x274c606336', '0x262f6ab49a', '0x2af470f523', '0x2d0b83c8e0', '0x2814acb1c5', '0x24fc3bc948', '0x218e762dc7', '0x25bf1a9932', '0x2a766d7a00', '0x2d13d5a105', '0x282cdf2175', '0x29beb6178f', '0x2b460b6463', '0x2acbee72f9', '0x290c1409dc', '0x258e5cf33f', '0x2852b45f8b', '0x2594dcff34', '0x217762541d', '0x25a4febbd0', '0x2793140a2e', '0x2c7f6db202', '0x31e08b75e9', '0x2d26a352fa', '0x2fdabaf3e1', '0x2a0c4d2c33', '0x2f4d177071', '0x3535e71658', '0x3b5a391a93', '0x36ecdc42b3', '0x336919f630', '0x301335adda', '0x30113a53b3', '0x2cc6ff2a36', '0x325efb435b', '0x2e8c04e196', '0x290f918ac4', '0x28b3be2d3b', '0x28584fb5ee', '0x269bb5cf85', '0x2b6f29be27', '0x282d87f80e', '0x2d036bd784', '0x32a1f71d36', '0x34aaa5eb8e', '0x2f3aa088ac', '0x352166aed9', '0x30a3624679', '0x2b3c89a995', '0x2c74937170', '0x2ad43835a1', '0x2824e9b6fd', '0x28749c4778', '0x23a9f284e0', '0x2614cccc7e', '0x22f62a2aae', '0x20d81bc423', '0x24edde577b', '0x23aae12375', '0x281fcb12ed', '0x2d223b7fac', '0x2aa5e22abd', '0x2ff9a2794a', '0x35f7ffa056', '0x3987cc7fbe', '0x3256d2efc7', '0x342e037597', '0x2e77f70438', '0x2f17379508', '0x297e541408', '0x2eac76d55b', '0x2bbec93ce3', '0x2646f01547', '0x27c9c15335', '0x2c4f9959df', '0x31d7ff3543', '0x2edb9af62e', '0x2d44f1cd1d', '0x32ecfad81e', '0x3275ea57f5', '0x2e90f68919', '0x2bc62efd97', '0x313dd317ea', '0x2f4fcf1d56', '0x3538ea369a', '0x2e91ccefc7', '0x3461fa795f', '0x3aedc809b5', '0x42498db0f4', '0x3d31dfef67', '0x3dc16f5cb3', '0x3e0ac2b80d', '0x3bb54a2af8', '0x36cfc69542', '0x38dfe99e30', '0x36cc232260', '0x37bf655991', '0x3e40085271', '0x4317bd196a', '0x3eaa8581fb', '0x3fc99e28f3', '0x3d05c3a69d', '0x3b534625e4', '0x33e8dd6128', '0x3a63feed4b', '0x3bdf636e16', '0x3743ad6585', '0x35f785d6b5', '0x30a1ee7e34', '0x2cccf2cb4b', '0x2aee88d577', '0x26f6023c6c', '0x2bd47c9b36', '0x30b4f4ad81', '0x317bf9ad41', '0x367bc5d46e', '0x338fb1d61d', '0x2f35bd8cdd', '0x2d43434f84', '0x2ce3c774be', '0x2cd5df4c4c', '0x2793de08c5', '0x260709f08d', '0x277314a9ca', '0x2c60e01ce2', '0x2d271777e4', '0x2b4360f5b6', '0x27a24d01b6', '0x286956c9aa', '0x281b16285c', '0x2a09f82cbd', '0x275ed42f80', '0x262fa43146', '0x253100d7b8', '0x2191e72b68', '0x25c3b2bec4', '0x210b3c66ec', '0x252c725c61', '0x22e694258b', '0x1fe05d8d5b', '0x1cde1c3d72', '0x1e9916679d', '0x1e48ac3abc', '0x1ba25f1cb8', '0x1f152b7bc5', '0x201ac7a6e9', '0x23c6241e97', '0x2686209188', '0x28fce3bddf', '0x23dd474624', '0x1fab4ca796', '0x23a030c8a8', '0x2813f2ff96', '0x29247d6dce', '0x24b680e23b', '0x23be793924', '0x25a81f2d9b', '0x221a39cc50', '0x1dd6f292c6', '0x2190fa7f04', '0x24ecb4860f', '0x24aacc9c09', '0x293fb68955', '0x27e4e65e6b', '0x23ae9b9b9b', '0x28237822f1', '0x2d2623c0c8', '0x28e735776b', '0x2df4e250ec', '0x295c200c38', '0x259d63972e', '0x23fa4f96e0', '0x24bcf88771', '0x231532e0be', '0x1f016b84e7', '0x22e0bc4753', '0x25bbd3e11c', '0x2a7252ac00', '0x29dea9f923', '0x2a57bc2f93', '0x2b022e981c', '0x2e8d9757a4', '0x2d2b1ccd05', '0x312cf97283', '0x34ffb30091', '0x2e5fbca07f', '0x2c274a27ec', '0x2890c25d68', '0x2da20a473f', '0x28aa11aa1c', '0x2ab1eee0b7', '0x26aea40c49', '0x2b839087cf', '0x30f2bf806a', '0x371071b9b3', '0x3df13b5e97', '0x3bb02d892c', '0x35e94f17b6', '0x38b97d2d6e', '0x347290a0da', '0x34a3def214', '0x307b7e8874', '0x30f17decf7', '0x2e92ee6ad9', '0x2ee86e0aa0', '0x296c2567c0', '0x2ade43e935', '0x2f099caafb', '0x2a783e15bd', '0x2853889824', '0x24cecb1bf5', '0x2967ff3834', '0x292f69931c', '0x2d1ad091da', '0x28179048a8', '0x2d195648aa', '0x32ba8d8702', '0x333b0d8e5e', '0x2cd3abdc93', '0x2a07f4065b', '0x2f47ca9ee0', '0x2c6dbd91bb', '0x2971001295', '0x2e8124d2d6', '0x2f00991f03', '0x29fb021cc8', '0x2e1269864f', '0x2b95216bb7', '0x2fa478aa7a', '0x35977b6252', '0x3c49898ec4', '0x3944cec195', '0x406b9ad596', '0x4876b2bbfb', '0x404e8fb894', '0x421cbfb92c', '0x41112cbcbb', '0x3fc6fbf908', '0x42718135f4', '0x4849fcdeb5', '0x42d1fa72a7', '0x46911c440a', '0x4037f0a98e', '0x46feedd17f', '0x480388783b', '0x4ecbeb76a1', '0x49f1cb1b53', '0x48aa0bf9c2', '0x43ac129d42', '0x44dc6556b3', '0x3cf93e960b', '0x40ae8fa3f0', '0x4824be8770', '0x5005bc1dda', '0x4ec136e121', '0x45fb0e9a0a', '0x44f57af2d7', '0x44220edf5b', '0x40c9aae74b', '0x3f20e968a7', '0x39ebcbe15b', '0x3bb583ff42', '0x400ee805d8', '0x3e0fc317e1', '0x39dc1602d3', '0x3df25d3278', '0x3a8ef07fc2', '0x393a75c9d2', '0x3cc07beb1d', '0x35a12e961f', '0x324be1479d', '0x3817304a99', '0x33dbf5a6d6', '0x3027c55dc3', '0x32375038d9', '0x2e42bc142e', '0x2aac742a73', '0x29fa63a16d', '0x2cb5772139', '0x2961880f5e', '0x27aa15f2a9', '0x2574a5d5ff', '0x2a227acade', '0x2f66a4111f', '0x31168b0b35', '0x2b3c2847b7', '0x262428924a', '0x2a3465cdc3', '0x2629de352e', '0x2489f25dd6', '0x28e3157fb9', '0x266380b67d', '0x24acc0c0ad', '0x23990dc42e', '0x27feb74d4e', '0x2860e49d30', '0x23b4a30c29', '0x22c57ff37f'], 'gasUsedRatio': [0.012404026017126223, 0.9996725264886994, 0.2983222680563394, 0.14804187950682066, 0.2820314569810398, 0.7442005201701616, 0.9996534692248241, 0.4464765666666667, 0.4572933530407557, 0.06455636240448366, 0.7999895333333333, 0.4355577112283189, 0.7733286416119117, 0.9705331458984046, 0.08996420726413404, 0.21080843333333332, 0.48813830038365796, 0.13619606044965643, 0.39862514792652115, 0.45370153333333335, 0.5707537, 0.5788993381296498, 0.23128152357213946, 0.6753296, 0.1169556, 0.9437769982387801, 0.11496969517629714, 0.08026482285551384, 0.48794582709707146, 0.113626905898064, 0.7678175754831306, 0.4258498308813319, 0.44257994847047083, 0.8382039, 0.9996789333333334, 0.6820664, 0.409099, 0.5225779359788499, 0.421228, 0.8621392333333333, 0.4974644740589185, 0.25974337576048406, 0.6328645666666667, 0.1125547, 0.5807083666666667, 0.9377803091385405, 0.2194135047859378, 0.078051323298436, 0.9270411446889107, 0.3087747355825582, 0.9999485995669806, 0.44409648515779787, 0.18848174328123302, 0.433343191886233, 0.09129783000585312, 0.3916775089632605, 0.938593604781716, 0.11316813875274971, 0.9999633617788874, 0.9993059876449785, 0.9978962560210566, 0.34399318672648616, 0.4156636577903312, 0.5122630361044715, 0.3726121164313709, 0.6023639184011875, 0.421854748991447, 0.10070870748390288, 0, 0.9997432154286421, 0.9997878855354067, 0.6232383085810046, 0.2186359143913265, 0.3101819228149296, 0.9996466516655047, 0.7849773870818826, 0.018272166666666666, 0.009792428973559347, 0.9999290332670977, 0.6259629370400942, 0.19550683161275234, 0.9944628826689739, 0.28167045534394164, 0.30139625735482756, 0.3044308550642032, 0.9998657437350782, 0.947974493850371, 0.8924174891498283, 0.016810431775386377, 0.3136261141661159, 0.9904914234297586, 0.9784682408339083, 0.4262094097576901, 0.08563114833495675, 0.9997273666666666, 0.7199332815160671, 0.031075427973766657, 0.5337113101843574, 0.03137907284088756, 0.8511709432781768, 0.7335692192628168, 0.13098123031641903, 0.7815664608115611, 0.34594394944369344, 0.0851435512069507, 0.4637849126833207, 0.2307465690380482, 0.3444332489113995, 0.9993205666666667, 0.9463739333333333, 0.6356313666666666, 0.05051632919545936, 0.778546093309687, 0.21338826666666666, 0.4088628787322513, 0.2655012233178492, 0.10168906433742102, 0.6249943874893362, 0, 0.9392100052367803, 0.37659671815693696, 0.9257977, 0.4740114, 0.9104893404923425, 0.5304923794759668, 0.481173, 0.3558853113268227, 0.9997738333333334, 0.8549669, 0.22088173333333333, 0.27856121502647335, 0.370402945709416, 0.5778095333333333, 0.0422739, 0.435758, 0.6161638173009277, 0.9995126995451863, 0.9404773205490153, 0.05309299910693167, 0.009522616610671327, 0.6463705315940327, 0.13711407647676477, 0.9993577605197669, 0.998321048177302, 0.9998007436210655, 0.1180305154761357, 0.7329092902324602, 0.16018543413340583, 0.6709979908331869, 0.09846279585395526, 0.7935482461798923, 0.10655754660978042, 0.2953600333333333, 0.04510427766046878, 0.9951489954723958, 0.40451458604021523, 0.9995498324930207, 0.670489085654152, 0.0935249, 0.48761573333333336, 0.7569936623553767, 0.2900875666666667, 0.43945219173189287, 0.9299640012997346, 0.10908405572553466, 0.4744672856722666, 0.9994398333333333, 0.9995360135839314, 0.9701765388314363, 0.33228183333333333, 0.20755146666666666, 0.5226896064006502, 0.052959749429099465, 0.9994221018097122, 0.2631164330604337, 0.9876970961722282, 0.12275478113854656, 0.5449260642589309, 0.3395460122899796, 0.9995933666666666, 0.8761704333333333, 0.6801544374748608, 0.02897128721740085, 0.26191247738289253, 0.8259899027141485, 0.5640271324900086, 0.7509127349472008, 0.17884863367529927, 0.6215887666666666, 0.11969161219263945, 0.2163600686027307, 0.6486465, 0.3624312140805497, 0.08411453050451351, 0.9993721196011728, 0.10420966466502952, 0.31567729199582206, 0.29038005962383634, 0.7864759149619165, 0.6390626951049081, 0.8179375575209712, 0.38775203535963404, 0.5230427666666667, 0.14873066883144725, 0.7933214162926978, 0.9993479292892826, 0.49010296452896596, 0.3519716, 0.6490380666666666, 0.1084671515067797, 0.2764427580132408, 0.4203922387205334, 0.2866135683453276, 0.44723337810858277, 0.49495802577122533, 0.12874564465731866, 0.7895736032901671, 0.9575194874612132, 0.3667935, 0.3221527488258952, 0.6589103816496895, 0.37808128982968514, 0.20006414678854556, 0.9732325440544362, 0.9993039313611388, 0.11526598382015454, 0.38463498212509933, 0.7742234, 0.036148866034349206, 0.36517016984955764, 0.9999477149406529, 0.4916792038817444, 0.24536990559571487, 0.402182326225808, 0.33368388706049296, 0.9993198924049994, 0.9935665975761729, 0.9998912569847599, 0.6670754564886409, 0.0975008, 0.9996197620309566, 0.5265772914721387, 0.1728037, 0.5199066666666666, 0.45647504788425897, 0.6991693192246979, 0.9466320639794504, 0.40087073333333334, 0.7189731, 0.26473222231823956, 0.025960791762098704, 0.9995143666666667, 0.9996538619962393, 0.8814413656418238, 0.03340318383208974, 0.6762833516050347, 0.2803060848067082, 0.22547070550033224, 0.19319296666666666, 0.568402611817106, 0.985824186769241, 0.9999682975944767, 0.9978743, 0.6131449360300333, 0.15829867623592428, 0.3629638183669931, 0.606001875195653, 0.070364267441504, 0.9981746332943027, 0.19887538649437453, 0.3958276367804755, 0.031295282446799036, 0.9997879448327289, 0.7044519399062245, 0.12753954503897103, 0.08108603690382454, 0.9994054290339162, 0.999469514111299, 0.9995134831659565, 0.1906148308838701, 0.8785682559433918, 0.6359834333333333, 0.1570041, 0.21355336819737808, 0.4754283344707759, 0.999861164292724, 0.9997351328300857, 0.18617303333333332, 0.6225944365327258, 0.11113321606691245, 0.9912186997844037, 0.5151476292854166, 0.5530263333333333, 0.3697877666666667, 0.9993753, 0.6408427333333333, 0.1300033, 0.1987788, 0.283451, 0.8538629666666666, 0.9854962666666667, 0.9994858666666666, 0.029539266666666668, 0.5876907666666666, 0.13600536666666665, 0.9994751, 0.9999365666666666, 0.0797198, 0.9640945949613535, 0.047282533333333335, 0.21375086104914784, 0.6747300513756219, 0.9997635021645824, 0.4234540198158343, 0.027328772715517285, 0.15489374402873288, 0.6645012666666666, 0.7621033, 0.06995746666666666, 0.6351407517226095, 0.43519352068707, 0.3570010335916968, 0.5796933, 0.3499034473830362, 0.9981716316268562, 0.39449929676263235, 0.999776666249777, 0.9994576666666667, 0.2767785, 0.3781086435762145, 0.4748364, 0.7729776, 0.17831866150629422, 0.9998705998792266, 0.10035278816024076, 0.16571370553357373, 0.8917851045281636, 0.0821795434839026, 0.6617771941783879, 0.023966682248550402, 0.9999482335154724, 0.4761745467144135, 0.9693702768257096, 0.22260248148866366, 0.30877353045780326, 0.5329019949658581, 0.28011035145001095, 0.2476073377538544, 0.4681943739194988, 0.03968930773545084, 0.9997002887534507, 0.9995069631734155, 0.9994327055945428, 0.1825162511789587, 0.33497840849289884, 0.30517906579770504, 0.8706195799707143, 0.5502884132711185, 0.33455195538943977, 0.9993984585228284, 0.3095211661386845, 0.27343938827645425, 0.011232477957647079, 0.9994266333333334, 0.24435204310342382, 0.9485548756876674, 0.9996512591174119, 0.6437872045367004, 0.041520215831667345, 0.3260727638868566, 0.9407663169712612, 0.2999551372188519, 0.5215615, 0.3366261487676049, 0.42021419219991274, 0.45878086201704493, 0.19740834174251598, 0.7367401, 0.4340504502646835, 0.6423043994841062, 0.0214614, 0.4786018213452103, 0.14160403216376335, 0.28116066666666667, 0.6028361, 0.9423625169978485, 0.9941501278734527, 0.1031497553425303, 0.8641661498239395, 0.7877031554339432, 0.029409431715925194, 0.997866777459618, 0.49094573226044924, 0.13556456666666666, 0.8831221, 0.05089133333333333, 0.43336801613224685, 0.6228521, 0.19332204564423827, 0.9386831387323481, 0.9737811996442923, 0.5506909995220666, 0.7696104325141127, 0.1663182723278014, 0.1743007925983145, 0.348716803010017, 0.2254664, 0.33926332396918923, 0.4114479404763392, 0.5027341391965934, 0.05393343379398077, 0.9998840865864524, 0.9790060731507431, 0.6575492818483328, 0.53947505000519, 0.285458, 0.529687673346356, 0.21108133034257498, 0.9997841772161805, 0.013516133333333333, 0.6724976666666667, 0.9998577333333334, 0.6051527, 0.14092516666666666, 0, 0.4638613939845593, 0.4089847817191296, 0.5329329, 0.9994151, 0.9997603666666667, 0.44775960391989444, 0.22446941259133912, 0.9999858194723402, 0.729169118754659, 0.16552706666666667, 0.12811146582029315, 0.9447304132393994, 0.032891083270861154, 0.7394000061920933, 0.04231278747798236, 0.5718536005076188, 0.14694622792294731, 0.3755154, 0.2537875666666667, 0.9151943539533021, 0.43437770089733163, 0.9998115491288885, 0.9998233216078776, 0.40709880269138604, 0.0942694660610344, 0.9838941959004167, 0, 0.9995446991584508, 0.29449003333333335, 0.5440316802691161, 0.20381869023077756, 0.5133523009840585, 0.527889418726915, 0.9994193986256353, 0.394925892198296, 0.0133295476810824, 0.5132115552789306, 0.41070529235455033, 0.7407967289459779, 0.019169012904038624, 0.9997733666666667, 0.9993853, 0.5230610691340094, 0.42586343080586875, 0.2987685666666667, 0.26523723749574796, 0.2459159295215342, 0.7490139778957946, 0.9997867996020259, 0.9994710333333333, 0.44539963274137195, 0.06569407254254121, 0.9996644386666487, 0.0381915392305912, 0.9996385189660824, 0.03057632098545349, 0.7135479917848877, 0.09617543213330877, 0.38939949777518074, 0.20863906117952496, 0.08661202282426335, 0.9993274839982706, 0.8843913786918638, 0.256543861572186, 0.7153796602360389, 0.06393911157454484, 0.9996372943099177, 0.5106648564233975, 0.3091020109153805, 0.6404208540760661, 0.0567098997915384, 0.1946761470529803, 0.999494633003838, 0.9998867944921823, 0.3749917886561735, 0.044045047657129556, 0.9995330997072922, 0.6832714676715717, 0, 0.3717899333333333, 0.9480885248887795, 0.3342963666666667, 0.29391409288829456, 0.3213532439748025, 0.19206543333333334, 0.6401841064466118, 0.9580658417274415, 0.7582327806019458, 0, 0.24187792809411154, 0.1332105485369058, 0, 0.9995412982569334, 0.999398143333243, 0.5320424040032431, 0.9996214952525748, 0.39674339403155406, 0.13431679710200684, 0.42234860743697344, 0.9998820506989139, 0.9998772595801569, 0.7830574256831098, 0.11640706776744947, 0.9999936604215479, 0.18460145986725074, 0, 0.9996118876749813, 0.24640876331484576, 0.9999671666666666, 0.9997336, 0.20795646949245938, 0.5480876115484374, 0.47724916666666667, 0.049688587572431143, 0.6492498059664855, 0.9705279852485243, 0.07931546092762631, 0.13597804246647885, 0.9563629415737659, 0.9995234666324376, 0.45234593948863766, 0.11914972726020305, 0.11863298541023419, 0.9993620916906362, 0.5939020694089013, 0.25621269689294085, 0.1439837, 0.19302475534025643, 0.9998432665203821, 0, 0.9538792595271899, 0.9998145185249248, 0.8981834448530938, 0.39362252098888845, 0.30063123733920777, 0.9993591559807791, 0.7092586643848451, 0.9540400451497258, 0.29616038521000293, 0.16589526666666668, 0.37289893333333335, 0.24828893333333332, 0.5903198, 0.3243681, 0.49321156666666666, 0.06982601844034032, 0.9995807329420174, 0.9998651, 0.8295635978134018, 0.46029214494907345, 0.20424923333333334, 0.03368516022562699, 0.8006650181597824, 0.1814360476887475, 0.8325842648220062, 0.16464937383408776, 0.5089315433040729, 0.4039849255177933, 0.005370126381278138, 0.9999098784045801, 0.6918152622313298, 0.8290302356231427, 0.5173454, 0.19923678805687087, 0.9757580107074767, 0.016757245757244656, 0.6065747656062291, 0.11493206666666667, 0.5270819666666666, 0.9993289333333333, 0.9999327666666666, 0.30692229038344054, 0.6745068333333334, 0.28317758958289435, 0.8682710437196408, 0.008726195941453041, 0.8909777631584912, 0.9995373, 0.22501706666666665, 0.7513638931583309, 0.3712462, 0.052846328893169155, 0.18336716666666666, 0.3061305, 0.999305121451097, 0.9573326268437851, 0.5533667, 0.25085499323422655, 0.2546812377024885, 0.9996573333333333, 0.7709826312060394, 0.14866209832674035, 0.8557149324959433, 0.16000652992455153, 0.2020998355426021, 0.20665882148421044, 0.9562818676851689, 0.9249584356876408, 0.08780252849116918, 0.25314943333333334, 0.17737327166644895, 0.9993822327567505, 0.9994267730421972, 0.9994612656610292, 0.21883418357687986, 0.8899978684942457, 0, 0.9813840959262312, 0.5391322666666667, 0.6443159411832321, 0.08287220540309387, 0.1928338604315296, 0.08949121094402952, 0.8416902676543729, 0.9968655226629829, 0.21119807986610734, 0.4546792338445997, 0.11717258298555956, 0.43344532171179073, 0.21199797112801186, 0.6928444200167857, 0.0662001, 0.7414156924236517, 0.9995956662892885, 0.9529401688190093, 0.0730325696607967, 0.9998665694560034, 0.477340469886649, 0.20698997194619356, 0.9218032747322257, 0.24484192593584714, 0.36225112577946733, 0.26497323234613934, 0.9997115289736227, 0.36596939692892444, 0.26621849317641105, 0.10720560801369299, 0.9986708216865691, 0.21971244662005493, 0.9995779, 0.9995330666666666, 0.5834341, 0.27101563333333334, 0.3253859393697946, 0.8245730696015316, 0.0192657309676388, 0.8611260124356201, 0.11856083325258766, 0.1558946750349126, 0.7772561261662254, 0.40572036154669516, 0.950599174016983, 0.9993129896556014, 0.4454411590327304, 0.009021095189145211, 0.27846833134418936, 0.9995771943129941, 0.981160527272427, 0.9996676585366636, 0.10855659249079162, 0.14516995358959797, 0.3019555710778638, 0.8224943236917508, 0.1099473672743407, 0.5774311410623402, 0.20257630904871532, 0.09162186666666666, 0.9998712409334382, 0.9996633428227462, 0.8055115472924212, 0.11805694132950292, 0.3186793593036987, 0.7393314333333333, 0.2704212330006918, 0.979014247079964, 0.9930564666666667, 0.2683312333333333, 0.5622351333333333, 0.4204337, 0.32473467007199197, 0.13436432144641816, 0.4188892502791729, 0.3248036504602692, 0.3426499, 0.09268543333333333, 0.45252023333333335, 0.5588451456180293, 0.08086201471018192, 0.33662874337569165, 0.3997336598287676, 0.999479710115324, 0.9732019374791029, 0.30695010517687943, 0.24047816467974095, 0.9996599757528779, 0.5294770160768483, 0.08488649365440959, 0.9719644886595619, 0.13373190971533602, 0.7518719666666667, 0.048877261979656465, 0.41346878530015824, 0.3867001865423389, 0.9996305992981387, 0.6946351666666667, 0.05917666666666667, 0.19107643333333332, 0.12917183629814513, 0.999457332826844, 0.9997664333333334, 0.7463221502463823, 0.0649979606647633, 0.656283773636478, 0.6464746984193463, 0.4559080662842168, 0.3364892297491099, 0.15979880796635193, 0.7947013712186884, 0.22803974854630651, 0.06200222425456432, 0.9993873854027798, 0.7050777132578926, 0.9976174034948222, 0.9835622423978516, 0.12097269342800851, 0.7395064984592779, 0.014664417968725474, 0.9997221676051699, 0.9997273718829514, 0.9617036, 0.20163326154656688, 0.24403871317069006, 0.24048016134170613, 0.49935585863711357, 0.22622007074036682, 0.9996894935809636, 0.19632762027701237, 0.028550419902141456, 0.46505728459508905, 0.4649006508163037, 0.3278126380502562, 0.9999955827586234, 0.20010982183288126, 0.9814102563032093, 0.9993461244082646, 0.6606802130544513, 0.0870185064015051, 0.9998165965726359, 0.16179448462847942, 0.055761461878430875, 0.6127658279899172, 0.3536606993458224, 0.24925470413585984, 0.5310200045566795, 0.026229887803455518, 0.7711308503660472, 0.17231441982575518, 0.25774468089654284, 0.9975007139885902, 0.36334097918750424, 0.9998045327736559, 0.9994022139957671, 0.27970012846947223, 0.9996393712903678, 0.9997262389060148, 0.763983871463266, 0, 0.6462546684518357, 0.0621958, 0.553548293424804, 0.024558147531661384, 0.9993766747412342, 0.24902946666666667, 0, 0.6579017473749642, 0.9546913805116914, 0.9994527311840024, 0.2603787545734747, 0.3643967324574086, 0.9997988625075385, 0.4634687, 0.19129619926142122, 0.260160484821802, 0.9995959666666666, 0.3432421333333333, 0.9997125526409872, 0, 0.9993131286061082, 0.9998674330814562, 0.9994828, 0.19270169346300003, 0.5366555187670015, 0.5185523676543031, 0.3495296974397585, 0.17196853280126523, 0.6505545315896573, 0.353907, 0.5693630666666667, 0.9665658515540425, 0.8111705904258844, 0.23608886112248983, 0.5715838336231561, 0.32660866666666666, 0.3887474452135844, 0, 0.9994049, 0.6015233333333333, 0.19212991486186262, 0.4060893134124019, 0.10462120026103751, 0.1848229376828619, 0.3331446190366491, 0.13003590623560035, 0.9998904487599231, 0.945067658504882, 0.5638447909874751, 0.9041048210239951, 0.28546306666666665, 0.1624303, 0.33501961331907276, 0.46703835667478627, 0.49515936844400843, 0.030921791289114015, 0.3433344965826063, 0.6495800460767005, 0.9997661709878655, 0.5697890508580283, 0.33261213333333334, 0.16445284513006383, 0.5784673, 0.469743861785633, 0.692803603043483, 0.24609086666666666, 0.3796735178568539, 0.3958071085296571, 0.11050311310962756, 0.999793932941806, 0, 0.9999084, 0.25542634284288057, 0.15338566666666667, 0.12244086666666666, 0.7397675496789281, 0.4589358616734709, 0.15002973333333333, 0.9991529333333333, 0.6315090647316229, 0.9571779333333333, 0.8074798958816716, 0.7558321624822484, 0, 0.032100462060893314, 0.9997428, 0.9998837, 0.6062542072333634, 0.06933773138188262, 0.39443853224922204, 0.7140427839748044, 0.12245455578992713, 0, 0.9995614270092829, 0.9001995840984057, 0.4721113, 0.9998141184867023, 0.36862781071929, 0.07767448830068137, 0.999577632544914, 0.999313561745026, 0.12383883950313315, 0.99418370390736, 0.09990804298696192, 0.13780701718748117, 0.325917042674002, 0.58454, 0.31976676666666665, 0.03512720171247223, 0.9995655853269305, 0.8275232564044267, 0.9995928482497568, 0.44564528216809635, 0.5451814306827398, 0.5628970560998511, 0.82966182460974, 0.3810233678279596, 0.8548739666666667, 0.8109783870616324, 0, 0.30847043333333335, 0.17495110642208783, 0.9996864663740352, 0.06446951465260528, 0.6997543395414338, 0.12404442759981607, 0.9996338989749172, 0.9995467746388674, 0.999793332554886, 0.9996402333333333, 0.3544376249925281, 0.11286604243717435, 0.7087280333333333, 0.19839896666666668, 0.5146890666666667, 0.184064461053781, 0.5380285, 0.3063574752587432, 0.5286837110609207, 0.032234021304416834, 0.639613, 0.8890362333333334, 0.11155716442893515, 0.2981248215206608, 0.1509954, 0.9997259333333334, 0.4786473333333333, 0.8806746, 0.05546143333333333, 0.9995432333333333, 0.9993239064613262, 0.5395794369408078, 0, 0.2505268, 0.9995703, 0.2587364227835148, 0.23105058231387682, 0.9886958333333333, 0.5428232666666667, 0.07263099082921139, 0.8898401971841841, 0.2838699639651116, 0.8726193923399065, 0.9994922134039614, 0.9997434654151902, 0.29972713277202806, 0.9995078314794986, 0.9994282561542969, 0.049744866666666665, 0.6123002666666667, 0.43676143087057845, 0.4207091259951843, 0.6672128666666667, 0.8519169, 0.19739318778120168, 0.7242799759946442, 0.14015268991087523, 0.9221399546612487, 0.5573546169451713, 0.8767477841187217, 0.2536919823480462, 0.43074479633568996, 0.22519709946293148, 0.5702659391260207, 0.04184115217282365, 0.7432703319631023, 0.9614369605825812, 0.9368440873306606, 0.4366348416516657, 0.05436070419183675, 0.4415962183102511, 0.4520950576006218, 0.30360332631162407, 0.3975607496449477, 0.1700395648411329, 0.623475988943973, 0.7913583427748985, 0.37532234238466416, 0.2291812158454372, 0.7825471232434947, 0.28120703085808946, 0.40915063333333335, 0.7462786666666666, 0.0310583, 0.25139028405428765, 0.9608022244801067, 0.19824783596109208, 0.2143141, 0.6711720333333333, 0.18493068185583444, 0.1898416, 0.4348014666666667, 0.7602087666666667, 0.20226326666666666, 0.33407014716795713, 0.2772569680150691, 0.9996875, 0.9999448127763427, 0.642370015762102, 0.02305553601793967, 0.028738587936650413, 0.9261459666666667, 0.11699681405559195, 0.32971264106513165, 0.9760074822467307, 0.2555838104231128, 0.3214196, 0.38254066666666664, 0.9940878333333333, 0.5383552, 0.03709257909651226, 0.39535209518441283], 'oldestBlock': '0xd11b1d'}}), + (('0x400', '0xd11b1b', []), {'jsonrpc': '2.0', 'id': 16, 'result': {'baseFeePerGas': ['0x187c1ef63a', '0x16000e99ad', '0x147a5d40d1', '0x1709896f9f', '0x14d3cfc49b', '0x123955cc08', '0x147d06e548', '0x16de3f7d8f', '0x1402778dde', '0x168261b882', '0x195208b45b', '0x196863b784', '0x181ff62e86', '0x1af8c42ae0', '0x1e57ac3c60', '0x1f0f72cd86', '0x1d8921e404', '0x1aded442a1', '0x1b9987b357', '0x18a0deefc8', '0x18f21fffd9', '0x17730a095b', '0x17d86fde9f', '0x1504f4c281', '0x16d70617fb', '0x14741a2a30', '0x141855dd8c', '0x156600df7c', '0x1462105d69', '0x16b437aa5b', '0x14150c19d1', '0x13a6f7071e', '0x1406559b13', '0x12dbee59e0', '0x13a68d2b2c', '0x15199d79fd', '0x14c1a40b9f', '0x1261f33e41', '0x140c382cd9', '0x1225a9b8c4', '0x13599d03c6', '0x12b71d6753', '0x12d4349bf6', '0x136ae63daf', '0x1397587e92', '0x118aaa496e', '0x13bbdc0f2f', '0x11f7930b55', '0x119cb41b70', '0x12d67b17e7', '0x1530d31e7f', '0x17d683ff93', '0x16629693eb', '0x13a353c725', '0x161718f210', '0x188d9117ad', '0x15a580f3ea', '0x183e144046', '0x1966071eba', '0x17bbeff5aa', '0x166edace16', '0x17903203cf', '0x15442459d2', '0x140e2aea8a', '0x15142c2814', '0x141b5f041d', '0x1225a5e966', '0x146a1a1c25', '0x16f68850e2', '0x19d4c461e8', '0x1845c42918', '0x1b4e47eeed', '0x18f9e670b3', '0x16d87cfbd7', '0x17dd111bc5', '0x152c4e61ad', '0x17b231301a', '0x171b95ba18', '0x14b015d306', '0x1744913951', '0x173b1e16bb', '0x161232a8d8', '0x1405065c0d', '0x1252a152e1', '0x146aef5d06', '0x13196f9acb', '0x12493056e3', '0x1490a1752b', '0x172232f9c9', '0x1a064401c0', '0x1765d19a5e', '0x16bcdf7b01', '0x17d505b360', '0x150fc0754f', '0x16dc8f8d25', '0x1546c5a7ac', '0x1350cb19f4', '0x15ba4cd106', '0x15d3168696', '0x14ea823630', '0x124d31ef6a', '0x14966733e3', '0x12922f21de', '0x14e3cd4d16', '0x1749f03923', '0x17b694400c', '0x1715061de4', '0x1670de3c4d', '0x193e9abe79', '0x1c24897dc4', '0x194b9cdee0', '0x17c8c7cf16', '0x1ac19fc0d1', '0x1de5f7b442', '0x1bf034045b', '0x1f5c15f44a', '0x1bc14f6b27', '0x1dce51ed03', '0x1b0e262a0d', '0x1b8845f2d4', '0x1aa56ff745', '0x1c19d4a6d1', '0x19753871b1', '0x1ca3759c7e', '0x1d0e5e3015', '0x1a07df49f2', '0x1961222b7d', '0x17c6deb6fa', '0x16c399fa6c', '0x156d88ebc7', '0x168a1e1c6f', '0x147fee608d', '0x168db25c24', '0x14df5b8b04', '0x172bbb8386', '0x1a1092223b', '0x16fb23ada9', '0x15516390ba', '0x16f4bd2882', '0x1716a21765', '0x19f8d1a643', '0x1c8d8443e9', '0x1925aa9b9a', '0x1901657111', '0x1730d2236f', '0x14d1fa802a', '0x14cdad0339', '0x12d9d13521', '0x15344be6a3', '0x1329d3a2fb', '0x158ed52a27', '0x18384dcbc4', '0x18ab8349fe', '0x1921c9c4ca', '0x16b483f795', '0x198a9df172', '0x188ceceac2', '0x16ccd3a8e0', '0x17445a7424', '0x1a2837e1fe', '0x175daca13e', '0x15d6d13b1f', '0x188c03f038', '0x15e195cea7', '0x15b56da375', '0x14ba3e7cf8', '0x162416753c', '0x174a64d5e7', '0x14802c2831', '0x170f127967', '0x194ad4ccc5', '0x17c8bb228c', '0x1ac1d23da3', '0x1b8e2ad6f2', '0x181c657c14', '0x162b136286', '0x1763b815b5', '0x18dde62947', '0x16392aadab', '0x144a7a710f', '0x156885e159', '0x13e5af4d93', '0x165cf570ed', '0x14bbdfc19b', '0x1276a62802', '0x13f634062c', '0x120368a00f', '0x12d61d8a9c', '0x1424968280', '0x15bb759d5a', '0x13f6a9e251', '0x144dbdf333', '0x151d47777d', '0x130497ae80', '0x13478d5c30', '0x155492f858', '0x12aa00994d', '0x137c77a26e', '0x11ae647d17', '0x10c6a54197', '0x12b1e19ece', '0x134fb38249', '0x157c461d2a', '0x14d07d70c9', '0x126d2387c2', '0x14ba99f5b5', '0x15280a362d', '0x15c6e98dd3', '0x1652612d86', '0x15a17b8ea8', '0x14273b29af', '0x1674e3c2ee', '0x1942a32bae', '0x1c3f3f5910', '0x1c36c66374', '0x194e802f60', '0x17fc15a327', '0x1adabd92b0', '0x1a2b664cda', '0x17ca2fa7b1', '0x17a55b1e29', '0x19d47f2b39', '0x19ad07a9a9', '0x16ac020fef', '0x15b90b5bf9', '0x1301e9f07a', '0x1562040640', '0x180d980110', '0x19fb20de86', '0x1a5d738ec4', '0x18d76839b0', '0x179079a8e5', '0x188a232c2d', '0x16b7ad3283', '0x17a5a31fec', '0x18f8ad1848', '0x1748165afc', '0x14d13ef50a', '0x162253c618', '0x16b3d1cfef', '0x197cf84fab', '0x1cab9f58b5', '0x1a1eabf9c8', '0x1d61a73bf4', '0x1ae6543e32', '0x1e4227df45', '0x1b587688e9', '0x1d0e38e000', '0x1d35a57e12', '0x1d799f5257', '0x1ad2da35e7', '0x191ecb46aa', '0x1c09b2399a', '0x18887bf267', '0x17c9eca173', '0x1a6a808507', '0x1bdb6d2a0f', '0x19eba457c5', '0x18e641c4f3', '0x18488cd852', '0x19e4db8b8b', '0x17810e6ae1', '0x1a4edf0276', '0x1cb7d1a11c', '0x1a8c37ca82', '0x1db8933445', '0x1d5ec5f8f5', '0x1b65b34090', '0x19e29f4455', '0x19b5866cca', '0x17d8ad165d', '0x1675555795', '0x18518c56e9', '0x1b5b9d236a', '0x193ff5b9a4', '0x1c2403e4d4', '0x1a2a2c671a', '0x18c11bb7cb', '0x171f16713c', '0x1a02317fde', '0x1b5ebf7249', '0x1951468ddc', '0x1c3938b966', '0x1fb7e6ee05', '0x1e70cbf1fc', '0x1b9468ee46', '0x1eb84d8ede', '0x1b90d559cd', '0x1ac50b0d2f', '0x1e1d92951b', '0x21e128fd41', '0x1efbc1e994', '0x2091c19158', '0x221a6a8d39', '0x1dd71d3b92', '0x1e37e4fe99', '0x1b8641a4ff', '0x1815797060', '0x190d38b6be', '0x19caad8860', '0x1cdbecb290', '0x2076d4537c', '0x201eb016cf', '0x2421565e24', '0x2167ded522', '0x20e30b4462', '0x1d8f45809e', '0x209d585031', '0x1da6033e65', '0x1a78e99bb3', '0x1b63d6866d', '0x19c3627920', '0x180e5ec698', '0x1b100e9ff7', '0x1e71867331', '0x223f0f2ad1', '0x1ebdf4b889', '0x1ea9e396a4', '0x1c307a1cb6', '0x1fb686adeb', '0x1cdf788897', '0x1ea1c36fe7', '0x1dacbebee7', '0x1b04a160df', '0x1ada258d87', '0x1a1629166c', '0x18eb3907d7', '0x1c08135122', '0x1f88e28e97', '0x2378b6c1ab', '0x20fe8a445e', '0x1cefa78aa0', '0x1f656df585', '0x1c9e70f4c9', '0x20312c726b', '0x1e9d35ae97', '0x1b46a015b0', '0x1af84ae3bf', '0x1c41451a97', '0x1a9c750076', '0x1b615efe08', '0x1ab25d6aa5', '0x1e07ee4e95', '0x1ff05a00e5', '0x1ce0634697', '0x1be2e88e7e', '0x19347611f6', '0x1760935a76', '0x147480ef28', '0x14b60fb254', '0x174c8efadd', '0x198a33adb0', '0x17dd970615', '0x178e927624', '0x1a80313100', '0x1d9d0b6e9d', '0x1c4caa06c4', '0x1fd5fb0b6e', '0x1feb044a82', '0x1ca020996b', '0x2033194c05', '0x1c74769299', '0x1ce8cf3fc4', '0x1ab66fcd1d', '0x1bf4041528', '0x18c3695e10', '0x1b54a17373', '0x18af75d6f2', '0x1b36918a64', '0x1a27047d8b', '0x1d2aae97b7', '0x20cf3ccfab', '0x1fc60c4986', '0x1cac8a9db8', '0x1c5362135f', '0x196fc5fd1b', '0x1c9be7a792', '0x1b2fd90221', '0x186238a41e', '0x1b6e767750', '0x1800a7a866', '0x17a5aecdb3', '0x16e5f5147a', '0x19c209ae58', '0x1a76cfd3bd', '0x180b810efd', '0x15e7f6ee24', '0x18a428b4d9', '0x1a03b2068d', '0x1d440f5adf', '0x1eaf344c5e', '0x226ee1e220', '0x1e847aa975', '0x1ba5556af0', '0x1a39822376', '0x1d7f99487e', '0x1ef2a9c621', '0x20b63fbc85', '0x1d53f50855', '0x1a82b60f0c', '0x1811a5073f', '0x1b13652773', '0x1c7ecff1a7', '0x1951afd139', '0x1b7d614a1d', '0x1eea2f410e', '0x22c769a570', '0x1eb62e4cb5', '0x1c877d7089', '0x1dc5e907c3', '0x1c3fb0a270', '0x1b164d897b', '0x18fd71e91c', '0x1c1c140bb0', '0x1d4a316a54', '0x20f23bbd47', '0x20551ababc', '0x1e7dfb9ade', '0x224db6d365', '0x259d59d926', '0x22cbbed49a', '0x209ec1e4c7', '0x1cf21267e3', '0x2031d470ab', '0x1d516e93bc', '0x1af770ca32', '0x1b6f409827', '0x1826e0e466', '0x18336f76e5', '0x16efa8c70b', '0x194d26cbf0', '0x1a1ad1862b', '0x189384e053', '0x16b72227d5', '0x1837b04e76', '0x1558e49294', '0x156f6dfed8', '0x134febfb3c', '0x15b9db55e2', '0x16cdad7d3f', '0x1865f19d42', '0x177cc1a95e', '0x1972a66fd0', '0x164451a1d6', '0x190c7aab81', '0x197731f71c', '0x16ebc6c2ce', '0x18ba6b620a', '0x1bd15358a3', '0x1d05da53ea', '0x1cd5af9068', '0x19aa657f7e', '0x1cdf31f682', '0x1b7929127d', '0x1860ffd9f2', '0x1b6ccb63b4', '0x1ed9d6a02e', '0x1bc74610e8', '0x1aa82aa058', '0x1cd05c75d9', '0x2069dac1e2', '0x1f2c6c7b5e', '0x22902f7a9f', '0x23c83fabb8', '0x1fe49fdee3', '0x22cb67a7ad', '0x242e275e84', '0x2105e72c57', '0x23ad086446', '0x242596c4bf', '0x2108f9ae70', '0x1dd322d67f', '0x218c7caad5', '0x1f9112bf3b', '0x1ee4b9037a', '0x229b15c903', '0x1f7da28386', '0x1cf32f6802', '0x1fdb429128', '0x208215193f', '0x1d6af95372', '0x1cad54f7b7', '0x2041e1faae', '0x244905d65d', '0x2140f04d8b', '0x20f2461cd9', '0x1faaefe7a4', '0x1c77e76b63', '0x1d3f4c815c', '0x1a504a1148', '0x1c7fd743a2', '0x1cf62729a1', '0x1d337d759d', '0x20d8c19fdb', '0x1f5b59c66f', '0x1d8647942b', '0x1b169863de', '0x19ba0a1d64', '0x1cf08ab14b', '0x208da0bf13', '0x1ed8fca281', '0x1bbdb18f64', '0x18e3e15b06', '0x1bff4d4dbc', '0x1bb3cee4ca', '0x1e54bc88d7', '0x1e322c80e4', '0x1ab1891df3', '0x1a0b1a894d', '0x178bc9ae40', '0x18b64047b0', '0x15df93a076', '0x189b802945', '0x1badfa4687', '0x1f0653c41a', '0x1d9bfa0eef', '0x21476e406f', '0x1d8827aa85', '0x1ac959955d', '0x1e226fa832', '0x21e625404c', '0x2027b60019', '0x1fc419d394', '0x1e24932104', '0x1b139a8edd', '0x1e74fa5698', '0x2242fee315', '0x1dfa9f06b3', '0x1f022a8d5e', '0x1b21e53bb3', '0x1d1b082c4b', '0x19e380a56d', '0x1a7a0fd39b', '0x17645af287', '0x19c813596a', '0x1d0103ebf2', '0x1af44ece1c', '0x1aa754bc46', '0x187be063bc', '0x16f3994613', '0x1972875e9b', '0x16a760d4aa', '0x1568c2b686', '0x12bbaa5fb6', '0x14f6cb590b', '0x14a5b1a78f', '0x154ef27bd3', '0x177ebd97eb', '0x17566b83b2', '0x17a95f8db9', '0x1707b2ef09', '0x1750149f34', '0x1a04ede720', '0x1987b2cd6a', '0x16cc04d419', '0x176908b653', '0x19ef53c5af', '0x17b3204910', '0x16fa8e4bf9', '0x17dd9d6a5b', '0x177bbd3e29', '0x1a6a4c88b5', '0x1a8214e260', '0x1d99e0d0f9', '0x214c2e9f71', '0x1d7a834685', '0x1c7ff24847', '0x200f0480f4', '0x1c0d23f0d6', '0x1f8ea483cf', '0x2043852c51', '0x1e25f8fa10', '0x1ba60ad108', '0x1c4bedc53f', '0x1a0700ad0c', '0x1b952dc2e0', '0x19ce28dda9', '0x1cc6c756ad', '0x1a4e9a25d2', '0x1704c6e118', '0x16e46b6bb0', '0x1985dc5aa0', '0x17baeb1c64', '0x1610fe1445', '0x137415f33c', '0x13f7b30ec0', '0x1671dc7585', '0x17094504b8', '0x19ea317a1b', '0x16edfe24f8', '0x171f2c5af5', '0x157592d7e6', '0x1822284a90', '0x159f5f244e', '0x141f086eee', '0x16a274fbc5', '0x1493a18143', '0x155125d522', '0x17bf3e77db', '0x1883a69513', '0x16ea624696', '0x16e9888403', '0x140c577383', '0x168d4c9aa8', '0x14fcfbde60', '0x12ac383143', '0x14c20ea51b', '0x12ebdacfcf', '0x14061374e9', '0x133450c55d', '0x14411b294b', '0x16c92da4bb', '0x19a1c8b5d5', '0x1746b4586e', '0x14c2be92ee', '0x175a81bdb2', '0x15d2493ed2', '0x140ad18993', '0x14b504f683', '0x174abfb4e1', '0x1a32aff881', '0x188f28d13b', '0x16552b1923', '0x166549161d', '0x17977d5a2b', '0x1522860ef5', '0x17c67ed6d3', '0x1abf19b78c', '0x1d20782ac7', '0x1af5322963', '0x1b97f8f589', '0x18b891bdb3', '0x17fdc75053', '0x18971a2408', '0x16b6542741', '0x198ce22c74', '0x1cbdc17482', '0x204b14f26c', '0x1c775d2e96', '0x1b01ae603c', '0x1b80c94b8c', '0x1ec96e19f2', '0x1f09da5167', '0x1b6504a18f', '0x1aba460e71', '0x1e10d66e4f', '0x1f51e3222a', '0x21c7263302', '0x1e2e4d071d', '0x1e1d715b75', '0x1ca91fc4dd', '0x1bc1b1128a', '0x19c1df2dc3', '0x16d61ff4c1', '0x19b0d9410f', '0x167abe18ee', '0x19493dc390', '0x19f68a1406', '0x1703bf831a', '0x15798ced58', '0x1827e61dd7', '0x16e0febf08', '0x19bd075102', '0x1cb7fb63a7', '0x1bd98caca8', '0x190e703e7d', '0x1c2fd0ce7d', '0x1d8245dba1', '0x1f1ecec27b', '0x1bd2eaa9e4', '0x1f4cd40ca9', '0x1f8ee2ded9', '0x237f8409cb', '0x231f49fc48', '0x1ff6e5cc0b', '0x20c690a155', '0x1e55613b5e', '0x1c97598503', '0x1c528b24fb', '0x1b426f396a', '0x1cd8032f3a', '0x20728c1568', '0x207df766e6', '0x1d5a48259a', '0x1a70ab60c0', '0x172f231676', '0x1a148e3c26', '0x1a0b8b50de', '0x17f2addd20', '0x17085f1814', '0x16981ff181', '0x16b36b4285', '0x15415bfbd6', '0x17e90b6b50', '0x18a828daca', '0x15b24e287a', '0x182545045b', '0x17cb494096', '0x15047f3a77', '0x12e8de846e', '0x138a256787', '0x15fa9cb106', '0x18b9209df7', '0x163570e5b8', '0x16931fa57a', '0x170c57e87a', '0x15d2e6e8e2', '0x16fe289780', '0x151c7e2765', '0x17bf5afc1c', '0x1ab69c1a71', '0x1ac7227737', '0x1ae3367a74', '0x1b97c5e06a', '0x1b87d88565', '0x1ef8911a28', '0x22d7a122ef', '0x2030362195', '0x203671761f', '0x223cf67724', '0x1e45ea2f49', '0x1ff15841d6', '0x1c84eb50ca', '0x1b1fd4b122', '0x1e8378a3e6', '0x1f1cda63f5', '0x1d1422b663', '0x1c24d20e57', '0x1c6373332f', '0x199ddb491d', '0x1891004c0f', '0x18017f43cd', '0x1824113e43', '0x15e86f28da', '0x18a54b2fd6', '0x1b4b9a1aef', '0x18971f9e9b', '0x18efa764c8', '0x164a6800fc', '0x158d68a4c5', '0x149cfcf032', '0x162d099ca8', '0x14aefad25d', '0x169ab47aa7', '0x145f23aa45', '0x131aa318a4', '0x12dee77b88', '0x112a24c3f3', '0x134ef6db2c', '0x14ac1a3873', '0x1283fc1248', '0x13de97f571', '0x12bdf18308', '0x1303a34406', '0x13d2d9b32b', '0x132942cd27', '0x1452718945', '0x13bbc4618c', '0x16329cff18', '0x164dbd3663', '0x13f468a36f', '0x144ac781c2', '0x13cae7bde0', '0x15f9d03074', '0x1643f56280', '0x16d9773068', '0x197c193cc3', '0x1cab87c977', '0x1a5efd9326', '0x1aae84cb51', '0x183f968098', '0x1b46f00ad5', '0x1d0b64ea67', '0x19c13f6114', '0x185b26ef6d', '0x165d7f35e2', '0x1928dae34e', '0x172e2bb3d4', '0x1a1364673e', '0x18c12585cf', '0x160643a391', '0x1461594758', '0x16a31d84ad', '0x17275b5d24', '0x16ed0f2606', '0x15f01af353', '0x18ab925828', '0x1b063cdca2', '0x1b4581295e', '0x1b120ec28b', '0x1b457af339', '0x189485cfaa', '0x1ba6401565', '0x19528aa34c', '0x1afc5597b6', '0x17ae87630f', '0x157bff3323', '0x182b5823e9', '0x1b3074dffe', '0x1b5236785e', '0x19d02d49c5', '0x169627a08d', '0x17e1b2caea', '0x1812c29735', '0x15ac4c4b0d', '0x1860ef6da7', '0x182533f22e', '0x163140340f', '0x180949d378', '0x17e327d10a', '0x15b1ec0a8f', '0x17a3a80bc3', '0x1666ad2b65', '0x17273cc39b', '0x14cb7baf7b', '0x138fd22666', '0x1571713bd4', '0x12d58eed2a', '0x152f938a02', '0x17d5617729', '0x1acf9981f7', '0x184d8d5ea6', '0x18d4154f80', '0x178ce6988d', '0x17cedcf8ac', '0x16afd86a98', '0x150ba06784', '0x17acc93f69', '0x16897ceb67', '0x13b84d4dfb', '0x162f3bf7d0', '0x18f51e0629', '0x1c13297c8e', '0x1b34d80b89', '0x1e9aecbf07', '0x1d0d969db5', '0x1ac29603f1', '0x1ae7be4555', '0x17daa45844', '0x1ad5cf1eb3', '0x1e2def3971', '0x1b180be5a1', '0x1bcfc1d317', '0x1c88e5934c', '0x1b5111560c', '0x1eba5c2b3a', '0x2259f13884', '0x2354e9b387', '0x1fb44631a5', '0x1f88c666dc', '0x2378d3cc19', '0x27bb763d5c', '0x28361960e1', '0x23f6bf8b98', '0x2874013d8f', '0x2b57e9af92', '0x27aadfca8e', '0x2c9eb7dd1d', '0x2c0dec433c', '0x2943470c9e', '0x28cf5035ab', '0x2de8d46f94', '0x2a91f12769', '0x253fb3027c', '0x2097bca22d', '0x247384a411', '0x266f69dda0', '0x226064d1e7', '0x1ea207b0bd', '0x1ef7e596e6', '0x1b6024a514', '0x1d676d6d9a', '0x1e91d8c635', '0x1dfdb7e745', '0x1bc677efec', '0x1938925cd0', '0x1c5ec06512', '0x1fe97d37f1', '0x2177d6dff6', '0x1ef9369bff', '0x1bf2d9b11c', '0x1ad6b3e742', '0x1bff43c806', '0x1f2cd6175f', '0x1ba9f9de7c', '0x1d1427b052', '0x1c67681320', '0x1ff3818ecf', '0x1cfdc5b809', '0x209c8f8b22', '0x217e05e74c', '0x25a43941fa', '0x229da502aa', '0x217ec99e84', '0x20d0f57e85', '0x1fa6e2d70f', '0x21705dea27', '0x1eef4b596b', '0x1e49631e0b', '0x1af91ab84c', '0x1e35999671', '0x21fbd50a11', '0x1f8b2d5d96', '0x237bb51b4c', '0x2603766945', '0x2163cdd7e0', '0x22b9522b52', '0x241b53b120', '0x21048515cb', '0x1e8b93ad4e', '0x224561744a', '0x1ecf0a38a1', '0x1d20512f23', '0x1cfbc2a424', '0x1c202e0f2e', '0x18b86fb88d', '0x1a919d91a6', '0x1de2f729de', '0x1b0addd527', '0x1adce0f602', '0x17ef351b6f', '0x181ef81486', '0x151b1911f6', '0x16c92ee9a8', '0x17c4742135', '0x16407b8c13', '0x14409ebae0', '0x16a4332b2b', '0x1547210c83', '0x17ef87675c', '0x14f1967a71', '0x178f1ec906', '0x1a80cc1115', '0x1d5fd0eb4b', '0x1cc1bfd2a9', '0x1cb4e4d79a', '0x1a92201017', '0x18d2640f85', '0x1926770cc3', '0x167ac39e27', '0x173ea50b58', '0x187e723886', '0x158fcb7efb', '0x1796635a6c', '0x1797e9cb36', '0x18044ef158', '0x18b5d27564', '0x15f1f50bb7', '0x18adc974c9', '0x16e9e46321', '0x1972ca09db', '0x1a061d7fe9', '0x199de62059', '0x1a28fe7d57', '0x175e733fd1', '0x1a2b06feae', '0x178525d50d', '0x164d3d2d96', '0x15d57c959c', '0x15a833630d', '0x135cf39edc', '0x1433df25f9', '0x127e068efa', '0x14cd8d0c71', '0x141c589dec', '0x1677347947', '0x1670d33676', '0x13dcc6ce28', '0x13702b1b1e', '0x13e12c94e0', '0x15ce036ef3', '0x16759decca', '0x1943f8fede', '0x1c140e461d', '0x1abc157429', '0x1d59b016da', '0x1a6bba15e0', '0x1954d03faf', '0x165780d4d4', '0x17050c962a', '0x14903c0feb', '0x17221e93be', '0x1a05e5ab74', '0x1bd1d0d12c', '0x1da44d90b2', '0x1bbf8766d0', '0x194cd60b82', '0x1b353713ca', '0x19621c8ea1', '0x1c8db1f26b', '0x1d14e54d70', '0x202c058784', '0x1d3de65347', '0x20e573ea67', '0x20e5f1ea77', '0x1f483a935e', '0x1dedf13769', '0x1f24996585', '0x1cff259be8', '0x1e1758192c', '0x1c5ce7b78f', '0x1b5d33b909', '0x1ec7aad716', '0x1c73813179', '0x19a7cb25b3', '0x1cdc37f7d2', '0x2025b8c3a4', '0x211d207078', '0x1d4c3a33ad', '0x1b4f4f27b2', '0x1d1e730cce', '0x1cea794e22', '0x194d2a245e', '0x1c76910586', '0x1a7ba7eace', '0x19b6c847f9', '0x1ba7f5494c', '0x1f1ced7aea', '0x1c49e38904', '0x1c560821e5', '0x19de937462', '0x1d112df20d', '0x1afc00c179', '0x1d11e218cb', '0x20b40224e0'], 'gasUsedRatio': [0.09409595136317281, 0.22323237501688334, 0.9999061582155835, 0.1162972542981165, 0, 0.9970204914587422, 0.9646085054165882, 0, 0.9996925657080025, 0.9995519666666667, 0.5137953544969996, 0.2980269351124685, 0.9720266240603608, 0.9998903218482652, 0.5946361450278986, 0.30365033333333336, 0.13904705388521443, 0.6085655333333333, 0.06936890540279249, 0.5515500814467427, 0.2600511694141585, 0.5675643, 0.02593112174037948, 0.8464571741677871, 0.08206320497990786, 0.42989685100526553, 0.7594449537413024, 0.31019398525915687, 0.9554589477917637, 0.038096995962016045, 0.4143502647725172, 0.5758259666666666, 0.26716044884496376, 0.6678734668655527, 0.7950481330484505, 0.4348532928879231, 0.04254293333333333, 0.8623236256871502, 0.12078280942952707, 0.7651508427771199, 0.36878386735601465, 0.524287163064211, 0.6250518251485654, 0.5357652, 0.08153990961159761, 0.9998764333333333, 0.14188615182725933, 0.4209745595762556, 0.7783747102451751, 0.9996132666666667, 0.9996961, 0.2562136926708931, 0.009117798550624055, 0.9994862311413997, 0.9459475973004349, 0.026494221946752702, 0.9797075826261988, 0.6907476213718817, 0.23787224814355445, 0.2807201551515677, 0.7015308724387299, 0.11005680718209505, 0.2722510787387252, 0.7041264200339902, 0.31557199612216874, 0.11011315997111093, 0.9997829261290877, 0.999363, 0.9996040333333334, 0.2586481666666667, 0.9998673295526918, 0.15873713333333334, 0.15879232737434773, 0.6782194663381685, 0.04902398434309642, 0.9766416812033902, 0.4006907358159223, 0.08110676313582889, 0.9988454666666666, 0.49365423333333336, 0.30029339683132755, 0.1282090906021209, 0.1609619, 0.9573414, 0.24172315733686056, 0.329635037457975, 0.9985416226956729, 0.9996121992502519, 0.9998592666666667, 0.09626533643436148, 0.38717802803282614, 0.6925135735081379, 0.03498253313347962, 0.8418621445889325, 0.2226590642006819, 0.13135690886608284, 0.9995206981946299, 0.5178256666666666, 0.33348795098413603, 0, 0.9996232333333334, 0.10821286986742554, 0.9994487661521817, 0.9593561066371641, 0.5728895360604673, 0.39354873333333334, 0.3888779, 0.999740846937034, 0.9592158532933521, 0.09529707591793961, 0.26105286110005066, 0.9998330821319152, 0.9697154171690829, 0.23777552001688054, 0.9898532907647399, 0.04022637003886665, 0.7955591112138093, 0.13085640363987877, 0.5705293074199064, 0.37126726666666665, 0.7183664484963767, 0.12378308632365011, 0.9997461333333333, 0.5583286333333334, 0.0835131, 0.3999148, 0.24741876666666668, 0.3296211333333333, 0.2652093102247678, 0.7075150603473896, 0.13800636666666666, 0.9007412, 0.20186231855406805, 0.940453311089757, 0.999576346635434, 0.026760233333333334, 0.2105284, 0.807363056691526, 0.5230701215321134, 0.9995646, 0.8974827252145053, 0.022895827515031174, 0.4774637715879348, 0.20970369843702702, 0.09113313333333334, 0.4967709365138276, 0.124567, 0.9993801, 0.11500276666666667, 0.9998186562511626, 0.993924172913806, 0.5743247165996522, 0.5749109589974888, 0.11374378692112362, 0.9996813657638697, 0.34480417822520854, 0.21481050911958435, 0.581912, 0.9968576351859076, 0.07316567072681504, 0.23863035321592346, 0.9959546993930714, 0.06560882719682361, 0.46846827627572535, 0.3192083219902799, 0.7727681769346956, 0.7076934421377757, 0.02084923271467594, 0.9991449333333333, 0.8874315102030466, 0.2614762524097874, 0.9999992659491564, 0.6193292767256258, 0, 0.1777130453668787, 0.7203623989214237, 0.7526370933542881, 0.07477657013837331, 0.1521891870288186, 0.7202682666666667, 0.2176633, 0.9957306643270487, 0.2085850051690904, 0.06199036017739473, 0.82458863338507, 0.10956971335736192, 0.6827699239404487, 0.7774488, 0.8156129666666667, 0.17445016666666666, 0.5681542666666667, 0.6597133333333334, 0.1028425924582021, 0.5550135846793457, 0.9255020666666667, 0, 0.6761949376899876, 0.12948556445418552, 0.2952037964442602, 0.9575332323536336, 0.6319045260372559, 0.9503287334802467, 0.37507247732083143, 0.041069825225155475, 0.9998475576274792, 0.5824923144304286, 0.6173347570910287, 0.600067764061502, 0.37617415310823815, 0.22677003220175918, 0.9571677718237219, 0.9993991414044274, 0.9729567899754965, 0.49531337976931716, 0.08781812430577643, 0.29105276566218213, 0.9785966357285787, 0.3979796203979842, 0.13625787338945552, 0.4758101004315626, 0.8694749074103945, 0.4761259030915146, 0.03201376741833794, 0.3325545400196831, 0, 0.9998870722950931, 0.999507517044616, 0.8206022389706021, 0.5591316028610234, 0.26884386951396855, 0.294363275819602, 0.6655454186202536, 0.20299226372938622, 0.6636684018246101, 0.7240233, 0.22932223333333332, 0.07662271125579205, 0.7530048612380326, 0.6027066256363387, 0.9908275825724069, 0.9994061189467776, 0.14415026481243468, 0.9994900005235127, 0.16213588278302124, 0.9994397507876972, 0.11493533151706985, 0.7501315354602819, 0.5212009192922044, 0.5363621693793219, 0.14017813637941418, 0.24599230414345985, 0.9645784884546186, 0, 0.3786336570092752, 0.941764203287454, 0.7182176661819819, 0.2219156771033863, 0.34243569904737137, 0.4010352050276611, 0.7652965846612423, 0.13082551064409348, 0.9771866679878835, 0.866419918818857, 0.19770695331440125, 0.9781230328257139, 0.45278922211045075, 0.23130024350997494, 0.27924458916428746, 0.47277826438710624, 0.21018937529343618, 0.2671668331930838, 0.8313182681854254, 0.9999177861491616, 0.19178542878462937, 0.9579578527497172, 0.21913342910286798, 0.28437991920204897, 0.23614424602220233, 0.9994727118912959, 0.7093988333333333, 0.20001931886487154, 0.95913552982993, 0.9953096486712545, 0.33886237618276416, 0.12406986075409049, 0.9554370573433824, 0.0892988539570319, 0.3844863014111199, 0.9999410272353545, 0.9999433892750831, 0.15807034776559573, 0.7047458738763436, 0.6883768666666666, 0, 0.5506762, 0.14340873863327538, 0, 0.6607319421506944, 0.6181660871284969, 0.9757140663578047, 0.9996828135616056, 0.4575774794871768, 0.9994228049747785, 0.1983710631532091, 0.43787257259684365, 0.09531152284326458, 0.9133978702859088, 0.13621946142167504, 0.07148944087995783, 0.6386622333333334, 0.2624284280266347, 0.234957419212798, 0.9999289638979114, 0.9996887254036709, 0.9996629702388473, 0.09069362665506307, 0.4898007278394884, 0.17723772126255355, 0.9999941609424439, 0.14177967353012425, 0.7436822420507911, 0.3750187617141731, 0.1418915169187969, 0.4754309721560332, 0.38595751515076143, 0.32094606882810356, 0.9996550262662981, 0.9998885738929266, 0.9993649263678631, 0.22065025087211995, 0.008018367623056532, 0.8400671671145664, 0.14616135541315056, 0.9994142697398241, 0.3039289333333333, 0.06383233227246406, 0.45512702478522316, 0.6905929666666667, 0.26729036666666667, 0.6156199528839912, 0.400130180788244, 0.9995729273445277, 0.7541233257341248, 0.11647256824107469, 0.36284303333333334, 0.11537693333333333, 0.20994905141795703, 0, 0.5500774333333334, 0.9998035, 0.8847013, 0.23777993333333333, 0.4482663666666667, 0.9998663305282391, 0.9698289375013063, 0.3225149666666667, 0.9998528333333333, 0.5103245, 0.08737598932023788, 0.9994298994679062, 0.03481783333333333, 0.5638874027154183, 0.19604793196639386, 0.6857612773173137, 0.04354246002283136, 0.9146877462348095, 0.11285916666666666, 0.9095971333333334, 0.34408336666666667, 0.9610380202934833, 0.9995822996101463, 0.3737078, 0.10978517188701434, 0.4514159213215266, 0.0920173, 0.9988696038318582, 0.30116769112876807, 0.08756198892544166, 0.9999767999559199, 0, 0.44077967864380435, 0.3733164666666667, 0.9995467426058454, 0.6096590666666667, 0.13434692310374413, 0.14419514520311283, 0.9994285747842324, 0.7229090068604463, 0.9999415236577098, 0.6938822224623711, 0.9886839177149155, 0.04513143967051874, 0.12360450695164826, 0.2943715279381609, 0.9993456825226326, 0.6965487758456976, 0.7279969655044776, 0.08621157737638854, 0.11574314645977529, 0.13159385456638117, 0.9997045666666666, 0.7097223666666667, 0.05413492942525042, 0.8429312580110547, 0.9983698732721278, 0.9999772332900766, 0.032210014277969566, 0.21575781131379873, 0.6743934893572439, 0.2952112786291495, 0.3355089333333333, 0.1903175784486885, 0.9993451884308295, 0.6679329838661149, 0.9993418145638432, 0.4254803900135893, 0.2723254049219806, 0.9999915333333333, 0.8860917018802194, 0.20024748689765443, 0.24988596666666665, 0.049413085211041916, 0.9489877874269098, 0.14260465629408736, 0.1791703009630313, 0.5694214440758485, 0.02137625241058093, 0.5081236573746689, 0.29095826876577646, 0.9124845723137306, 0.6270106889850323, 0.2657877895866014, 0.19712520338801287, 0.7645203466025202, 0.025914366666666667, 0.5164957, 0.10381606666666666, 0.9999553, 0.6983660666666667, 0.7797455666666666, 0.3506632, 0.8338859, 0, 0.9997336267801159, 0.566567681015425, 0.10030724699035817, 0.8153787619012852, 0.9997495398563759, 0.6732976416224978, 0.47406837159915693, 0.060377211036290845, 0.9996950756061687, 0.30623716666666667, 0.049470808244250514, 0.9997885873083316, 0.9996835573545289, 0.10163039309774688, 0.3385059, 0.8236701, 0.9997007411070243, 0.34698176487047816, 0.9349451777464078, 0.6410744397499797, 0.06524140102814598, 0.8639018098518549, 0.659305134805524, 0.15094478699559058, 0.8213330931697359, 0.5528000370943107, 0.15565203343927872, 0.11128455428429884, 0.9994545666666667, 0.2636772333333333, 0.4146892774127269, 0.980665424285901, 0.1399401201360957, 0.17726166460636505, 0.9015955735281547, 0.5818231908707433, 0.11975454905924837, 0.39927355925273644, 0.9993921203259428, 0.9994694666666667, 0.16580590947059803, 0.46303753216836335, 0.34475876484097995, 0.09588528218203615, 0.6094388, 0.09878212741408653, 0.8322609956141719, 0.5648655063820114, 0.5330918793246121, 0.9993739261168026, 0.3185673858591553, 0.2662635666666667, 0.16993317307684286, 0.2989467306146084, 0.9995428621097746, 0.9994700316384566, 0.2904196993785674, 0.09716622298863827, 0.08893563096125472, 0.9993324308188227, 0.4578676666666667, 0.8795524162678189, 0.48219508338207784, 0.036032048334712935, 0.4025793, 0.11643563272869291, 0.6980582515210347, 0.040533933333333334, 0.9999834505060858, 0.999390066097395, 0.983405146303502, 0.3175091954587309, 0.9957555445604135, 0.04960571329139142, 0.12815311834432142, 0.9999518331968608, 0.9996914004730727, 0.2942258180581086, 0.4515968983636284, 0.2956119, 0.0930987442571004, 0.9993788875470844, 0.9996898968845415, 0, 0.6373592134997953, 0, 0.7908978333333333, 0.0578978, 0.590869382714446, 0.033963199497759514, 0.9086065659646783, 0.9999577174207133, 0.21732987612846663, 0.45537773874951776, 0.17437928125541885, 0.24965824870134506, 0.9349718528787049, 0.06088885690355124, 0.2802401333333333, 0, 0.9763708409729687, 0.4395539612599541, 0.6280840036368204, 0.9104848939887522, 0.4731854629908414, 0.5555389666666667, 0.39323800308998264, 0.5491080666666667, 0.9643695401893282, 0.4247967631436456, 0.07177975993001426, 0.607618000886935, 0.9313629144300479, 0.15526560141035062, 0.3783145333333333, 0.6543948333333334, 0.43592023333333335, 0.9993960666666667, 0.51406775382828, 0.9667180022701355, 0.9995086197085238, 0.041225510287619206, 0.36718824473904454, 0.9994944455135705, 0, 0.9999218138205044, 0.589558377410709, 0.23773409194136852, 0.16834278355064602, 0.5937471312337437, 0.1792203909606552, 0.7390370443111591, 0.24224183333333332, 0.9605513784210281, 0.1567419462924832, 0, 0.4780359687901903, 0.9596538750076065, 0.2190375584241243, 0.21955118525520223, 0.02635323505618959, 0.6057119960765238, 0.9962433581300045, 0.6054034760959954, 0.9998405476432731, 0.0392353, 0.5335131666666667, 0.2123925, 0.9984615333333333, 0.08383336666666667, 0.2222671, 0.9996466, 0.1363241, 0.6439105213758765, 0.9559863241201133, 0.629231, 0.23913983333333333, 0.4994199836139991, 0, 0.999543978212988, 0.2226436, 0.05870750545425725, 0.9467056, 0.14606893631631288, 0.733055105770137, 0.33631885986319965, 0.7186927073234333, 0.9999490337963376, 0.9996286366581063, 0.13236854171086818, 0.06771808524481643, 0.9995629316870427, 0.2375795, 0.17386731856342283, 0.6326890466923979, 0.999322427661069, 0.9990574315110342, 0.2497853, 0.1373617670989054, 0.5112763105245565, 0.7136325705186211, 0.08343103333333333, 0.9997459333333333, 0.999863966170368, 0.8559865666666666, 0.20212526666666666, 0.5943468463621393, 0.08357527800359281, 0.3819380856828826, 0.5998561190004078, 0.1945095472551798, 0.9998373864431191, 0.99954853615074, 0.9943497333333333, 0.02596678990367427, 0.29488723955075236, 0.5735383175102496, 0.9775851659189227, 0.5326959552005066, 0.03040423003513897, 0.4026128529524742, 0.9995789109820958, 0.6668475248323109, 0.8139290451157604, 0.07403379863037393, 0.4912723462346109, 0.30682457423196374, 0.37382934872038504, 0.21188172406974207, 0.0463988459394879, 0.9999713781169506, 0, 0.9994132675280982, 0.6070858092892966, 0.04575382187208385, 0.23237308087353026, 0.9993848782103609, 0.2885451809441169, 0.9999378799198143, 0.9631659111575882, 0.378980931431588, 0.09879032412933031, 0.9997333457184772, 0.6876196666666666, 0.7184378211990675, 0.07629653592456047, 0.9997456556187776, 0.5329760689292855, 0.9993904035708537, 0.4576443966591239, 0.14036686595072106, 0.6015128307661982, 0.20195801277325495, 0.2702468458350703, 0.46239765332403, 0.3498821159986573, 0.7324750221659805, 0.9997471333333333, 0.5054988803433447, 0.11351870973475274, 0.10309586666666666, 0.007417290349307235, 0.9996807903916012, 0.4946011667418045, 0.17792336666666667, 0.3471244662919992, 0.4238537097252527, 0.5188752532279677, 0.24528790755662128, 0.9996437180685489, 0.6248904359117716, 0.019749605360926677, 0.9515159021209834, 0.44177022866956944, 0.03324198466447191, 0.09882681208403139, 0.6332627640398472, 0.9993584031355065, 0.9994233294888633, 0.09319105567290241, 0.5659105342533937, 0.5839018177788762, 0.28750972322093865, 0.7142557989028362, 0.17267903061226708, 0.9994826357343107, 0.9995624160532818, 0.5096656043455579, 0.5163837333333333, 0.6049278120084263, 0.4909809275025468, 0.9998525721792069, 0.9999958212068936, 0.195315591930901, 0.5030250311612894, 0.7515118248955276, 0.03677020665943099, 0.7206114428328598, 0.07129088510738678, 0.30435977234438183, 0.9998050135084199, 0.5785418428403676, 0.2384923476101967, 0.37140745395730534, 0.5347708515340667, 0.10944021790166217, 0.33601017268197114, 0.40872697992579393, 0.522501175935281, 0.13001494126243107, 0.9998610695842054, 0.9300375333333334, 0.10359593333333333, 0.556253281329218, 0.0756363805906717, 0.36751907097457526, 0.32570025216381243, 0.8032407907897087, 0.2308048206136584, 0.8714652333333334, 0.10491113333333334, 0.25110753333333335, 0.45114510986645123, 0.13836119026748148, 0.9995928353434537, 0.782533386813435, 0.08268549949270367, 0.7924979120774176, 0.27301101161169405, 0.558103520793379, 0.6702777541618601, 0.3663295, 0.7423377928547227, 0.38414952520622353, 0.9995053333333334, 0.5190939048019609, 0.07873355725357842, 0.5676301245591551, 0.40153646594866893, 0.9412223494056808, 0.5527179028819184, 0.6049179900127518, 0.9613296340569268, 0.9999506182544494, 0.17924929372994325, 0.5471208897290911, 0.1352073085219022, 0.9996142, 0.7591783333333333, 0.04695253333333333, 0.2827501666666667, 0.1730439440780589, 0.9997701513200535, 0.18533102156254333, 0.9996293326290653, 0.2973179, 0.05886621619344623, 0.2013864879607221, 0.942957945194231, 0.5912779658673389, 0.46065854165048414, 0.3276017282048966, 0.9981860902443793, 0.8817016544095649, 0.5365797176892797, 0.4705239, 0.5296809000655807, 0.10526561883901502, 0.9994674546065226, 0.16335817215339193, 0.7627319838270527, 0.010269509754563566, 0.12884664058002826, 0.9998892863115099, 0.9998023111148598, 0.5193988431460765, 0.27922555131727983, 0, 0.7293564193934379, 0.5320995120157191, 0.10117733765423188, 0.9993511482351753, 0.4617157529434667, 0.17646936311147987, 0.8323476229002275, 0.4752113850997956, 0.13289012402226763, 0.8584741666666666, 0.29048380922695655, 0.6343133395449738, 0.09255607513017468, 0.26281525514004483, 0.8846953744893761, 0.01333197509581463, 0.9994385133487865, 0.9998947662632707, 0.9997025750911144, 0.12582466643090998, 0.5864935398942469, 0.2940980430255119, 0.5437641333333333, 0.31163297626799236, 0.21058541009286194, 0.9997818868016191, 0.30774891805627763, 0, 0.9999164333333334, 0.9999850333333333, 0.9996275303832475, 0.3762692970603205, 0.9996987, 0.2971459963988168, 0.18430500899789784, 0.5216958069280786, 0.046381885368186916, 0.9998930954009768, 0.9984857077395898, 0.09104597297564469, 0.6059454375241486, 0.6040145883114137, 0.3292493, 0.9995188666666667, 0.9716703360831852, 0.6141561403964633, 0.08932110840609668, 0.47856197593442096, 0.9994824333333333, 0.980411938925027, 0.5482279783461131, 0.07748574082744011, 0.9993105132572582, 0.78578897006977, 0.16076206085124112, 0.9994031144809709, 0.4492956556333466, 0.24653298450247393, 0.4560877740183895, 0.9998477479483936, 0.20904443185474264, 0, 0, 0.9735437988529132, 0.717711803197683, 0.07760908716153478, 0.06439958902588581, 0.5437982475612602, 0.03594063636315757, 0.7963891, 0.6585770338068457, 0.42428760435621027, 0.20446956218138024, 0.1321498177513204, 0.9994476, 0.9993906382916251, 0.6950429034169969, 0.20184966798880347, 0.10936202100575827, 0.34114405337996206, 0.6726530949388722, 0.9540485065723843, 0.0494907, 0.7045638, 0.4071762923505197, 0.9995454666666667, 0.12944767231868587, 0.9994970661972618, 0.6080245333333333, 0.9955435850225588, 0.17847193333333333, 0.3705174769829405, 0.4189117576509738, 0.358076729464603, 0.7258359576252421, 0.2004462393270973, 0.41620104063235497, 0.062367887407706366, 0.9799322215631938, 0.9997580296890097, 0.21279677016588963, 0.9995705790243035, 0.7852381763019737, 0.0134715, 0.6598150333333334, 0.6592949333333333, 0.1577825, 0.20047132691740152, 0.9879055909071568, 0.09589545402879093, 0.2815541419058087, 0.48038881241406595, 0.38162398126794694, 0.01571015214233139, 0.7990811765390983, 0.9994989666666667, 0.11934270481792136, 0.47342847519991016, 0.06394676666666667, 0.5311800027273368, 0, 0.81839905779903, 0.6723040989821154, 0.24494272679532078, 0.14057640298568855, 0.9718415558917886, 0.2591036971209583, 0.9996392129751199, 0, 0.9995030790381267, 0.9998586325228265, 0.9333329, 0.41591985426231287, 0.49301503333333335, 0.20239403333333333, 0.23670911311562406, 0.5529235160619483, 0.0752398085635503, 0.6361519380683809, 0.7149692926225686, 0.021149692460745214, 0.8758061019693988, 0.5010103084189385, 0.5717858740852282, 0.6154878326518838, 0.052396583433990444, 0.9982805686354104, 0.21389044604623633, 0.94248821071165, 0.5904563542130945, 0.43742748504345363, 0.5848412812943405, 0.07321514883434228, 0.9791194965867375, 0.09523703124716631, 0.29279112132473833, 0.41609926344888376, 0.46759206666666664, 0.0763147, 0.6734291702514171, 0.16136355909158404, 0.9998074784833014, 0.36690216378077783, 0.9683902730431454, 0.4955627040943283, 0.040422233333333335, 0.4145620666666667, 0.5908375528703779, 0.8873628615386707, 0.6201025088622456, 0.9997590328835281, 0.9453222717999867, 0.30858693071007265, 0.8913476300674584, 0.10074947613137755, 0.3350533971750242, 0.027936939065424157, 0.6213713228753386, 0.07318221225979574, 0.9998902, 0.9996708786129656, 0.7761486910721117, 0.7620046754365942, 0.24446245632991848, 0.14710902656795988, 0.801615803839649, 0.2317506505461532, 0.999581143359834, 0.5739842472724574, 0.9250567995667319, 0.1356872638930498, 0.999901447343379, 0.500233761686371, 0.30350562967198785, 0.3270346217689112, 0.6621818077010027, 0.22432965409147496, 0.6509856598354326, 0.27026134012452685, 0.3591342984427577, 0.9993233868520243, 0.1973665662653514, 0.10694135201720126, 0.9996655730653686, 0.9555918836694252, 0.6202495, 0.03904222473245124, 0.22858521334619913, 0.7649805105132936, 0.4721102970095643, 0, 0.9998494662401544, 0.22172871014588796, 0.38384450153157834, 0.8021067574237206, 0.9999856945646498, 0.13688868070600196, 0.5067070666666667, 0.1518042368372716, 0.9944320643517522, 0.21339139214099934, 0.8091372382750187, 0.9999407264688344], 'oldestBlock': '0xd1171c'}}), + (('0x400', '0xd1171a', []), {'jsonrpc': '2.0', 'id': 17, 'result': {'baseFeePerGas': ['0x15b79bf133', '0x186e7f6c5a', '0x16dc485fa0', '0x17e903e1b6', '0x1976d163b7', '0x182723601c', '0x156aaf97d1', '0x1668f3a180', '0x1935360934', '0x1790c2177e', '0x1585a8f73d', '0x137e48a9b8', '0x13613a5de6', '0x15cd38eccd', '0x131391cf34', '0x157586696b', '0x178034224a', '0x1665be9069', '0x16f8fc1ec6', '0x14a788a2b6', '0x13293238be', '0x12e3795dd1', '0x10a9e58680', '0x129d55f0b9', '0x138642776f', '0x12df59a1b2', '0x12ff81dc4e', '0x118b30a531', '0x13bbe60c66', '0x162ae2442a', '0x14c4d509a2', '0x14ba8318e2', '0x1261c10e8c', '0x14ad50e7d9', '0x15269c624c', '0x15bac9876a', '0x153b6bb440', '0x136d217955', '0x12288361cf', '0x13d14dbb20', '0x12d0cfe2f1', '0x152a75167e', '0x17bf9f9d58', '0x153d2b6229', '0x14baa5b47a', '0x12f70ad83e', '0x1329bac526', '0x11f93503d5', '0x14382e31d4', '0x122b80c782', '0x13051ffe17', '0x1268f4db44', '0x129c52fa3c', '0x13e2013e60', '0x117921921d', '0x10adc2e7a3', '0x12306c18c1', '0x12190e9410', '0x112cd9f487', '0xfb7bac37e', '0x11ad7ef75d', '0x10c5d397ec', '0xee26524b3', '0x10bc92619a', '0x10214dfd5a', '0xfc3bd3776', '0x108903beec', '0xf59e30515', '0xfc5923618', '0x107b14be82', '0xff6f6895d', '0x10e1881844', '0x12b6a4f2dc', '0x13908ff171', '0x16022b9931', '0x13d2781159', '0x1360eb2bc3', '0x129b85bee0', '0x14ed1d516c', '0x1529b615b3', '0x14a486257b', '0x131e8b6cbf', '0x115ce66874', '0x13883ff800', '0x15077c1509', '0x14ce5a948c', '0x1412fde5f7', '0x133531ddaf', '0x12caf78f65', '0x11396612d7', '0x122095ca38', '0x136b821085', '0x15d8e62dc9', '0x1893742091', '0x1765d9350b', '0x17723d1945', '0x18ceb4bebc', '0x15d3e11fb3', '0x188d73c26d', '0x16b3a1dce6', '0x146ea02b52', '0x16fbe6635f', '0x14da05a7bb', '0x13eb0f1bdc', '0x1668623323', '0x18dd441c64', '0x17bb33c525', '0x16a255a43c', '0x14f4b2b32d', '0x1792d3b4d6', '0x1a84b06302', '0x1da5dfbcf0', '0x1a9685acaf', '0x186a4506d6', '0x18528e87c7', '0x16cdfb5190', '0x15d53024b0', '0x13d35cf965', '0x164d5f2712', '0x1702df8f36', '0x146bef90d5', '0x16f0db5f90', '0x163220ed4f', '0x18f7bc31e8', '0x1ae6fd83cf', '0x18f8ccf4a1', '0x162dfd87d1', '0x161be21f47', '0x156241d2cd', '0x1459a5b55f', '0x1355faaba3', '0x12d869f46b', '0x14ea333362', '0x134d98bd95', '0x133feeea94', '0x1194baf170', '0x11c5fc24ea', '0x133a9eb743', '0x12a1ad9936', '0x109d18cca5', '0x127b58f38c', '0x1100a332dd', '0x132040c9fd', '0x158399ac56', '0x1833d8b6d5', '0x16f18b38a0', '0x162f7690bb', '0x1491a64818', '0x16cc0b8a4e', '0x14e4083de1', '0x16c0883fb4', '0x148a4f11d6', '0x1292b6bc0b', '0x1125a43a90', '0x134a489344', '0x125ee9a51c', '0x10be202a2e', '0x10d127322b', '0xf730bf75d', '0xd84aa7872', '0xf34a70edc', '0x111ab7673c', '0x11cbc612a0', '0x1027adab5e', '0x122c688324', '0x1471b8f946', '0x1619e09616', '0x13fa5f89e5', '0x125de2ddc7', '0x1370878483', '0x1218de8c0a', '0x12456ac751', '0x119e37b0ea', '0x1202db75fe', '0x111da5aca2', '0x12e1cb81ef', '0x13fc7a5885', '0x133cad79ed', '0x1143e49e2c', '0x12aef1f26d', '0x110c7a277a', '0x116b53b26a', '0x1398727295', '0x1368a3b579', '0x15d548f19d', '0x188f2de9ef', '0x164466978b', '0x16c99f083a', '0x16742fe899', '0x18fb27c754', '0x1782b34c2c', '0x173d86da3a', '0x15a412f06b', '0x1846dce8ea', '0x154d54e34b', '0x17f6b69c4a', '0x1821c37fc6', '0x1711292c08', '0x1575fd6663', '0x17a2c039e3', '0x15564b465f', '0x18004caec1', '0x1b001a60d4', '0x186dd6386a', '0x17410d78ce', '0x14c5f9ecce', '0x162606fcdf', '0x172da0eaec', '0x1447eccd8f', '0x15fd6f2d25', '0x146278831b', '0x12e4363380', '0x12bfaf6d84', '0x11271ede39', '0x109dd573d1', '0x1080c1882e', '0x10b84656da', '0xfc6989c79', '0x1123473731', '0x10daf46570', '0x12f527f0f7', '0x14b75c90f2', '0x143e9e3ba0', '0x14dab93b81', '0x160edca879', '0x13865de7f8', '0x139d8b3af5', '0x11b001e30d', '0x1340111e4f', '0x14df744a02', '0x164e129ff7', '0x13c0351523', '0x15521efcda', '0x143583473d', '0x1348de4cb2', '0x13fb31fdb9', '0x11ee941b8d', '0x114f1f68bf', '0xfae10bfc8', '0x10f4442217', '0xfe43c5cf8', '0xdf58b382f', '0xfb3be2e48', '0x111c91b381', '0x12900638ba', '0x1462f38b4c', '0x127d0c1be5', '0x12f4ba569c', '0x12c941a687', '0x13786067c8', '0x1299e06f5c', '0x12debb7898', '0x10c4902542', '0xedae135c3', '0x10b5df4363', '0xffe0d90cd', '0xe75ee81d3', '0x10448081bc', '0x10a3862d4f', '0xf6d495cff', '0xe39b43f23', '0x1000e4fe6a', '0x1200cbb581', '0x1403885f2e', '0x120e0ba197', '0x10c17f0102', '0x12940d7b5a', '0x14d039b633', '0x1236327f6d', '0x108e80c322', '0x111f5b6547', '0x108502f9b0', '0xfb062c36d', '0xf38018e54', '0xedff6b406', '0xde1422f2d', '0xc2519e948', '0xda9a0d17b', '0xd0417452d', '0xea4290843', '0x104733bce0', '0x10f6952984', '0xf01535aeb', '0x1012decc85', '0xe4dc296ee', '0xd068e2b44', '0xea72550c2', '0x107b8b9d45', '0x10caecb3d4', '0x12e405014e', '0x120c0279d6', '0x144d67c79e', '0x147777b48a', '0x14e16e16f2', '0x1594e3bd40', '0x13299602f1', '0x13765699c0', '0x113ce0e35d', '0x11a5c4b9d5', '0x10868b9763', '0x100515c220', '0x1204e7791b', '0x10428d1657', '0x1073022cc5', '0xf6690f9f9', '0x11534cc11f', '0x104c6720bc', '0xe42da3ca5', '0xf9eb4aab0', '0xfa8530c7c', '0xe32e71cd4', '0xe11468eaf', '0xfd34d2de6', '0x11bdb711de', '0x100b9cbcaa', '0xebd2b017a', '0xe9864b232', '0xdb91800f0', '0xf701d2731', '0x11458319e7', '0xf8ebb8e1d', '0x11198d0c78', '0xfaf9ec014', '0x1145d495d5', '0x136e5f9fa4', '0x11b4bd9b10', '0x1195316d57', '0x13af6e54ce', '0x12168c95ac', '0x12277302ff', '0x10f5d2ed9f', '0x131416349d', '0x11974a7dbb', '0x10d1c7fee4', '0xf95694525', '0xfa9458837', '0x11114b0f3f', '0x11622e7556', '0xf476bb91d', '0x1130147485', '0x1352ce438d', '0x117396f52a', '0x11ab7ebb77', '0x10bc814f07', '0xf06684cbf', '0x101f6c76f1', '0xedbefacf4', '0xd0071b756', '0xea03c1432', '0x1074334d46', '0xfb0f5f5d9', '0x11a70a119a', '0x13db94eb07', '0x165664cca9', '0x16913da773', '0x13f441e411', '0x1672a9b537', '0x142cb920d8', '0x14b9e5f5d8', '0x1611a99e17', '0x14a6f09b75', '0x13d7a13484', '0x1652487b39', '0x140e3520cb', '0x15e7a7d174', '0x145ef163cc', '0x157bcc32fb', '0x1310151d14', '0x10bf61a76f', '0x12d717153a', '0x14804130ad', '0x1489299809', '0x13d6632a5d', '0x125057e00d', '0x108919a2f7', '0x10d7f45d32', '0x1116b25c38', '0xf2f4a90a0', '0xd5647512c', '0xf007dbc38', '0x10e064a8ab', '0x12fc2188b3', '0x155b5fc124', '0x13f19f351b', '0x12d37560b0', '0x12996286ec', '0x12d896d318', '0x123458ac80', '0x147aae5cab', '0x13b2fd7759', '0x11d7423b67', '0x118ffc877c', '0x1021d4c2b5', '0x12255c2e82', '0x1092317ec6', '0xf3f98479a', '0x1127283ae6', '0x10c415b1a3', '0xfda1670ca', '0xf25c22576', '0xd56ed7367', '0xf01c1f9ee', '0x10b9163581', '0x102a5b4cdd', '0xe9a566767', '0xda603b131', '0xdd73297e0', '0xc431745b1', '0xdcb7526ea', '0xe0a6a1b73', '0xd05b32e5b', '0xe793e7fcc', '0xef6307f3d', '0x10d46cb47b', '0x12b91e2183', '0x1115af596e', '0x1201655a01', '0x126c3bebb1', '0x1101469804', '0xee11dc504', '0xdc0493f45', '0xf77f308bf', '0x1166e5eec8', '0x1393914100', '0x11abcc5025', '0x124772a300', '0x106090b57e', '0x1263e7d9c7', '0x14af3bd06a', '0x1322a7966a', '0x128c627f21', '0x109893a835', '0x126faf7b04', '0x1021b98ba4', '0x10bb85d251', '0xed152c471', '0xf44235267', '0xda23eaeb5', '0xe9db51dad', '0xd493976e2', '0xef234ab4d', '0x10d072055a', '0x12ea3de437', '0x108cf627b1', '0x118b33c8a7', '0x13546261e8', '0x115fef5063', '0x12475cafed', '0x1061e35444', '0x1017d63890', '0xf8ed3f90f', '0xee954ff9d', '0x10c668a770', '0x12dee8f7aa', '0x13450079e7', '0x11ee4d5719', '0x142bc98ae8', '0x14652b7dbb', '0x1282452e24', '0x14d23666a7', '0x155862fd11', '0x13404a491c', '0x12998cf3f1', '0x122c01bdb1', '0x10ea795daa', '0x130162bc32', '0x1505f116dd', '0x1316eb8765', '0x14b78f4843', '0x1563d52960', '0x14384d25c7', '0x13febf6c3b', '0x167def7fdd', '0x194d286af7', '0x1652bf0c7f', '0x1645ce83d3', '0x14bf3b73e8', '0x12afcf8162', '0x15054a625e', '0x147f73bbc3', '0x1603e8c762', '0x1618098a44', '0x13f8383b3e', '0x1579d946fa', '0x18283c0da5', '0x19023e4e88', '0x16bc3ba143', '0x16f8ea5e5e', '0x1421c915e7', '0x154aa56e78', '0x155758a2ef', '0x138ea8f94b', '0x12ec5057ea', '0x12f3210ba4', '0x10cdf3c3cf', '0x110e9e38b0', '0x132f26a8b5', '0x11fddc075a', '0x11bc4f5e0a', '0x117a2b1881', '0x11c2118159', '0xfea5041f1', '0x11e773b4e2', '0x1243ec5441', '0x1458b2b533', '0x147cfb38dc', '0x124fa97667', '0x1050c48871', '0x125acabc2b', '0x10eb34dfd9', '0xf0b499282', '0x10eb7553f8', '0xf493a81d4', '0xe4e6e13da', '0x1017e9625b', '0xe6762b576', '0xf891c6ca9', '0xe97ed1a70', '0xd1189d097', '0xeb3596993', '0x103abe0b2a', '0xf8130528f', '0x1170ff5dca', '0x1341042dd1', '0x11bf43acaf', '0x116adb15e4', '0xf8dbd9a06', '0x117eef04ba', '0x105f3cb7d5', '0x1013ec28e6', '0x10ef6103be', '0x11a2ef62c5', '0x10f9803bbd', '0x1002e8ff79', '0x120339fab4', '0x11a39b8043', '0x1286900149', '0x12d2d882ef', '0x11223aefc9', '0xf4b6421e8', '0xe3015f535', '0xff5f06302', '0xeb2ca339a', '0xe7bb0bd69', '0xd602ff8a1', '0xf0bb1e94b', '0x10ae877f33', '0xfc4b1e242', '0xf9f96d989', '0xf7e2bca07', '0xe74a46d64', '0xfe3603b83', '0xeedf8fe75', '0xe00aed2fe', '0xfc026f3f2', '0xe97b73486', '0xcee335718', '0xd506596ee', '0xcf015d4f8', '0xd366da13a', '0xe760c07f2', '0xcc2a445d7', '0xd4ffe2502', '0xcc1affeb1', '0xe59c36ccc', '0xf4f1978ef', '0xddcf724ee', '0xcfa9fec46', '0xe674b7ba2', '0xea2d2f708', '0xf361f134f', '0xe2374fdf4', '0xfe76274ac', '0xec7ab3288', '0xf1b9acfe6', '0xd9585a0ce', '0xd45dc6722', '0xdb6bed870', '0xd245d4445', '0xc2103603f', '0xda4ce0333', '0xcea4c3ed5', '0xe8187e41a', '0xcf4713a78', '0xd9366552a', '0xc4657e39b', '0xc96581500', '0xe29149d22', '0xfc398cacb', '0x11673655af', '0xf7dec7fdb', '0xf3bc24c28', '0x11231b6f47', '0x13475d01da', '0x11471e3d9c', '0x1104cbb78e', '0xf26abf28c', '0xf28011bbc', '0xf2b3f5be1', '0xd5ee780ac', '0xf0abcda7c', '0xf7ec49494', '0xf9fad6288', '0xff0bb3b99', '0xe85507e9d', '0xcd6bd684d', '0xe71899755', '0xfaaf0a1e2', '0x109616394e', '0xf378be6b2', '0xf97bef890', '0xf480d4524', '0xeeff1d3c2', '0x1035e52ab3', '0x10d37bc147', '0x11e3f5f302', '0xfe3cd77a0', '0xfcd92e08e', '0xe47c78cff', '0x10104a9146', '0x1211f02ce5', '0x1421a02c45', '0x147a674b01', '0x132ea796f7', '0x12cdf7595e', '0x135c7f89dc', '0x1436fd6207', '0x1356b18a40', '0x1242ad0481', '0x11931fa3a3', '0x12d517ff0a', '0x131b62cc78', '0x1161c3a5e9', '0x11e6cf7ca5', '0x1260370e82', '0x10eec30fce', '0x130c0705a6', '0x156d1fa628', '0x146968d30c', '0x11f7fdd3a7', '0x1436a30e7f', '0x14bb3a6507', '0x12965af0cf', '0x10438f92b6', '0x124be8f818', '0x14956156aa', '0x1727a6d0f0', '0x158686fb12', '0x1510798a39', '0x143c6965a1', '0x1293e50516', '0x11c92aec20', '0xfca80f75c', '0xdfd336c89', '0xfbc4c3320', '0xf1aab0707', '0xf9654bd81', '0xe5857f7a8', '0xdc47c2af9', '0xdee951a44', '0xc30c276fc', '0xdb6c1a7df', '0xf6cbc5f37', '0x1159b59ca7', '0x10c7295f42', '0xf685530a9', '0xfe91707c3', '0xe0aa38967', '0xef0d88aa5', '0x10cea6f2fc', '0x1283953a00', '0x1088d6bbd4', '0x1299ee5ad6', '0x116b32f4ad', '0x10dea8518a', '0x1172747661', '0x1187fe7f94', '0x10a54fe57d', '0xf6100ab8f', '0xd74e0961e', '0xf23524037', '0x10adfe8233', '0xeea2d8d96', '0xe3b6661ee', '0xf25e2fa46', '0xd4fe34301', '0xee0ccc1ea', '0xee91b1ca5', '0xe5634bdf3', '0x1020d6eb1e', '0x122444765f', '0x146852a8b3', '0x14f009d913', '0x14281bccda', '0x11f8e5a816', '0x11fd8dc58f', '0x143cb7d76a', '0x1685febaf7', '0x15f12bad32', '0x18ae7dcc26', '0x189b266f5c', '0x168666c01f', '0x1745626118', '0x164d2e44c6', '0x141f49bebb', '0x16a27b3edb', '0x150d31a404', '0x17794d2be5', '0x16e1918674', '0x14784b0077', '0x1605925f78', '0x1396cfa239', '0x152b296ffc', '0x173d629b6f', '0x1a246a3dcb', '0x1a1e367ab4', '0x1a36fe5924', '0x18272894a0', '0x19a6183315', '0x180cab2809', '0x1a5025ff10', '0x196258bc92', '0x1a74ba4a16', '0x18f910acac', '0x1787387849', '0x16f27e6d5e', '0x14f1141594', '0x158bd08e82', '0x152b74cc35', '0x1353bb7a45', '0x12339de75c', '0x1365222f3b', '0x15d1b1151c', '0x188bd02fb7', '0x163f54040d', '0x17aab1d3af', '0x14dba327d7', '0x1492f2b49c', '0x14656aaac3', '0x1266bb0a70', '0x10c248d033', '0x12da3baa52', '0x153566b59b', '0x128eb9dee8', '0x107c6d7715', '0x128be63369', '0x135c3725df', '0x10f0b04124', '0xf742f67a3', '0x112e0116eb', '0x12313ca52c', '0x1045fd4599', '0xfae340f20', '0x10e26d7241', '0x1044295034', '0xfafa298b9', '0x1067432112', '0x1253e87510', '0x149e561d58', '0x12ece4a032', '0x12d45516c6', '0x10e444b068', '0x1071a7ecaa', '0x127f3548d9', '0x112ed1f97b', '0xf7641e737', '0xf6eefc561', '0x107c0c6f4b', '0x106bfa8612', '0x1190c333a2', '0x13c252f1ed', '0x1323d86674', '0x12f6c9053c', '0x11e375547f', '0x1243f49102', '0x11966e556f', '0x11460496b7', '0x120a182ce5', '0xffbbd9b17', '0x104be90027', '0xf1db537e7', '0xe9415a89b', '0x1053950b10', '0x121ec6bc47', '0x11b4d588e6', '0xf7e3ad7ca', '0x116db03bd3', '0x1177f3490c', '0x13a6c6267d', '0x1350b92d8e', '0x11e8d68df3', '0x109f3c7402', '0x105dcdf2a5', '0x10f08840dd', '0x117420d298', '0x13a2385d41', '0x118ea84bcc', '0x1219c02f14', '0x1251def6d8', '0x1073f3ed9b', '0xe65756fe8', '0x1031c69ef6', '0x10343a0352', '0x123a3ea52d', '0x120c26c8f4', '0x137e91a483', '0x11796ab23b', '0x10bac3f2a9', '0x10e0d16895', '0x12c9ae27a9', '0x1522ad7d54', '0x1442856a66', '0x12a0b99be5', '0x14bb6940e4', '0x14ff23400e', '0x136974d15c', '0x13968804c9', '0x11e0425792', '0x1152abc353', '0x10505ba577', '0x10c702cb77', '0xf427057d4', '0xf71911c10', '0xdd0a0b0a8', '0xf60baaa44', '0x114b768415', '0x118db5567a', '0x10e067d5a3', '0xfda7377f5', '0xf3924a958', '0xe20300ea0', '0xd86fe521d', '0xd82470a1c', '0xc062d1519', '0xd6dedaf6e', '0xf1b505779', '0xf8c6a93c0', '0xe5f93093c', '0x102b50f1de', '0xed72c58c1', '0xf0870a961', '0xd87a1bfe8', '0xf384089b5', '0xd8c7302fe', '0xdb6825d9e', '0xf6d1df259', '0xfd2a8e4c9', '0x1022bfe592', '0x1226f66bbc', '0x13c0c7332b', '0x12750a36cb', '0x140c6ae13b', '0x126ae5b3d5', '0x10e89fa81d', '0x100ca6fa3a', '0x104da0375f', '0x1256feda1a', '0x13f919e333', '0x120aa8b9a4', '0x1137042b74', '0x11b11f5528', '0x1287c49780', '0x144a87da80', '0x126d145b16', '0x1380f90762', '0x13854ac2c2', '0x15b6e2670c', '0x137ddafa6e', '0x14919567f1', '0x12f306e7da', '0x126c47ebd5', '0x1088be5810', '0x126a08e6b5', '0x114209c2f1', '0xf600e5474', '0xecb5668eb', '0x10a4a790bf', '0xe90129ea8', '0x1061fab737', '0x126dbdf2e3', '0x132a6b7452', '0x10c51e05c8', '0x12ddaa6126', '0x15391d4840', '0x17dfb70480', '0x1adb11c28b', '0x1e35d62a3d', '0x21fb97d1c8', '0x263830a781', '0x2afe62e57d', '0x305b74b244', '0x31cb67889a', '0x2bbf0dcfbf', '0x2b3656e67d', '0x289b0faeaa', '0x26eefa0327', '0x2300a1f609', '0x26ac995a60', '0x22a44773e1', '0x1f3994603d', '0x230aabed4b', '0x21363a46be', '0x1dfaca2ee6', '0x1c644ae968', '0x1d019f4915', '0x20a11ec370', '0x208fae4009', '0x1def377618', '0x1b7aa1189d', '0x1bf409d215', '0x1c746bdd80', '0x1cb8b9b1e0', '0x1a9eba5956', '0x19066db5dd', '0x16d631d649', '0x17aef4528a', '0x1a5e0a4998', '0x17cb56b540', '0x1777401b00', '0x183d0aa662', '0x163a5162f2', '0x172b5bc60f', '0x1692f1157d', '0x1897149d16', '0x17058901ec', '0x16fa40871e', '0x14e067d4e7', '0x177bc8e638', '0x19fb9162b1', '0x178ff309c6', '0x17b49c87f3', '0x1aaa8ce53e', '0x1dff9694f1', '0x1c8ec95549', '0x1b316557bd', '0x1a18f87555', '0x1b7024359c', '0x1891df79bf', '0x174012ac6e', '0x1a262afcdc', '0x1d69ea60d4', '0x1b08d4b9fb', '0x1e68ec338e', '0x1b9c42ff7c', '0x19f3665cad', '0x1b10b4e792', '0x1e067eee5d', '0x1adef2ed7d', '0x17f1a4e3f0', '0x1703ef808e', '0x19b61ee46a', '0x1ceca66d0b', '0x1c2d55e117', '0x1ad6a9cca0', '0x1d88403ba7', '0x1a4958eacb', '0x1d63dddb03', '0x1b500e953e', '0x194c2efb42', '0x19a66a35c3', '0x17701859e9', '0x1a5bd17ef4', '0x19eeb1b362', '0x1d2b8934c1', '0x20d0eb96c9', '0x21ae25ac83', '0x200bf6d059', '0x1dfc039e0d', '0x1f9b969a73', '0x1c69079029', '0x1dfe1bd475', '0x1b73d61aa4', '0x1c7f564864', '0x1a77183e70', '0x1dc52d6d00', '0x1c4faf81e6', '0x19298f3849', '0x1a3081217d', '0x17e20400ca', '0x15dd5925da', '0x18979e72e5', '0x1a556f78c8', '0x1774ee8b96', '0x1870f75f8d', '0x1771091974', '0x17aa0ecf8b', '0x1a9f117ef5', '0x1d60fda804', '0x20e4aee992', '0x1dfaa9b9f7', '0x1b9858aef5', '0x1c17e14e1c', '0x19a060e583', '0x191559348b', '0x187c300141', '0x17828fcf20', '0x19653403f7', '0x1a66dbb855', '0x186e89a27a', '0x19d063b713', '0x1790a93005', '0x19f8fcf593', '0x198949d789', '0x17d67ce1f2', '0x154d3359d5', '0x1579a52318', '0x1828ae98b6', '0x1b2db7f3e8', '0x1a6f52a309', '0x1944a61139', '0x18a0b2939a', '0x19099b78ca', '0x176d3a326e', '0x1a253a0177', '0x18e4f21ff7', '0x1bfcb1894f', '0x1d00314840', '0x1b858a0646', '0x1af9a2aab8', '0x1e58c5f50a', '0x1af9340148', '0x1922a0dd4f', '0x19c8a7e4ff', '0x192080e06a', '0x173f23691f'], 'gasUsedRatio': [0.9999549999159999, 0.2427674822790791, 0.68367701429564, 0.7599586608499036, 0.2940241643568803, 0.046862933333333336, 0.6855045333333334, 0.9994006480661699, 0.23938375675817297, 0.15316153333333332, 0.12293413333333333, 0.47671006666666665, 0.9998717, 0, 0.9995980329447651, 0.8805779333333333, 0.312201, 0.6027185333333334, 0.09635936666666667, 0.21076303333333332, 0.4431443, 0.0288342, 0.9683087, 0.6955152333333333, 0.3664258851231772, 0.5266237333333333, 0.19378703333333333, 0.9993852997452012, 0.9932681923961033, 0.24762361049180207, 0.4922359019148803, 0.047154168972255786, 0.9994411984167288, 0.5916588666666667, 0.6094640583470241, 0.40841533333333335, 0.15979452731074772, 0.23890285844469436, 0.8655279923818062, 0.29777154225226327, 0.9996211692084894, 0.9880843933918063, 0.0773066982883232, 0.40397783218495725, 0.1595930358404725, 0.5417604666666667, 0.25170054774845696, 0.9998456349574809, 0.09454473512606003, 0.6871411666666667, 0.37170713333333333, 0.5435969557606336, 0.7734328885373626, 0.0152274, 0.318141, 0.8622318666666666, 0.47992853333333335, 0.29606936666666667, 0.1605554156967612, 0.9988072988868123, 0.2952317817148184, 0.049649766666666664, 0.9977717, 0.35504533510306147, 0.4093643820734233, 0.6955285, 0.21355843333333333, 0.6096055202095154, 0.679820852714491, 0.37474239297091044, 0.7295774, 0.9342096442823583, 0.6819529333333333, 0.999630793863126, 0.10263799921673257, 0.4104928, 0.340839, 0.998447984456822, 0.5452458088960883, 0.4016652820729857, 0.2048139891465794, 0.13253407133539455, 0.9997635993301981, 0.8065725333333333, 0.45755099855008413, 0.35929433534137967, 0.32736146666666666, 0.4135867, 0.16612258129936117, 0.7097214666666667, 0.7852424333333333, 0.9999618333333333, 0.9996009563328077, 0.30824453333333335, 0.5082741333333334, 0.7322249333333334, 0.0195327, 0.9993470666666666, 0.19846566666666668, 0.10010778858889038, 0.9995764064504851, 0.12890064923342315, 0.32093511962195503, 0.9999546556350734, 0.9385218737906578, 0.3177208333083992, 0.31507268714218917, 0.20340926087671368, 0.9996582665267015, 0.9996743306343956, 0.9720705071174971, 0.08715951361862193, 0.17310616666666667, 0.48482439769101193, 0.25037564996043277, 0.3295344756321145, 0.1322722513172775, 0.9996753823941344, 0.6271604436212569, 0.04985453333333333, 0.9934422666666667, 0.370095031131233, 0.9995356936430374, 0.8099347175218871, 0.2129720379802055, 0.052740466666666666, 0.4872440333333333, 0.3688127122802083, 0.3066515195414182, 0.30062517439963066, 0.39853266763322104, 0.9392542842051069, 0.1917534945749048, 0.48894011233924606, 0.15323960084553573, 0.5437748445596804, 0.8275923333333334, 0.3757232, 0.06677894297114466, 0.9497904542861302, 0.17982907692839495, 0.9995734669667683, 0.999440819545871, 0.9998519995757321, 0.2919233666812154, 0.36782719774335143, 0.2085544125572966, 0.9332954842652922, 0.1655180785225823, 0.8563927894103182, 0.11114586747103004, 0.11691480886823216, 0.1928754889890748, 0.9999423662305711, 0.30935009371586225, 0.14550731788979265, 0.5177572635555527, 0.17470948101864364, 0, 0.9993104261387794, 0.999468, 0.6617435666666667, 0.13115347136478772, 0.9997775991921296, 0.999796467720648, 0.8241705659209291, 0.11575405762845227, 0.1773899867006798, 0.7336451013298921, 0.22377533322578996, 0.5384623665260329, 0.3570154793747212, 0.5892548554900946, 0.30115618247535075, 0.9127651259352372, 0.7339221789102774, 0.35005288811922897, 0.08999582110309506, 0.8285618577035457, 0.15003324826719916, 0.5869288785177954, 0.9997347152321818, 0.4618793360757498, 0.9996501831361753, 0.9994516296109867, 0.12668244805996928, 0.5934814565385114, 0.4414195244004574, 0.9502068052500318, 0.2645373839766369, 0.45402752611971897, 0.22471572036039353, 0.9872056976994259, 0.009864436584403688, 0.9997911587998026, 0.5280699970184162, 0.3234941499000914, 0.22148363333333335, 0.9053600492452454, 0.11098590390995675, 0.9994278914442997, 0.9998477, 0.11906456666666666, 0.3076162205727226, 0.07327684127929994, 0.7648007501955724, 0.6859612131504871, 0, 0.8370690216641296, 0.20798945597012525, 0.20699536666666668, 0.4697891824700153, 0.15950710182991212, 0.37494146201215556, 0.4726573103950896, 0.5525651931555662, 0.2741466250579567, 0.8453497284908974, 0.4340607, 0.9989172666666667, 0.8710621, 0.4089306, 0.6204838666666667, 0.7308704283065747, 0.04063327125771984, 0.5185476791198277, 0.10686473281416792, 0.853408846768717, 0.8371605107160967, 0.7744430454077011, 0.04195651940122681, 0.8179566531381844, 0.29142401747616287, 0.3170338254618831, 0.6444858619559912, 0.08975819776022573, 0.36105816355868176, 0.12352000187214582, 0.8250577000494261, 0.249296147711913, 0.013605412127667001, 0.9994471475830785, 0.85905406008386, 0.8391843804209393, 0.8930341901296396, 0.12758492147896816, 0.6011446333333333, 0.46416740719354216, 0.6456525666666667, 0.32144214507866403, 0.5578390344546434, 0.05437875171507688, 0.04369141780340775, 0.9996133434892135, 0.3281209666666667, 0.11688690673108958, 0.9998150723422168, 0.5912686796691651, 0.20866458860821852, 0.1884677968924796, 0.9999751514467552, 0.9997943982722769, 0.9467431349081645, 0.10848320741961097, 0.21220592266700544, 0.9350688682209934, 0.9812165158554658, 0, 0.13648532110125447, 0.6367030174978772, 0.3591532551935331, 0.29888839570347553, 0.38011140099473323, 0.4096075261191192, 0.2324500120235451, 0, 0.9998576162152899, 0.31068622750283187, 0.999469393566524, 0.9471973308549688, 0.6683437085962217, 0.038286685700149106, 0.7848440671297711, 0.059538786081635604, 0.14257104573766988, 0.9997252642663136, 0.9994736376633894, 0.5752491025368536, 0.9997481407217711, 0.3213324902393385, 0.9999086661430192, 0.5323716798763639, 0.5808955773613581, 0.6342900889937885, 0.05162642641078025, 0.5625835946536865, 0.04281722203463364, 0.5950762565107214, 0.24569464163511337, 0.37759470532635797, 0.9992036644103824, 0.10948413333333333, 0.5465650541086704, 0.24500912867518676, 0.9999114134125165, 0.2629048865768179, 0, 0.8811199887620553, 0.5096217931145152, 0.1273538890486156, 0.46299523253195113, 0.9998515914996295, 0.9842035120950265, 0.11767494792036304, 0.1743175919521047, 0.4610145666666667, 0.2609463808075252, 0.9998672332094176, 0.9750857055551839, 0.1030503, 0.8965300616051575, 0.1692846246656497, 0.9046302, 0.9998319973878841, 0.14487356666666668, 0.47216026666666666, 0.9783068500276147, 0.17545396960550394, 0.5145987917253788, 0.2369522, 0.9995714333333333, 0.1881335, 0.3245640701478327, 0.20609744929418553, 0.5199131123755525, 0.8591890265510393, 0.5740515894208055, 0.01574048183461903, 0.9997254301755343, 0.9970144428109929, 0.11250465710087508, 0.5500541666666666, 0.2886678824794255, 0.09099342129364059, 0.7922376525641264, 0.18649938768216992, 0, 0.9996814442192897, 0.9999320000698017, 0.3145960810320122, 0.9999586261064597, 0.9997011985757132, 0.9994998193755188, 0.5411633693366509, 0.036814566666666666, 0.9999008031342606, 0.09493725527477159, 0.609338, 0.7591563333333333, 0.24318983333333333, 0.343153, 0.9997635333333333, 0.09394689419115566, 0.8688576810531449, 0.2198739416534953, 0.7184911295409688, 0.04928147027906602, 0.01418770733809437, 0.9998003666666667, 0.8526075045615377, 0.5067891730032281, 0.36397596666666665, 0.19278113333333333, 0.11159573990668555, 0.574512202878056, 0.558203, 0.05434126424453479, 0.01327270921323151, 0.9993295780181936, 0.9998339996845994, 0.9997117333333333, 0.9997750136341471, 0.23533756127544708, 0.27580525711198506, 0.45180068179156163, 0.5530973983859429, 0.3638285905707179, 0.9998209760565923, 0.3476420783122772, 0.12265927650279701, 0.4375798064761183, 0.17423803333333332, 0.9993220713359929, 0.15284349402323294, 0.18073261077419916, 0.9996033920914212, 0.40975280214161536, 0.2819268654594521, 0.322251967334472, 0.022578978735290283, 0.999958074114642, 0.9574249970591526, 0.3666412333333333, 0.11335460922409267, 0.23857566443754452, 0.5563056719401667, 0.04379431800234814, 0.9999749666666666, 0.5713097493630803, 0.20986700287143611, 0.9458040252412058, 0.634884806281132, 0.9994376333333334, 0.9499956040406791, 0.149970839972784, 0.7155719238507692, 0.5927133730649631, 0.1921626, 0, 0.19669587352049275, 0.9995766996049197, 0.9999547, 0.9998266307048833, 0.11068523161780006, 0.6376274310421411, 0.08381197571196701, 0.9916707212142555, 0.9990142315889147, 0.20042566940634446, 0.37729700246037345, 0.07896590688749072, 0.9435449415288745, 0, 0.648966782433266, 0.04224645303161692, 0.6210702666666666, 0.07228416666666666, 0.7881891, 0.1360132164274919, 0.9997979666666666, 0.9999623, 0.9997590020012125, 0, 0.7400217312205368, 0.9071800800347414, 0.09546433333333333, 0.7081210468689342, 0.08500834195071058, 0.4293722637420657, 0.3669764839724143, 0.3337904583774918, 0.9999059829573653, 0.9997206819892738, 0.5845321538572784, 0.2221166594132359, 0.9997363152168575, 0.5444500014611522, 0.13004486549227456, 0.9997117, 0.6006895266771998, 0.1075706, 0.3646674, 0.40797636666666665, 0.22353203333333332, 0.9940905666666666, 0.9246783848904878, 0.13208689435066454, 0.8410243333333334, 0.6299300666666666, 0.2811976105333142, 0.4555253, 0.9994876003582501, 0.9996390333333334, 0.02916905024423016, 0.49094302017157626, 0.2259995069847607, 0.10278771449934103, 0.9995849622686741, 0.4005156876995452, 0.7961111048829497, 0.5142855028617871, 0.11540733065760139, 0.8017312333333333, 0.9993850333333333, 0.6410093789919189, 0.13637092727953212, 0.5417045666666667, 0.005430736447474292, 0.7304020817086095, 0.5093199930051631, 0.16563628766981917, 0.3702957974081842, 0.5056273992776313, 0.04717603439635216, 0.5601269588585392, 0.9988143376952426, 0.251348289715238, 0.44307296979039, 0.4417293511906351, 0.5642801359495296, 0.08491176324802954, 0.9998520333333333, 0.5807000333333333, 0.9557601664692239, 0.5278635915883533, 0.07496941343598656, 0.06405196228407287, 0.9999312660817766, 0.18708093629868405, 0.0567801752776611, 0.9987121156052005, 0.11377462926332592, 0.24364026194108354, 0.999648231219958, 0.08006276666666666, 0.8142881809246604, 0.25742708217951277, 0.08201760280615626, 0.9995439991335984, 0.9160050666666667, 0.3213573, 0.9996574988809906, 0.9156945635009247, 0.18695418902780644, 0.42568465267010025, 0.07198421081009518, 0.9994730166947069, 0.24306698220341255, 0.4281217666666667, 0.7132755802708011, 0.6656659212881932, 0.34989003333333335, 0.2730150992444122, 0.9999537096381276, 0.41705542444221144, 0.7010405653104074, 0.5643392495217321, 0.14089696587473666, 0.07062073333333334, 0.2105726, 0.9998265306071379, 0.1836475923434272, 0.44142701352482006, 0.194145973557891, 0.9993973770402754, 0.9349610468883344, 0.2809784966363916, 0.4632317, 0.466578347089266, 0.2322064491358097, 0.896399929622438, 0.258661810708495, 0.25165731770357735, 0.9993124742900085, 0.20592724694457512, 0.04438170425361517, 0.618658997292641, 0.3869714190275427, 0.5849530593207509, 0.8779755041073835, 0.029551833333333333, 0.6730842334206019, 0.3329746774430323, 0.9998346, 0.7671224, 0.12222536666666667, 0.2448938611445923, 0.9390145302417253, 0.5645776689979701, 0.6572503040172545, 0.21786766666666665, 0.999442388826022, 0.21732874018943246, 0.5887350355394052, 0.0965639926965361, 0.4083703298096968, 0.6328889476149832, 0.333219266614715, 0.19164916666666668, 0.999568278423881, 0.28641015838985423, 0.9926755072191231, 0.0722792706639476, 0.6917204333333333, 0.11666979472121193, 0.6018357902516238, 0.9999297945319969, 0.952973433606984, 0.9159140626928197, 0.06070472571020511, 0.433266629766252, 0.9998751592779584, 0.9998794166292191, 0.08483690068212929, 0.44002206372796593, 0.06103143213487793, 0.5013743298388277, 0.5033434666666666, 0.02581627626043498, 0.9999653666343422, 0.6205277244821663, 0.5331850952788445, 0.5810606333333334, 0.14377273333333335, 0.036682120090268146, 0.9999453666156755, 0.8390391381549372, 0.7345054710768794, 0.16977563615656105, 0.5987789432477078, 0.4201410666666667, 0.4099120333333333, 0.840957361530201, 0.6518961113357348, 0.7530269253853333, 0.05269648465775274, 0.47814162970856117, 0.11459682219056036, 0.999495973022645, 0.9996210985475444, 0.9562858121912181, 0.5689051117810329, 0.246872714632445, 0.4212419001916918, 0.6184320445685767, 0.6763273755158368, 0.3266305666666667, 0.27698666666666666, 0.349784431163698, 0.7862514338346716, 0.5583205210879955, 0.13885762586756828, 0.6195984666666666, 0.6059651666666667, 0.18585355266083997, 0.9994649995006663, 0.9996659333333333, 0.3106047, 0.021248649306047356, 0.9996925997130931, 0.6024930944867886, 0.0863205, 0, 0.9999078665806754, 0.9999841154963922, 0.9996955, 0.21852302106340174, 0.4143076533538098, 0.3426970301671864, 0.17221362146542674, 0.32949416666666664, 0.051377036342655266, 0.043547340645429256, 0.999381962555666, 0.33950581172770894, 0.6279271333333334, 0.18124208377186343, 0.3389490666666667, 0.547777062365267, 0, 0.9998742437441184, 0.9990141981269764, 0.9993735871176359, 0.3680257427396044, 0.17327996666666667, 0.6305743666666667, 0.030134466666666665, 0.7561671, 0.9996868333333333, 0.9061966656226861, 0.07233020325252981, 0.9999881115975329, 0.24570650186851745, 0.3739311125354267, 0.6368919989217049, 0.519289752829978, 0.2979658333333333, 0.19557781506974894, 0, 0.9998076453130387, 0.9073704580836527, 0.07675236373775982, 0.3168990417772531, 0.7574372333333333, 0.015201, 0.9705696, 0.5087230333333334, 0.34606149571723455, 0.9998449665219687, 0.9993440588612663, 0.9995883325648874, 0.6039105419887597, 0.3507996605990384, 0.06651183725928926, 0.5040484977415683, 0.9995397488157641, 0.9518886339161221, 0.39675715790714905, 0.9994120966489509, 0.4877557737209487, 0.16170117261777836, 0.6324798, 0.3333472802858658, 0.10912593518420617, 0.9994427103398827, 0.22022516666666667, 0.9602599271521974, 0.3990012436944411, 0.07847664163464314, 0.8032492726043721, 0.058135503417366854, 0.8225252205477676, 0.8913692430434996, 0.9995674666666666, 0.496293, 0.5148249599066822, 0.18539082859012984, 0.7477284129326947, 0.2505817427719779, 0.8764892237231574, 0.35879063160112756, 0.668892824669387, 0.27576977819839266, 0.26859641401787554, 0.40123107920147755, 0.15041045943683004, 0.6154515414071193, 0.43012206589312024, 0.15182934046795843, 0.26707266804237473, 0.7622676536532106, 0.9999327004371669, 0.9999355737460176, 0.12539622364003367, 0.7552031431225108, 0.025272452814223252, 0.44554740426996914, 0.46542102170105154, 0.10877587265007578, 0.14298853830251498, 0.9996858832422166, 0.9999080090331993, 0, 0.0535011238624365, 0.9999224141820864, 0.6755017646316716, 0, 0.14903790585917073, 0.9467122354236744, 0.7357729773088085, 0.07807810666286719, 0.3542617611525478, 0.8071335869839162, 0.35353957355722176, 0.35732902867509186, 0.6829121162479876, 0.9692689207604872, 0.9999486821985654, 0.17153035213673523, 0.47972239245682335, 0.08835696246034705, 0.3939821922219015, 0.9993778052037648, 0.2158410615066762, 0.09938096027528953, 0.49260195150295305, 0.7724538453202308, 0.4847679648655531, 0.7785778885079947, 0.9995251219513908, 0.37467888064374005, 0.46321508677081435, 0.27315007591239004, 0.5842868199902311, 0.35156029281371615, 0.428560297584479, 0.6773638087031423, 0.04409439094109231, 0.5783720355731226, 0.2102504414766821, 0.3577429775968821, 0.9796221019523115, 0.9394641266575504, 0.40864643333333334, 0, 0.9996770663544975, 0.5092000333333333, 0.9998478180610032, 0.4315805694751982, 0.2088733, 0.2124417839313244, 0.4384930238765897, 0.6400807666666667, 0.6213836, 0.9996203292515141, 0.07696818035259362, 0.6237854628304013, 0.5484447420450099, 0.09238272058715581, 0, 0.9996036118038265, 0.5023645589065052, 0.999508, 0.4604879666666667, 0.8206972, 0.08549644605376183, 0.3295250523651802, 0.5355401960207752, 0.9525645749581783, 0.9998231269415038, 0.33428579444234036, 0.17778315574992926, 0.9518491692849952, 0.551042983823978, 0.19810530750428096, 0.5362816198201962, 0.15039829561689488, 0.3762411, 0.2670059686715922, 0.6136424630818867, 0.1381177282188649, 0.5482567333333334, 0.07816406666666667, 0.9525231054791671, 0.99862083204611, 0.5598495333333333, 0.3457374207419788, 0.2574722488898406, 0.3410153644849385, 0.2116292857159795, 0.33054608397342905, 0.49455275608539084, 0.06035755157892689, 0.9674876524185534, 0.9995861353056341, 0.6169829883109866, 0.19767789100899416, 0.999777153945251, 0.17130516666666668, 0.5518711333333334, 0.10003716666666666, 0.9996145763661785, 0.06080579211226571, 0.5485058, 0.9997653375187537, 0.6028511055481036, 0.5790881893500082, 0.9998733891981649, 0.8527599251980021, 0.2375892492600308, 0.8448669861738446, 0.1746015057768224, 0.17229520070339074, 0.29672853880611344, 0.5632553793681195, 0.9996802829140524, 0.8562138504603198, 0.11319595809457564, 0.316706275105053, 0.6108288212827182, 0.6895691914642162, 0.8800883283199517, 0.13234317145050117, 0.733952575334099, 0.5034602587491702, 0.9495173042652473, 0.09054445750778176, 0.7210310418681922, 0.18508208752718786, 0.38889277778615616, 0.0898994, 0.9548267117160093, 0.24883796666666666, 0.06362336154588288, 0.3488655256078239, 0.9998941632182683, 0, 0.9998900591004906, 0.9995375986898629, 0.6599729334928673, 0, 0.9999148494954009, 0.9997851989832752, 0.9996033107552901, 0.9996008310713761, 0.9996413333333334, 0.9994967, 0.998688586070965, 0.999661699684253, 0.9990083, 0.618890046130046, 0.014144079867807876, 0.451169254314466, 0.25872076666666666, 0.3352738333333333, 0.0961287, 0.9195981876302209, 0.08292627762233731, 0.10547046052614896, 0.9889383629207296, 0.29112200695197393, 0.11071949301708531, 0.288139002686295, 0.5865840480370781, 0.9996203333333333, 0.4916488666666667, 0.17730816666666666, 0.17189372088511098, 0.5690350977660913, 0.5717620259295444, 0.5375069033462195, 0.2073208, 0.2603429666666667, 0.15020517535373293, 0.6483082384210225, 0.9533009547965834, 0.10966070469998211, 0.4447817333333333, 0.6317016233018209, 0.16819001812805384, 0.6694390917418311, 0.3972129054636984, 0.8572548540514104, 0.2448513340863853, 0.49234201695516017, 0.1342581285513866, 0.9994973636640686, 0.9256859981414259, 0.12738496572234068, 0.5243119292379893, 0.9995798, 0.9998353392087374, 0.30790545404509045, 0.30883556666666667, 0.3388683333333333, 0.7054616833337755, 0.08186007640273797, 0.28517847628200055, 0.9987136309321111, 0.9993885, 0.17644546666666666, 0.999415, 0.1317697731835137, 0.2595664242979913, 0.6717836127553479, 0.9374779590365971, 0.07975810465486448, 0.0642910914593783, 0.34487938042016514, 0.9685625382965494, 0.9998567571276521, 0.3966516267856752, 0.30997851054253867, 0.9014678361804788, 0.060383065973913096, 0.9722712004632911, 0.21726788968908878, 0.20488029033850705, 0.5557311763005064, 0.1550204155325771, 0.9984742450400702, 0.4353129, 0.9994004812365942, 0.99996909997116, 0.6053346, 0.30599586666666667, 0.2425878537058104, 0.7165572687867842, 0.09535323476343227, 0.7227842825306607, 0.1612330450368292, 0.652252092972527, 0.2147535, 0.999525230279299, 0.3039715666666667, 0.05509873333333333, 0.663280293206316, 0.14770623241275185, 0.16197835665714994, 0.999001082447353, 0.7832550700939133, 0.06299893114482595, 0.6678849709443773, 0.3363866802006803, 0.5380083132873859, 0.9998370813528487, 0.9143304019457493, 0.9784967107645847, 0.14562483333333334, 0.18190573333333335, 0.5722125655702793, 0.14876967499022592, 0.41523047394726764, 0.4045926495977527, 0.34070305361653624, 0.8207686161499321, 0.6585276378099763, 0.20153500108631905, 0.7263008775621446, 0.15151653229103657, 0.9086602874265032, 0.432801984830283, 0.23395658528149504, 0.0744114493035955, 0.5326006546509418, 0.9998772360300485, 0.9999685, 0.39054126666666666, 0.323461, 0.398618, 0.5665597333333333, 0.24264883333333334, 0.9642139882929014, 0.3085940880211488, 0.996943, 0.6448765219236584, 0.2959894762568445, 0.4205717333333333, 0.9999614043553137, 0.05536345351800507, 0.22740858867479477, 0.6032087333437796, 0.39809955877333814, 0.2006670152676776], 'oldestBlock': '0xd1131b'}}), + (('0x400', '0xd11319', []), {'jsonrpc': '2.0', 'id': 18, 'result': {'baseFeePerGas': ['0xec26d1671', '0xcea1f73a3', '0xe872d8fd7', '0x10576e32b1', '0x11ea78c673', '0x1290cbf97f', '0x108a1e54b2', '0x129b556283', '0x10f4ab2686', '0x12ede92bf9', '0x122f620d5b', '0x107441ec71', '0x102b8d77e8', '0x10f7f21ff0', '0xf034d5964', '0xe8546d3bc', '0x1055a56cf9', '0x113db0e46d', '0xf6665eb21', '0x1152c8aaa0', '0x10d75d6a6f', '0x102b234bee', '0xec14c5d9b', '0x109970a429', '0xf3e1f53a1', '0xf63b7c32f', '0xee8a2e111', '0x10c558132f', '0x11c5326a81', '0x106a4c8cb6', '0x114b3ca346', '0x1034a960c4', '0x123ac8339f', '0x12a0af106e', '0x109d567bbd', '0x12b077000b', '0x11c19e9227', '0x11c33e9cd6', '0x10dcaadc2c', '0x10a4be17b6', '0xf95161353', '0xf26395f1c', '0xe58c11959', '0xf239da87b', '0x10d9b35a9d', '0x10e93536f2', '0x111621590e', '0x13383bfa41', '0x12466580e3', '0x10642c1aa5', '0x126ffdfb0a', '0x1060610608', '0x126600a168', '0x12ab7e1dd4', '0x1092fac3ee', '0xf8c746cf1', '0xfa451b068', '0xe6f22968a', '0xec8b85496', '0xdea30b595', '0xfa6eb4bd6', '0xe413345ec', '0xff451d848', '0x10db5e358a', '0x10e9e41bf8', '0x10a17c4360', '0x11de8dd080', '0xfa2bc1670', '0xeb2cda901', '0xe901524de', '0xdca7a18ee', '0xf8399fa4c', '0x11737cfe4a', '0x13a1ace900', '0x11b115e9d4', '0xf8769e3db', '0x1178137964', '0x1038233872', '0x123efb05ff', '0x10b42329de', '0xf666ddeb3', '0xe915b318e', '0xe1b2d5011', '0xd51026c05', '0xdcc6885a1', '0xf857d6659', '0x11691203ac', '0xf876ef5c3', '0xf86d3c6d7', '0x117750cea0', '0x108231e679', '0xfa48ab9bd', '0xe7eb88cef', '0x104e3421a9', '0x10a24b0a46', '0x117ce0df65', '0x113735e4ce', '0xfddd08fd4', '0xf0275cac2', '0xf7e7195ee', '0xdcc6b3132', '0xf85a0474b', '0x1176053f8f', '0x13a402fcd1', '0x13d6e73528', '0x115c0a4e83', '0x11d48f04e4', '0x116d63d0b6', '0x12483cdcdf', '0x12e0cdc559', '0x127ccfb204', '0x11537f3c18', '0x1067448be5', '0xf9671e57b', '0x1110ac2f97', '0x12012404dd', '0x10d7c07263', '0xfeae60370', '0x10166db6f4', '0x1014bb1b0e', '0xf27b3344d', '0xed992d655', '0xf109b560a', '0xfc6c17216', '0x11493053af', '0x105604ecc1', '0xebe2598be', '0x10956c74ef', '0x121f7be7c0', '0xff394d155', '0x1136928a63', '0xf3def19cd', '0xdef0884e1', '0xfac5f79dc', '0x1169687330', '0xfab6d91af', '0x105e36b7a6', '0xf39330b78', '0x10b24fa3f8', '0x12362dfb10', '0x1100a1247f', '0xefe20637c', '0x10ddaf5891', '0x115c893326', '0xf7627f190', '0xe8f1cd0d6', '0xf4e65e3cd', '0xda86a75a7', '0xf5d5f748a', '0x1149007aeb', '0x1371fcdcd2', '0x11f3801164', '0xfb5100f38', '0x10f07b4812', '0xf9f17ca54', '0xe5cbb99c2', '0xf000d3017', '0xd5ee5f2b9', '0xed6ce1ec9', '0xf6f4e6208', '0xdd3f4ff31', '0xcb664aafe', '0xe4d2324cf', '0xe08f7240e', '0xe221859db', '0xcecd544e6', '0xe8a43273c', '0x103c60499c', '0xfa928e7f0', '0xe8bdb9457', '0xeb193034c', '0xe8a6faf23', '0xee4d2871b', '0xd350ebf50', '0xed0c6e56d', '0xd5fb702be', '0xc032b3c3b', '0xd832a973d', '0xf2e43fd50', '0x10efa61abc', '0xf32b06eb5', '0xe4a15d730', '0xf52985e21', '0xd9478f231', '0xeb666cfa3', '0xe800c8d15', '0xea179b8c2', '0xf5c60dbc6', '0xdd9e4f9f6', '0xf8e9fecfd', '0xe0434fdf2', '0xcd4a7d151', '0xddb3fc94c', '0xf3458f4f8', '0xf0641964e', '0xd8b98184e', '0xc9503ae3b', '0xd6413d6db', '0xef98b89c5', '0xe8e2710ad', '0xe617fcb1a', '0xdc58233d2', '0xf7dfbe1d2', '0x10651def12', '0x1254df72d1', '0x120d928dc9', '0x1041cdcb9d', '0xf04d0d015', '0x10e10bac12', '0x125cf7894a', '0x105c556679', '0xf86acab86', '0x1176eb4e1f', '0x112159d537', '0x10f5b8b87e', '0x112d173d63', '0x102f3962d4', '0xf029ca65e', '0xf06659f6f', '0xe8c105e42', '0xd80f7ac41', '0xf2967177b', '0xd9698c7b0', '0xe783f2c62', '0x104449d986', '0x124c59169e', '0x1060b9f6af', '0x1025926225', '0xfb5f981d5', '0xed0d30ec2', '0xece1cf8dc', '0x10a7ad9281', '0x10df5383b6', '0xf010c55f9', '0x10e0ae5def', '0x1048f53574', '0x115b141631', '0x10408dde3b', '0x1029ae2bfc', '0xf1eee5cef', '0xe8003e9da', '0xf859f4345', '0x1175b5cb39', '0x119ade175c', '0x10ab5ce819', '0x12424018b1', '0x148a047618', '0x128630afed', '0x1351df74ab', '0x128c30c56b', '0x104fb66702', '0x11f348d484', '0x1121082a13', '0x100baacd11', '0x1209d47d48', '0x113c873c84', '0xfc2236877', '0x10a558735c', '0xf7946fc89', '0x1032b04eb1', '0x12360b6183', '0x109174d751', '0x103aa718cf', '0x10e925c3b5', '0xfda5d9459', '0x1179f99a9e', '0x13a90b526f', '0x161e0621ab', '0x140a18d2d5', '0x12627b4db1', '0x14acee683a', '0x12850b2e5c', '0x10c3ba2121', '0x103cae8ab0', '0xfca5207cf', '0xf6ef87b15', '0xe6b8a4792', '0xf406b150a', '0x11257ef452', '0x116a13cd7c', '0x10b6849dc5', '0xf7e6be948', '0xea81286bf', '0xd4e0c7b4d', '0xef7c5af0f', '0x10d685997d', '0x12f0ebcfbb', '0x126f72fc88', '0x1114c774d2', '0xfc3a3a7a6', '0x11bb820abb', '0x123f201af4', '0x1039958516', '0x104440df58', '0xeadae1f47', '0x10830aa08b', '0xf34e23e5b', '0x111b238a9c', '0x12366651d8', '0x1193c524fb', '0xfe5354a91', '0x10994299ed', '0x12ac56f4bf', '0x11e3d46dac', '0x127c797884', '0x11f8531bbb', '0x1054c25f32', '0x11fa3c866b', '0x1055c7faab', '0xef098ee92', '0xf4b7042e0', '0xf20814cdb', '0x11046697f0', '0x1187644c82', '0x10552143bc', '0x10c342061f', '0xf0da50327', '0x10eee505bd', '0x104e32e251', '0xe446c8607', '0xf9cb9edab', '0xe9d198be8', '0x102e630d0a', '0xfb7de492f', '0xee7115b4f', '0xdb2e62afe', '0xf116cb91b', '0xef4f2aa0c', '0x10d36f493f', '0x11708dff20', '0x100c404853', '0xf7f0f1e84', '0xf1f305956', '0xe55803dbb', '0x101f7b41c8', '0xef806438f', '0xdf69c55ab', '0xdc8b2d93c', '0xea4d2990c', '0x1079320025', '0xfe7461893', '0xf01ec7fde', '0x10e1d6c3c1', '0xf77d09368', '0x1007ad0988', '0xe82d2dad7', '0xea802c8ef', '0x107c8d1708', '0x128beee812', '0x14dc91f996', '0x12f61f5ca6', '0x1237f519ba', '0x1092b7a8e1', '0x11cdc2d900', '0x104efdeb80', '0xf7c1cb007', '0x1077ac4da4', '0x1286259432', '0x13c768653f', '0x1296e6aa12', '0x110deb5884', '0x111269d836', '0xf2ce2b799', '0xe4fa6f9eb', '0xfc3b2b275', '0xe3a62f9de', '0xe216edfc9', '0xfe2ac2d18', '0xe6082af3f', '0xc94725958', '0xe13f94bc4', '0xd67f60a81', '0xcd351cd0c', '0xe6d2b2e80', '0x103ac70357', '0x10f3c6937f', '0xf907ad90f', '0xd9e6b7dee', '0xf450bf063', '0x112da86f4a', '0x12550bb5f8', '0x1099adf393', '0x114924c988', '0xfc34f65f7', '0x104146eb72', '0xe5645dace', '0x101f556efe', '0xfa62c2674', '0xdb166a1a6', '0xe5fbd140e', '0xfdd9f38ca', '0x10f84e122a', '0xfb6fafa84', '0xf69b529c5', '0x115678e756', '0x1380f72754', '0x1442dc6900', '0x15bec0f42d', '0x14e860f572', '0x150f11798d', '0x12b583eeea', '0x105ed3710d', '0x126a7e7f09', '0x13d29c9080', '0x11f218efa5', '0x10e36d07a4', '0xf64152724', '0xd77928240', '0xf2635901b', '0xef8a582cc', '0xe7a643ed5', '0xd25786ca4', '0xd9c850dfb', '0xcf3bfac42', '0xcc321d0c8', '0xcde44dbdf', '0xb95e1c94e', '0xd081d19f0', '0xe59245c3e', '0xd24dccd9b', '0xb8a11f126', '0xcfb40163a', '0xe9a8cea81', '0xdc8fd36bd', '0xf3ae81602', '0xf09d374ed', '0xdbd087555', '0xf08e6e9f2', '0xea6273a19', '0xe45414233', '0xcde9e1ade', '0xe69db8ae9', '0xdff195611', '0xc898af94b', '0xe1a441ad4', '0xf3816715f', '0xd5113a334', '0xde2fff5dd', '0xf5f8424c4', '0xd7393a02c', '0xf21cbf475', '0x1105afa671', '0x11cee12a0c', '0x11721cf8de', '0x10c5b143e1', '0xfc357104d', '0x1151456f67', '0x102136d467', '0x11b7d770d2', '0x13286bd01a', '0x10fd0c0086', '0x10b12bc14f', '0x12678cac9d', '0x14b43e6ab2', '0x132c03a3f0', '0x11b50ef5bb', '0x13844819cd', '0x1397ec2606', '0x11c40ed6a5', '0xfe4d0d2d8', '0xffabd3492', '0xe02939e95', '0xec56b1c61', '0xd678dead9', '0xdefb7890c', '0xcc510142f', '0xe5ca1b7e3', '0xfb6a04d0e', '0xf0f45b700', '0x10f0a7331d', '0x130e9a0d5a', '0x11dcef9d50', '0x13a51108b0', '0x148b89db9f', '0x171b0f5728', '0x1517c62dc6', '0x1357ee6122', '0x141dd95479', '0x11ac43311b', '0x11aaf747be', '0xfd25defc6', '0x11cc0ce7bc', '0x10193512e2', '0x11d8777cfa', '0x1413367a20', '0x150ca3bb9b', '0x174c0b8711', '0x15e0ada207', '0x150c200838', '0x14fbdcbe85', '0x1299eea23f', '0x14ed2849a8', '0x130cd4e1d9', '0x125473739d', '0x1161d8e3ce', '0x138d64416c', '0x13f7302d53', '0x146367cb26', '0x12b3d2b79e', '0x123bfefa30', '0x10bbc4adfb', '0x12bb0cd56f', '0x1234870d77', '0x1272a7d796', '0x111438a670', '0x109232467d', '0x12a452c947', '0x112409f37a', '0x101be198a0', '0x121f54250d', '0x13eee26688', '0x12f6594821', '0x12839fadf7', '0x133ab02163', '0x11e1269883', '0xfe028b4ba', '0x11ca78c256', '0x1167967258', '0xfb435ad10', '0xf59aa0d48', '0x10d54a6167', '0xfa04f0eba', '0x118bba0f51', '0x113db1c320', '0xffd3c2031', '0xfc2a0112d', '0xe94038263', '0x1065f949be', '0x11fa0804cc', '0x13baf87f63', '0x12070d0faf', '0x1447354876', '0x15718e59cc', '0x134af59467', '0x11dc6e644a', '0x139c65ef65', '0x1425e959d5', '0x1243d3c36e', '0x10a8498c7a', '0x1086c9886e', '0xf24d0b0ff', '0x11096073da', '0x118d612885', '0x1005f87285', '0x12062caf03', '0x1446978052', '0x13cf8bb59b', '0x139bb2171d', '0x1180bf2c3f', '0x13b0c6c307', '0x11c03c6f8b', '0x10d0cdbe2d', '0x12eabecbbb', '0x11d7e5c3b8', '0x106e61946c', '0xfe4f6530e', '0xf26503d8e', '0x10a46bb95c', '0xf186b7740', '0xe553336ea', '0xecb1ff5ed', '0xf814b3b73', '0xde98de795', '0xd6b2bb97e', '0xce9778435', '0xe8625fbac', '0x1056c37db5', '0x100cec35d2', '0x1138613e8e', '0xf34549984', '0x11142c6878', '0x1336a16007', '0x15622ac2b8', '0x13a73252f0', '0x1452b0631c', '0x161bb59a88', '0x13c9246765', '0x120757d73b', '0x13c4fa3354', '0x12724faaff', '0x1369ee6199', '0x15d6c095d4', '0x1771515f27', '0x1782cd5cd2', '0x1a212813d7', '0x18b57bd377', '0x1b5bc61a78', '0x1b8db5c097', '0x1a59bf2bc6', '0x171dfa71ec', '0x19a7ef4cdf', '0x18c7c8fcdb', '0x190ef21c37', '0x18ed4b7515', '0x165dc88473', '0x13920f73e5', '0x14ad9f6b0e', '0x16e1dc5e5c', '0x1724a9de5e', '0x14e6b958df', '0x1523cb848c', '0x14385ad776', '0x12f0f733ba', '0x1265049257', '0x11cb01af4b', '0x11db635b0d', '0x10109a357b', '0x11aabbe8fb', '0x1095a6cbe0', '0xe82f1f264', '0x1052b2214c', '0xee05b0306', '0x10bc4d20ee', '0x119e434839', '0x114cd46a42', '0x101665b587', '0x11afda6387', '0x1028295321', '0x105c7ebab2', '0x10d75a96f3', '0xfac9b7cae', '0xeeeb21a9b', '0x10c70973cd', '0xecbfe17dd', '0xcf27e54e2', '0xe3f2fc139', '0x1006849147', '0xeaf19faaa', '0xe661266c4', '0xe1b302f7c', '0xfde6a639a', '0x1145c105c9', '0x130ed264e6', '0x12ae2817fa', '0x120ef3aa62', '0x14507e2dc5', '0x1290ee7358', '0x1488444003', '0x171866755f', '0x168bbb681c', '0x16513551f0', '0x15ff9b4ba3', '0x186c1672d0', '0x15dbf8163c', '0x14ab096c11', '0x154ec1c825', '0x1438d0afd8', '0x12e6e0f44c', '0x11fa2b6113', '0x13df5f5936', '0x1604d9ed87', '0x17a4ff2952', '0x14b05f4428', '0x133a4fe8b1', '0x117af8d2bb', '0x13a7ee5abb', '0x117cc6392f', '0xff264fd22', '0xdf4185d7e', '0xfb21d13b8', '0x1100e36dee', '0x11e81a6da7', '0x100c929ef8', '0xf436f4aa6', '0x10d4e42e17', '0x128f6ffc71', '0x1069e825c9', '0xeaeffc136', '0x10845fee1d', '0x1294d539c9', '0x138e46860f', '0x120d3aaf2a', '0x1044dde872', '0x1064078dc5', '0xf349d498d', '0xdfcf889b1', '0xd6befbbbf', '0xc9804954b', '0xbcf6176ea', '0xd49014f23', '0xd6192df5e', '0xc63fb1096', '0xdf035e852', '0xfae1eb218', '0x110f4250f2', '0xf47a31b1f', '0xfc269965d', '0xee4a27774', '0x1009e65be5', '0xf2dbde83c', '0x1099dd6313', '0xefdf5e000', '0xd93314e91', '0xef15fee78', '0xdcdc18613', '0xc14095551', '0xd963a761f', '0xc6b025b59', '0xadda20fee', '0xc3727bc4a', '0xdbe03977a', '0xecb9e44a2', '0xfa6b51f48', '0xe1fcaa238', '0xe8751c7ce', '0xe1d10167b', '0xdb4111199', '0xbfd8eef66', '0xd7d2a2cc0', '0xc47728b7f', '0xc5da4e5ea', '0xb8020b7e4', '0xac423d8cd', '0xc1c9b41c9', '0xd55300f34', '0xbf9568d1f', '0xd510ff866', '0xe1aa6ac4c', '0xeedbb03e7', '0x10cb4211b2', '0x12967d5dc1', '0x10a09709f6', '0x1205287a82', '0x103b387a4a', '0xf1a37f7b5', '0xfcdf36409', '0xf693ff5c5', '0xdf41edffe', '0xfb29f9649', '0x1183451feb', '0xf9b385ee6', '0xde7d2151f', '0xc5bded38c', '0xde7475cbf', '0xf52abfcb9', '0x10fa0b7143', '0xf44c82d32', '0xe8cc9576a', '0x105dccc0ec', '0xfe20931ea', '0x100bf5db77', '0xe8896e6f2', '0x1056f670a2', '0xf6c29a8e2', '0xe3aaa590b', '0xda686af9b', '0xbf1b5d9a8', '0xd6fb566a2', '0xe3a317860', '0xd2b3f6d09', '0xbd834cd30', '0xd52cc80d4', '0xe73bf3c81', '0xec1aac378', '0xd70971e33', '0xf1e66a41d', '0x1101996cf5', '0xee1663f57', '0x10bd7db42e', '0x10d56ad60e', '0xf3613c14d', '0x1007a9a6d4', '0xe459c1b31', '0x100db1d0f3', '0xe773c4323', '0xe27ad2fe4', '0xe42b7c54d', '0xe3cf796ad', '0x10040b5ce6', '0x11ffc93231', '0x103d743bb5', '0x10ba012ab0', '0x10531250b2', '0xf78920f8e', '0xd897fcd9d', '0xed8485470', '0xd6ec52035', '0xd07c57152', '0xe66731df1', '0xcefe99aae', '0xe8d947aed', '0x105f38484a', '0x11312ec843', '0xf530a8fda', '0x113d295300', '0x10b28cf38f', '0x1187cc304f', '0x123ab810d0', '0x101f9c5a48', '0x12237f23c3', '0x11b1dc0543', '0x10f8eda4e4', '0x11b3fb2105', '0x13ca92aadf', '0x13733abdb1', '0x11b2bb64e0', '0x1117fa2460', '0x12ea036d43', '0x10dcbb395a', '0xec123d22f', '0x1098ee1f6a', '0x111e1b3f91', '0xfa5102012', '0x101f1da614', '0xe77de1d8d', '0xe419a1655', '0xd4736cd6f', '0xd3329bda3', '0xe4dd0163e', '0xe2ec46113', '0xff498112b', '0x11c81d6401', '0x1252689d25', '0x1012892ec2', '0xf335f9416', '0xf5e7a15e3', '0xde1bad4b9', '0xe3e53b367', '0xd50e19988', '0xd18f40f17', '0xbf8282045', '0xd76be0471', '0xc9ffd76dd', '0xe27156e6c', '0xccce085e9', '0xc55d3bfd0', '0xb1f97c187', '0x9bba4c957', '0xaf2ef8997', '0xc514c99c3', '0xdd1b0adee', '0xce4f4bcd9', '0xd2342c96f', '0xbbb1d665d', '0xd324ff89d', '0xe6e02ec68', '0xd734f2e01', '0xc42462f18', '0xb0b780f49', '0xc6063924f', '0xdec3b3317', '0xfa99eef07', '0x10e88089cd', '0xf4c4924f2', '0xe42f648ff', '0xc8729d4f0', '0xe1786e82b', '0xd3accd4d6', '0xe17001d83', '0xf888cbdb2', '0xee65c0cf8', '0xd726b7401', '0xce7abc530', '0xe84322922', '0xd5c8b5e3f', '0xc52ffafa5', '0xc85059f5e', '0xbe1d394f0', '0xd5d91defe', '0xc602e1ff0', '0xdebd9a589', '0xdf3e7acda', '0xd26928f28', '0xd32b7ed1a', '0xc39b2e52e', '0xb0fc671e1', '0xc71692d78', '0xbf40cab45', '0xc1257c76a', '0xd9478ce8d', '0xc675e664b', '0xb8a3aa237', '0xcfb79c037', '0xb5c0a8831', '0xcc7601fbc', '0xb2e741bc5', '0xc910bcab4', '0xe2310ff38', '0xfe6e91568', '0xf2dc2d989', '0x10991b010c', '0xea30a2ebf', '0xd1e90445e', '0xec2005586', '0x104f15603e', '0xe8b60f2b4', '0xe73d828f0', '0xdde02c939', '0xe5f938cbf', '0xe7af7068a', '0xeedcd5eda', '0xfd02116b4', '0x113daab721', '0xf8e3b9b05', '0xf723a0c7d', '0x11009c01bf', '0x12f4627570', '0x12317a1edb', '0x1177c5d1ca', '0x12e7e0757a', '0x13ae6dc082', '0x1138a00872', '0x10503c7aae', '0xed0aabc9a', '0xe8d1c81d9', '0xe33fdeb2b', '0xd735b244b', '0xf2134ee1c', '0xe7d65eefc', '0xf4dbb8dbf', '0xdea47a67d', '0xf65d78704', '0xf689ad953', '0xdc86d037e', '0xf813b7923', '0x1171430f6c', '0x139e690431', '0x133f5ccf71', '0x1135542885', '0x1184227c44', '0x1063b65180', '0x122458fb02', '0x116a1f0681', '0xf4ac0a7f2', '0x1133a72d22', '0x117faf6c64', '0x11d7d69520', '0xfdda3d72c', '0x11d8f6af5e', '0x13ca7281eb', '0x1639e8ca58', '0x1900d5d97f', '0x1c20b5fe24', '0x1fa45ba10e', '0x230f531219', '0x20adfda0d9', '0x1e0d8b6af4', '0x1ae1930c9a', '0x1b620334ab', '0x1822e8c557', '0x165ad19f59', '0x1926132d53', '0x165d7062b9', '0x13b689c717', '0x162cb7d954', '0x18f15be822', '0x1ab460814b', '0x18221349c4', '0x19ca3f6593', '0x173b53f941', '0x167848f0aa', '0x145b62f3a9', '0x132c015140', '0x13cbfd4e4f', '0x1196da70ad', '0x138c1ea6d1', '0x11b4ebce90', '0xff74b42e3', '0x10771742f7', '0x12851a9410', '0x14d50dab01', '0x176f80494a', '0x1a5cfc7038', '0x196c85e0b7', '0x16de9f99cb', '0x19b19c9b1e', '0x1841becb67', '0x16db8ec8a4', '0x174d9300de', '0x15ec777924', '0x18a9897d85', '0x18f16f6f83', '0x1791aa79db', '0x1819f10294', '0x1b1c7d9011', '0x180e22c429', '0x19bf8b04de', '0x170295eaae', '0x18cb13d078', '0x1810c3d53b', '0x15c8c5575a', '0x15261b4c79', '0x151cfaac72', '0x1600d92034', '0x18c0486a53', '0x17f5ef349c', '0x155ec2cc18', '0x14cd3b4afa', '0x156890e59e', '0x1384978878', '0x14464e228f', '0x13d1fc134c', '0x12ab294ef0', '0x13de5d1128', '0x15a3169285', '0x13af6f5029', '0x1201ee05a8', '0x1441ae2102', '0x16c972b086', '0x1871193fef', '0x1562f617f2', '0x17d5db79f1', '0x153e053022', '0x1296448a1e', '0x14e8ab8e5e', '0x1470b9d4c4', '0x15cc6d2664', '0x14de7041c4', '0x141a97a7e0', '0x1699c1257c', '0x196cf214d9', '0x1a03945a36', '0x191dd42ccb', '0x1ab96117e8', '0x17bd562b64', '0x1ab4e2346c', '0x19a2a0d4cd', '0x1692b3ac68', '0x171c1081e0', '0x182f7ac4f7', '0x158267475a', '0x134ed42abb', '0x15b7ed69f8', '0x143d0f9536', '0x134e9dff1a'], 'gasUsedRatio': [0, 0.9997456363236673, 0.9993065542187649, 0.8853691748666134, 0.6450570335849587, 0.06347530059539615, 0.9999529957676132, 0.1450679132175194, 0.9655893248270077, 0.34273105171735396, 0.1192575301831437, 0.4309587289177857, 0.6975026851323247, 0.038996406404620126, 0.36883624127171344, 0.9996878479731284, 0.7219650163800174, 0.07288095543057382, 0.9995798869308267, 0.3886809798875125, 0.34021113333333336, 0.15032372445025902, 0.9999781999796533, 0.17306973079053237, 0.5385384656233624, 0.37503513616517675, 0.9996104057891729, 0.738371667747608, 0.19498096449031627, 0.7141093178899569, 0.24830780353877668, 0.9995542666666667, 0.5873422269820188, 0.06772473213390773, 0.9994919666666666, 0.30031585843576253, 0.5014300916342094, 0.29717197570051473, 0.4481777182043313, 0.2449681, 0.38883456666666666, 0.2880784419318798, 0.7209367062075924, 0.9521446245608666, 0.5143795499276754, 0.541506341893943, 0.9993943838984203, 0.3033932733119417, 0.08770128182029849, 0.9993311, 0.05286949372729137, 0.9938708688607407, 0.5590149838527424, 0.05098741174847811, 0.2525090454815518, 0.5239814915268439, 0.19114949403658574, 0.5969760618366178, 0.26481242895744034, 0.9993880971036596, 0.14289886666666668, 0.9769477, 0.7262783666666667, 0.5134617, 0.43311086723814196, 0.7978927712963456, 0, 0.26023256666666666, 0.46309053333333333, 0.2879814666666667, 0.9997903, 0.9994325666666667, 0.9997771509454351, 0.10475773459914345, 0.01100772635225178, 0.9997340661613924, 0.21383448232417263, 0.9998321328577098, 0.16187553333333332, 0.18784147280180905, 0.2838155666666667, 0.3732443602155828, 0.2760646455514141, 0.6447914178122103, 0.9994683716035915, 0.9868068242959354, 0.06775469648861981, 0.49939006930053964, 0.9996326485067424, 0.2807171321400633, 0.29021031407672515, 0.20651225158695266, 0.9996147322417414, 0.5805801481584298, 0.7053266430545072, 0.4377531575745014, 0.18651751380969575, 0.2839836667154651, 0.6290668423076411, 0.06230315096261442, 0.9996093651822544, 0.9996890691091442, 0.9993186666666667, 0.5404863515889933, 0, 0.6084764117941013, 0.4095914654653872, 0.6962149433672572, 0.6303916861097774, 0.41723853333333333, 0.24872076666666668, 0.28696478778193574, 0.30108641434732003, 0.879133327552127, 0.7201749776599583, 0.24191374701295257, 0.2802718992730529, 0.5427299802273026, 0.4983511104558494, 0.2696902016483358, 0.4194510429982641, 0.5579057040271194, 0.6889213765620716, 0.8827249416625992, 0.28019510433869793, 0.10987996223290754, 0.9994790236100334, 0.871280085577883, 0.020720247292211728, 0.8163802083359426, 0.04192202949885106, 0.1566823416297504, 0.9993950333333333, 0.9436627, 0.09978534038488585, 0.6782763997246397, 0.22028696204939002, 0.8870591520790556, 0.8629764027791458, 0.2344159308451374, 0.027179651271812193, 0.9997838325191025, 0.6175175985846393, 0.06226709265533548, 0.26651403690634584, 0.7052907398045009, 0.06922992635166751, 0.9998913205716163, 0.9999566395207333, 0.9998740199136709, 0.1926569539531535, 0, 0.8137666405586059, 0.18879043333333334, 0.17756676060840076, 0.6776780727765981, 0.06547116254568298, 0.9392849214277124, 0.6605778647354527, 0.08358158508392065, 0.17732513890771287, 0.9999322330735602, 0.42551834982227577, 0.5279765693720347, 0.15809407104525003, 0.999788565454442, 0.9665053333333333, 0.3583224018253825, 0.21534977712159314, 0.5405134025581535, 0.45838125191832985, 0.597125754708781, 0.047039200892676734, 0.9870894016038626, 0.11077378161014016, 0.09278618757563803, 0.9994814873447844, 0.9938753076009568, 0.9625347605151547, 0.08948736666666667, 0.2608609974306577, 0.7892331356964218, 0.04507389155987005, 0.8335900291131924, 0.442276371277537, 0.5360194032556227, 0.6996039, 0.10687005861223485, 0.9926602055652771, 0.1038615347583929, 0.16161209508837426, 0.8197822416118598, 0.8891446924241737, 0.4526339279145352, 0.10620191766891489, 0.21556100855169463, 0.7571402615975668, 0.9731136610726602, 0.38794446584265324, 0.4520648666666667, 0.33051404696686315, 0.9997580331074976, 0.7331154333333333, 0.9724727863425301, 0.43922667661156484, 0.1020674, 0.19533574535533949, 0.9954514957547294, 0.8516939, 0.06380603993132627, 0.29594834288512, 0.9994066, 0.4234446, 0.46020446666666665, 0.5510113, 0.26905946343395676, 0.2097794, 0.5039400641392987, 0.37278169472020684, 0.213112910451254, 0.9911069986350008, 0.08488625270965112, 0.759472385171758, 0.9967722, 0.9995422666666667, 0.08020063333333333, 0.44356452590711837, 0.3920089666666667, 0.27210179259952655, 0.49714061390259345, 0.9997896610673713, 0.5522067491928234, 0.05708088126756552, 0.999481265196918, 0.35953763333333333, 0.7630111666666667, 0.24564995615115173, 0.47800886207523335, 0.24212676666666666, 0.3357854333333333, 0.7819027280139056, 0.9993811660890883, 0.5332526188847853, 0.287431403205286, 0.8813947272212891, 0.9995599321011432, 0.107588027622117, 0.6718047414043679, 0.3401233669283754, 0.01772954210511585, 0.901916542414132, 0.31698403995694063, 0.2469895706314432, 0.9967908268116191, 0.32216601280370294, 0.15698580810140064, 0.7252844652381524, 0.21833476666666668, 0.6872238407471563, 0.9971250973167575, 0.13913853197243425, 0.4181378471906481, 0.6679993816617051, 0.24980573278938514, 0.9096323362802525, 0.9998411561481154, 0.9998801491809037, 0.12421424235567398, 0.1697019001047971, 0.9984186723774858, 0.08292479322818114, 0.12091333564680107, 0.37413432813017816, 0.38994934802773457, 0.40960655500642146, 0.23735013702788038, 0.7306659294995528, 0.9969524854735141, 0.5624959585342444, 0.3388907861199724, 0.2082199872788382, 0.2838362279003166, 0.1311120061802563, 0.9999616248320001, 0.9997683720394822, 0.9996139966803714, 0.39319523333333334, 0.2061775343044184, 0.1916013, 0.9994189666666666, 0.6159750666666667, 0.056816566666666665, 0.5102748333333333, 0.10946349109905823, 0.9996288421417836, 0.1837904266486584, 0.9996348201370611, 0.7587365812043837, 0.3604756213475938, 0.11725873333333334, 0.6769896862380552, 0.9999265666666667, 0.3322212333333333, 0.6333191, 0.3883037880176674, 0.13518628384091763, 0.9032541787734671, 0.1345644, 0.15834292186319943, 0.5950072605063257, 0.45613932765480497, 0.9998269954496798, 0.6202745306098998, 0.22700235074007213, 0.6053571333333333, 0.09208853333333333, 0.9995271666666666, 0.35171877994471734, 0, 0.8770672228097404, 0.244164124648923, 0.929057923151283, 0.38555523255494184, 0.29243803333333335, 0.1768930694156177, 0.8998125941713288, 0.4704706693969799, 0.9998623997385595, 0.6459058333333333, 0.18077123333333334, 0.36252830889363463, 0.4033337343383441, 0.29160105241339657, 0.9992292280156478, 0.2136684865806038, 0.23130255748724482, 0.4486242737077179, 0.7495243078075167, 0.9997544145866903, 0.36159379267709835, 0.27466513236550644, 0.9996611990400639, 0.1649350597351673, 0.6453210973761334, 0.1209717512420175, 0.5400419654106824, 0.999508384276932, 0.9998229656634721, 0.9992799666666666, 0.1356586, 0.3432960047846611, 0.13872739795530858, 0.7970206797595386, 0.16407256666666667, 0.29795906666666666, 0.7538384333333333, 0.9995394333333333, 0.7709836, 0.2594452, 0.16968699935487003, 0.5041174705096392, 0.05562296666666667, 0.2722111857770887, 0.9062020426619746, 0.11016765187411856, 0.47259649793334607, 0.9967494333333333, 0.120169, 0, 0.9763651446074683, 0.3090855, 0.3267561106754079, 0.9993106993566527, 0.9999594937411658, 0.6781065754752365, 0.17252149503073808, 0, 0.9848833586295893, 0.9999800276606879, 0.7686773739426656, 0.12210787930565803, 0.6651552333333334, 0.14761953333333333, 0.6248646333333333, 0.028025500234312137, 0.9981219338897483, 0.3825767226605099, 0, 0.698936061845862, 0.9151200808005483, 0.7783941792468697, 0.20414177675938694, 0.4231686726264592, 0.9995449433183067, 0.9997153335428354, 0.6553349691948375, 0.7929654373839364, 0.3459604952757523, 0.5289138672778163, 0.05366701543737905, 0, 0.9998233324912182, 0.8055406959210836, 0.12124062844626976, 0.26433106666666667, 0.14533378510782446, 0, 0.9996407822099175, 0.4530064366710331, 0.3682320905517989, 0.13207214527348313, 0.6414950333333334, 0.30626193144272046, 0.44135064588414225, 0.5332241087922074, 0.10126266936869938, 0.9993208791061841, 0.9040969680452591, 0.16428793931983052, 0.011668099076659156, 0.9998936625232866, 0.9998721995143581, 0.27578331705237313, 0.9192900086849867, 0.4496468234396138, 0.15422544575170746, 0.8774419666666666, 0.3973746, 0.3966460085060272, 0.10732297041220473, 0.9798614458308771, 0.3842680333333333, 0.08297986316971856, 0.9994146327869906, 0.8166765333333333, 0, 0.6712171931360469, 0.9281478, 0, 0.9997362330783587, 0.9996539283932068, 0.6846791011070988, 0.4186059868548619, 0.34557423982370905, 0.25931918455683706, 0.8944461675974749, 0.22565896666666665, 0.8939028961781179, 0.8250374367016076, 0.04704194703376237, 0.4302137073704946, 0.9103543704575391, 0.999788280367208, 0.20399128114949752, 0.19441345003042237, 0.908751145017752, 0.5157243429751638, 0.12689655057133878, 0.0785082340984615, 0.5215525772092993, 0.007020678050900075, 0.7173011012229124, 0.12991237688969717, 0.6587182433960191, 0.165159391949083, 0.9986981296447006, 0.8764254793527795, 0.33358745651275284, 0.9994519294113376, 0.9998772933395567, 0.2493824690580554, 0.8989826626075237, 0.683311926237455, 0.9985391135554404, 0.15154314961788168, 0.16825059340892765, 0.6598711846337123, 0.0140933379125031, 0.4988536929634229, 0.0820450518517528, 0.9993952188624383, 0.11822802436412842, 0.9341052480258891, 0.9997265659833655, 0.6941361761680962, 0.927124804296769, 0.25629507351850156, 0.3481947231399479, 0.4879269, 0.045833389638315146, 0.9999862999872133, 0.14135770106227497, 0.34877018149779854, 0.2931965552517033, 0.9993828947935318, 0.5845460865577548, 0.5846904656802571, 0.1692478988506362, 0.39989011172698763, 0.17075573762866433, 0.977413140624263, 0.38778211332336343, 0.5533227725460058, 0.20318873878387406, 0.3810445246575323, 0.9998608380556518, 0.17790572307869365, 0.2592021, 0.9999634333333334, 0.8996747657420805, 0.30518028483493254, 0.4054662, 0.6544968504921611, 0.21922880089733995, 0.05169337139309366, 0.9825723666666667, 0.41315433333333335, 0.10913976666666667, 0.4099097666666667, 0.8864210568286599, 0.21319480380334438, 0.9913800409440214, 0.43051008463582746, 0.20957706666666667, 0.442725378667731, 0.19998545998594466, 0.9994194658805827, 0.8850024148379215, 0.8902097478839963, 0.15478344168560562, 0.9993722281950845, 0.7298870562061774, 0.0988041577158088, 0.20315359492701598, 0.8918851140700961, 0.6095636942368827, 0.1261399027821424, 0.1479425920900151, 0.4685761524965874, 0.16533695281523927, 0.9999583853933398, 0.6210652175366573, 0.1515682461180018, 0.9994712159710394, 0.9996925991290309, 0.4082601240592077, 0.4591051112660895, 0.07053260978403796, 0.9999431330641632, 0.10598106666666667, 0.28924298755598493, 0.9998524, 0.27298183342700816, 0.18342867120009312, 0.369323322259287, 0.3125824168205114, 0.8940963874355874, 0.1282047923067518, 0.2979311333333333, 0.6285563813602684, 0.6924087693284771, 0.0891062, 0.358058010313738, 0.3489694449545142, 0.9993927063907401, 0.9998350663532928, 0.4293855, 0.7915188818119107, 0.03175596403076523, 0.9931164048485259, 0.9999406998873298, 0.9517815897741017, 0.17631936623820435, 0.6363432588314824, 0.8513724068360657, 0.0797896, 0.14478858605428202, 0.8862197938051409, 0.23233142180939056, 0.7097447314605424, 0.9996617357088843, 0.7937461822808498, 0.5116536666666667, 0.9455067873778745, 0.28252991723376814, 0.9289253936080721, 0.5285195375204547, 0.3253610031663141, 0.00916125959561084, 0.9393098, 0.3634884868259478, 0.5448694933738436, 0.47901713333333334, 0.0891044, 0, 0.7263943702369939, 0.9263530792565373, 0.5456157700032963, 0.11250826666666666, 0.5456543666666667, 0.32598, 0.24701176666666666, 0.38455453333333334, 0.36917756856236783, 0.5143855134264792, 0.09855893333333333, 0.8989022780745398, 0.2549424980857633, 0, 0.9993352016488202, 0.14549675630375486, 0.9998963641691623, 0.7109669905306687, 0.42777975237859983, 0.2196257584768429, 0.8976845547082503, 0.15397140293153067, 0.5506107834941152, 0.6173297874061975, 0.22282813807351112, 0.3106850382118333, 0.9942493356191309, 0.027785785612643412, 0, 0.9015009365838945, 0.9993780976575012, 0.1651652726779638, 0.4222903514313184, 0.4187388, 0.9998104, 0.8538174527426031, 0.9134719915589893, 0.42074706623233993, 0.3668342969851643, 0.9997162765169066, 0.1557546, 0.9235997284681825, 0.9993153326943105, 0.40483176666666665, 0.4594411, 0.44286806666666667, 0.9407133267697427, 0.08022431103704399, 0.2820343327739013, 0.6237717, 0.2961839333333333, 0.23888466666666666, 0.30432716666666665, 0.9217167666666667, 0.93203346401094, 0.7953034756165772, 0, 0.2174972, 0.13647963333333332, 0.9978436276357197, 0.058692872399782534, 0.14762143874405761, 0, 0.9994473926623142, 0.8332656275859448, 0.7124702666666667, 0.08506126666666666, 0.304177237594156, 0.9109668806013179, 0.9108213308235023, 0.03737737101700493, 0.07837448289563657, 0.9994688, 0.9999161333333333, 0.7097551666666667, 0.19234913333333334, 0.10498613333333333, 0.5299291, 0.2107598, 0.17975913333333332, 0.33799433333333334, 0.25329163928576254, 0.2510718757061702, 0.9996054787009983, 0.5288957014194877, 0.2038825963987938, 0.9996623739496571, 0.9998688494995354, 0.8518969547526319, 0.08269302543459565, 0.6255487806140678, 0.28011388952928284, 0.8076772180402366, 0.28552031632337815, 0.8748298107285818, 0.11231298606790274, 0.12191601609572134, 0.903065000728888, 0.19506905114703085, 0, 0.999595507720973, 0.1558947519741109, 0, 0.9968623170478935, 0.9999544777617353, 0.8065413638300822, 0.7313741884582211, 0.1097384498672991, 0.6145286144559684, 0.3857246597944163, 0.3837593648840205, 0, 0.9998847870567518, 0.14123657323904582, 0.5282450304558006, 0.22009952103124067, 0.24459290970285327, 0.9999258664566216, 0.9032517666666666, 0.09234630950456454, 0.9485303519616618, 0.7365327, 0.7338408622686721, 0.9998024331489376, 0.9272659333333333, 0.07810166705545368, 0.8350739666666667, 0.10292927710576044, 0.22179384034091765, 0.6859513050038877, 0.40044278082652424, 0.12169266094288969, 0.9999862333333334, 0.9624933333333333, 0.06455906666666666, 0.06407953333333333, 0.0550896950872527, 0.9999045999109599, 0.9083895235332855, 0.931718880306572, 0.09755337287126992, 0.31171070433890724, 0.999371794786074, 0.38184265951685264, 0.5412435728565602, 0.12280948910477998, 0.9970967095327475, 0.27547020909983433, 0.19049166513318408, 0.33732867328693383, 0, 0.9997180253925871, 0.7354671843316438, 0.2024370015518142, 0.09772579650526818, 0.9994285387107217, 0.8388627308256528, 0.5842436088414259, 0.1430847541107979, 0.9996940297878719, 0.9993780771565584, 0, 0.9999125333333333, 0.5223323575471448, 0.11448137527663167, 0.7152864717406275, 0.06131588325332708, 0.9993251397166988, 0.10438987433478769, 0.4140655219700334, 0.5298496206851314, 0.493699089674244, 0.9994033638227009, 0.9953522333333333, 0.10906873895692477, 0.619833456228789, 0.4038459558307313, 0.2908616862064946, 0, 0.886418532264761, 0.11948879757628866, 0.38019115946001963, 0.9205065490434525, 0.0936066459368663, 0.9996115743625853, 0.9999380726837841, 0.7003835614575336, 0.06544273333333334, 0.9997348744382223, 0.3743659539665396, 0.6995503538191797, 0.6594736529999407, 0.0379123934857865, 0.9999365331535106, 0.4021106782362906, 0.33670031279452195, 0.6722032333333333, 0.9718395012729931, 0.4310433587057509, 0.13970533762143875, 0.363373167796707, 0.9259951603315351, 0.06606312051217478, 0, 0.9996269666666666, 0.6253739333333334, 0.1558336, 0.6218985333333333, 0.08978793333333333, 0.4413956, 0.2255724381525226, 0.4764051078642248, 0.8345796404458812, 0.4660870188986692, 0.9999790870484293, 0.9578382026392347, 0.6215205002569332, 0.0088933, 0.28304963333333333, 0.5443067488736084, 0.11291211197003966, 0.6042253100997789, 0.23952339717880344, 0.4343738874720929, 0.15547195368176236, 0.9994333116710069, 0.2507766529512812, 0.9840282095204596, 0.1177767890291024, 0.3546788345176844, 0.107028076726704, 0, 0.9997375437114342, 0.9999950999954267, 0.9876047666666666, 0.23232913333333333, 0.5754991749443331, 0.07167040540938614, 0.999744516940492, 0.8737949268770278, 0.22853129501904665, 0.14564885968352628, 0.10385210447810443, 0.9822970226195332, 0.9997395246249258, 0.9998436470242485, 0.8181161049318333, 0.11906786484672796, 0.22900478144725123, 0.013773477042811963, 0.999336671185492, 0.25525964603768325, 0.7600688535284184, 0.9098134439661242, 0.33685333548089696, 0.10995828844488624, 0.3387776255881736, 0.9994746333333333, 0.1817696981102046, 0.18946974350509393, 0.5634208666666667, 0.2963253, 0.9993622333333333, 0.20377381846706644, 0.9995549311960233, 0.5090405587018006, 0.2700582905080288, 0.5144312528711424, 0.20519040187224497, 0.11923028062128496, 0.9995250724665271, 0.34258060564776105, 0.5395985729716818, 0.9997879256418453, 0.1535531811137593, 0.22143113560890407, 0.9999565664610812, 0, 0.9997650666666666, 0, 0.9955084958079294, 0.9998627, 0.9994040333333334, 0.31807573333333333, 0.8740264132075029, 0.027368090330430684, 0.08529798896849493, 0.9995442324521827, 0.9204150647798828, 0.06723759274776588, 0.4747172333333333, 0.3380110333333333, 0.6459888080710814, 0.5297736200913262, 0.6239151562680801, 0.7368798667384134, 0.8611916333333334, 0.10900173333333334, 0.47186896666666667, 0.9029942071766414, 0.959287895335369, 0.3393304729152431, 0.34051081762682517, 0.8292690234792388, 0.6640966560627247, 0, 0.2891506987726553, 0.13261723333333333, 0.4287513666666667, 0.40430406959062193, 0.2880789022069754, 0.999339254164996, 0.3308289842141039, 0.7246558, 0.1370832, 0.9262012021405569, 0.5028037397535816, 0.07797644439392623, 0.9997202756484542, 0.9998745995401003, 0.9990956719449589, 0.4243011416567894, 0.07621645024658223, 0.5715551087948886, 0.24271733082736524, 0.9277084600932061, 0.33961029279023275, 0.012468497964895749, 0.999546706255457, 0.5690628572956854, 0.5787135349456075, 0.0567284239452985, 0.9996243991788232, 0.9355330336967423, 0.992228187829715, 0.9997802040718857, 0.9998569814323253, 0.9997545539772509, 0.9320631639329253, 0.22844044724793386, 0.17848583333333334, 0.07784338072794751, 0.5746562363458206, 0.025762180814267226, 0.2047437311736488, 0.9999327030442429, 0.05723664984381163, 0.02569519191050386, 0.9994948549421306, 0.999331360814337, 0.7825325631931616, 0.1148242627820006, 0.7746306808010872, 0.10321414343614142, 0.368819678926993, 0.1238723226461279, 0.2671396027206352, 0.6303864194281884, 0.0539563, 0.9452878068767485, 0.1233514484613519, 0.10676383333333334, 0.6250674666666667, 0.9991711666666667, 0.9994191661490779, 0.9998620332045643, 0.9996981611306064, 0.35748191254896716, 0.09812724102595313, 0.9939605495548904, 0.2762917817515954, 0.2692739142650771, 0.5779392345670049, 0.2632365038782349, 0.9996522333333333, 0.5455517686978665, 0.27964266666666665, 0.5903434333333333, 0.9995502724922447, 0.049106980803414774, 0.7815184666666667, 0.07463226666666667, 0.8099805539890297, 0.3825838, 0.12083013333333334, 0.3833273, 0.4932565316698423, 0.6686363226776215, 0.9995233007089996, 0.37226044062817054, 0.06753794418626273, 0.39359482830517445, 0.6166780150619352, 0.14677073333333332, 0.6550763333333334, 0.4103555121576219, 0.2675804497417531, 0.7571180666666667, 0.8560301, 0.13918006666666666, 0.15908474625471772, 0.9995741329358574, 0.9996588665648093, 0.7904975755954744, 0, 0.9580094666666666, 0.06482950601262133, 0, 0.9996796666666666, 0.4103668, 0.7657891666666666, 0.3294124045463729, 0.3533657631413789, 0.9967652224078596, 0.9999805333333334, 0.5925703666666666, 0.3620028708632687, 0.7560257666666667, 0.0532815, 0.9999209438649825, 0.33954362822550727, 0.022187533333333332, 0.595082, 0.6862150443425329, 0.05740715549358364, 0.09060416666666667, 0.9993890333333333, 0.22743058596719698, 0.31591129485054187], 'oldestBlock': '0xd10f1a'}}), + (('0x400', '0xd10f18', []), {'jsonrpc': '2.0', 'id': 19, 'result': {'baseFeePerGas': ['0x12f7ff3ee3', '0x1556938bca', '0x16036da87c', '0x18c24b10d3', '0x19fa5d091c', '0x180255c988', '0x16d4245483', '0x19adc05709', '0x177db9debd', '0x1a6c8477ad', '0x19280c760b', '0x1c4b5c0d27', '0x198384c582', '0x185b42e0d2', '0x16b355b352', '0x1710d1bac7', '0x14f5136c14', '0x1793231fe7', '0x1a005ae5ce', '0x1a9fea9070', '0x19b19cfea3', '0x172ac40343', '0x1a0f643158', '0x1b8021805c', '0x18101d5051', '0x197527b4d3', '0x16813054d5', '0x15ca7d4167', '0x1883c4e535', '0x1b9380091a', '0x1e09adf66b', '0x1ad4022db8', '0x1a78142f08', '0x1a35121e39', '0x1c57519c7d', '0x19287a41e5', '0x18d2cc2099', '0x19cd05c5d3', '0x1737a3d40d', '0x15e5927428', '0x171247f2ff', '0x16c4a17b08', '0x1778426c9e', '0x189c1450fb', '0x18cf129719', '0x16105d55eb', '0x1558e1b768', '0x179810b991', '0x158dde2ea0', '0x1523b6e2c7', '0x137dd45dd4', '0x1465fbd60d', '0x15270ac375', '0x1494a63d16', '0x1558a63668', '0x12ad916f9b', '0x129da69873', '0x1449cf4424', '0x148792ad5e', '0x13d64ce8be', '0x147e18adc9', '0x15fc0386b2', '0x14113f7fc6', '0x1428323e05', '0x16acd3b249', '0x16e316e7fd', '0x14f4ae9f5d', '0x13f64c4a84', '0x145c1f6c27', '0x148104b636', '0x171099c5df', '0x165d2ed083', '0x141c162a4c', '0x12167076ca', '0x14366e0536', '0x159139f1c8', '0x14f702004e', '0x132d90ac42', '0x13b649e5c0', '0x12485142da', '0x104ae907b0', '0x11e9ade178', '0x1426705fec', '0x152cac0721', '0x12addc9023', '0x11fda448dc', '0x143ca03114', '0x128647108f', '0x123e59e0dc', '0x11075484b6', '0x11457ddf7b', '0x11079adc02', '0x13280fa26b', '0x12fbfc58ba', '0x13a7ab9877', '0x1180efcd1c', '0x12aa03b11a', '0x131ca5fb88', '0x11cc788c86', '0x126c7b41a4', '0x10bae8ac23', '0xfa22178c3', '0xdaddd49ab', '0xf631e7d6c', '0x106bb217d6', '0xf99624d27', '0x115d99366b', '0x10849313b2', '0x12950b66d0', '0x125aed8b62', '0x11796dbfc2', '0x12d7ab8dd7', '0x15324fe8bc', '0x1414f66d1b', '0x16973b089f', '0x158e838389', '0x1375ef576d', '0x15e2d8d03a', '0x13e4f2191a', '0x153b32c469', '0x13173e5b6b', '0x121f7ef358', '0x115311cb0a', '0x134964bd3d', '0x11296f3cf5', '0xfc25baf6a', '0x11b96e218b', '0x1055166549', '0x112bea90d1', '0xfef11714c', '0x10d7c2393f', '0x1150aa108a', '0x1190b29166', '0x12042233ce', '0x104eff5fcc', '0x10b3117f66', '0x12c911e3b8', '0x1521edebc6', '0x165679e9e8', '0x14ebec5f79', '0x14e7132865', '0x149476dde8', '0x12a412fa14', '0x14f80c5c07', '0x1312a08808', '0x1193b05e96', '0x111491f2bf', '0xf2341e861', '0xedada7447', '0x10b5f54e1e', '0x12cc82ad55', '0x11cc00504d', '0x11a8d3cf7e', '0xf73b9558f', '0xde7f5ebc9', '0xfa4939556', '0x11990dbf3e', '0x103fd37fae', '0xe711dc637', '0xfff5ca80a', '0x11feea38ba', '0x14022c91a6', '0x148e797088', '0x154ed931e6', '0x137b0952f5', '0x12d9b2bf51', '0x1252dc0b63', '0x12d00b939d', '0x119cc5939c', '0x101bf4db7f', '0xfd3208b83', '0x10a9191073', '0xee8bf273b', '0x10c521278c', '0xf038a817c', '0x10e263dff3', '0xef77fa3d3', '0x10d63fe89a', '0x12f0f77687', '0x154efb8aa9', '0x132e7c763c', '0x1458c9d355', '0x13a4213673', '0x13e5eb63ef', '0x12cb3f7688', '0x122a9c087d', '0x1417fc70e5', '0x11a467a6a6', '0x13d841fe3a', '0x12c1f28807', '0x1233d8e9e4', '0x1141a61250', '0x11dcc725a2', '0x131ed61587', '0x1400aaea00', '0x1580de2861', '0x14a2628a1e', '0x1532f70853', '0x13c8961a1a', '0x1605bd3b92', '0x16a9402eae', '0x146ae94677', '0x14c17e24ee', '0x1294197b10', '0x12a0599bb5', '0x14b812fa42', '0x1607d8555a', '0x140da94c4b', '0x120123fa0d', '0x126fa0a2b0', '0x1051f9c3e9', '0x12377b925c', '0x1293076221', '0x12d7ceaa0a', '0x1532759fc6', '0x17a530320a', '0x14b08a2bc9', '0x1745f33ac9', '0x15863ad32e', '0x13f7b129c5', '0x12b802d1db', '0x150e5376d0', '0x17af568b53', '0x1a56c0fca2', '0x17933099d4', '0x17ed38410d', '0x15b3b86c0c', '0x1821fdef5f', '0x17feb98aa4', '0x16ad2e770b', '0x1601eb6aa5', '0x15923624c2', '0x154fd4dd5f', '0x17f964b1dc', '0x1af866cb63', '0x1d7766de7a', '0x1b2d2b60bf', '0x19c2a09e18', '0x1a862ed287', '0x173568f837', '0x1a1bdc3fba', '0x1d5e30854b', '0x1c3924ebcb', '0x1ce196507d', '0x1da2d35f50', '0x1a6cb68061', '0x1a95f7324e', '0x1976ec1a53', '0x18366d6792', '0x1a6ab34627', '0x180f70dd80', '0x17924e646c', '0x14e5b3973f', '0x1782123af9', '0x14f821adc2', '0x1796500e7b', '0x15b8ebf820', '0x13b38e62bf', '0x147fda5ffb', '0x12aa45ea27', '0x14fec0bf75', '0x179e6bec54', '0x17aa77ed21', '0x1537f8f1be', '0x1640f760c9', '0x15371d8b5c', '0x13e2dda5fd', '0x13234c0075', '0x1145047b47', '0x11dd3af1a8', '0x1107a893a4', '0xf18eb2d1b', '0x10fbeb62a0', '0x115191b3fd', '0x137b4d7483', '0x120dde86bd', '0xfedff6fba', '0x11e39da8fd', '0x12394d7bc8', '0x12b5ce1d61', '0x11e039eb29', '0x107125ea68', '0x11e34ca12c', '0x13df1bf0fe', '0x159887d9c5', '0x1338c9b5b1', '0x13a28ee8e0', '0x14221f02bc', '0x1369932d25', '0x125517f8fc', '0x149f027821', '0x13b56d2866', '0x131dc916bf', '0x13f397bbb9', '0x1218b62ff9', '0x144b2cc27d', '0x153ebe4107', '0x1577345df7', '0x14c5e47112', '0x129c8d989d', '0x1260f6e118', '0x11df633237', '0x141a94cd7f', '0x11cd590833', '0x12ddc9e6d7', '0x10cd9890c3', '0x10290c9d1e', '0x12163d33ba', '0x114971fee5', '0xfce68751e', '0x116b2d71bf', '0x13986d350f', '0x11dfc4c608', '0x1322a75a26', '0x11955243a0', '0xfdf4aa160', '0xe5a733ab1', '0xe93282402', '0x1015c2151f', '0x1218044fbc', '0x110fb77e24', '0x1331a9d279', '0x134bd1ae36', '0x12b278f1bd', '0x11487df90c', '0x1370f2aa67', '0x12d41ab671', '0x1079975fa3', '0x114fd6ff3a', '0xf78ed828a', '0x110afbdb44', '0x132bfac224', '0x1472d9ae9c', '0x1315022963', '0x11c87b2d51', '0x12ab122478', '0x129c558964', '0x124f9ede8b', '0x111469a7c7', '0x10b7ac9353', '0x107390c036', '0x10c87109ff', '0xfeb5aad95', '0xea5c42a5c', '0xfad449d1a', '0xe1a84b202', '0xf8b85f75a', '0xde267a153', '0xf9e95027e', '0xffbe473ac', '0xf0a68be85', '0xd291ba6b5', '0xecdc386e4', '0x10a74be326', '0x12bbcfd134', '0x11a8f3a56f', '0x113db01866', '0xfa00acd3e', '0x117970a999', '0x12599c6355', '0x10909dc81b', '0x11a1d4ddf5', '0x10cb28211c', '0x12e44fdb2f', '0x1313b33fd1', '0x1155c3f0d0', '0x13800c302c', '0x125844185c', '0x135d55b081', '0x129e0eddbe', '0x14f149335d', '0x161e35597f', '0x15e57b34e4', '0x14c0381eb4', '0x13abcb7564', '0x155e965d7c', '0x17dca3d570', '0x16af9dc0fc', '0x17cbf24574', '0x1558a71ef7', '0x13b02c3793', '0x1625d53591', '0x17eeec3ddd', '0x1983b66ed3', '0x17348b5e62', '0x1985eae8cd', '0x177f32526f', '0x1727c1387e', '0x1a0c92d76d', '0x1bbd6b1f78', '0x18cf450e8e', '0x1be88d96c4', '0x1a3aa8575b', '0x1b4c5c6a3d', '0x18892a40bb', '0x1713fc00f4', '0x155000c950', '0x12a600b026', '0x14fa83d46e', '0x1799260291', '0x16c6b8d74a', '0x1960158d80', '0x17955315f2', '0x1a87d9e6dd', '0x1a220cdfd8', '0x189bd36b76', '0x173ddab678', '0x1586043686', '0x17f8c55f7a', '0x16fa56314c', '0x19bc210f27', '0x16ce385bc6', '0x17534ae143', '0x15ccbc03dd', '0x188644bdf9', '0x19c686f3dc', '0x1772ea159b', '0x16e6097557', '0x15aa34de47', '0x14763e184c', '0x13edecbd15', '0x14fdd84819', '0x12d5fa9239', '0x14b6179541', '0x12b9738875', '0x1241ae2a0e', '0x11e84b5b6e', '0x1199b22c19', '0xf9789771d', '0x118a6c61db', '0x136a11c146', '0x138297a4ab', '0x11f73a58cb', '0x1216d86eee', '0x10df2605b3', '0x12f27c131e', '0x13b2adf1c7', '0x116c9e6b35', '0x10396461a5', '0xfa8d8dc3f', '0xeca2d7525', '0xef9ffe6b1', '0xd1abfe9db', '0xebdac9575', '0x10942c8efb', '0xf68df3493', '0xdfad63e76', '0xfb9f834b3', '0x10da41fc8d', '0x12f58960ff', '0x1096d834e0', '0xf87097c1c', '0xfa49922a1', '0x113c7bf371', '0x11562dec9a', '0x1380797f4f', '0x12f6db4cfc', '0x1114b93ec1', '0x10e93259ea', '0xf10e7f23c', '0xf7d42ee39', '0x116c3aa937', '0x133f5f9c42', '0x12bcf7246b', '0x115868dd0b', '0x1325e88490', '0x115c64119a', '0x11e9d9e715', '0x1426ebe939', '0x167551213e', '0x1442c2aedc', '0x16cb048345', '0x19a3759464', '0x192953c2f0', '0x165ac41d18', '0x14690280b4', '0x1484c1c556', '0x12fedc7b76', '0x155de1e874', '0x18090c0f79', '0x1a04e0ae5c', '0x1714fca8b6', '0x14f84e3777', '0x14f4995490', '0x12effbd09b', '0x1322593503', '0x11119927f0', '0xf3db186e0', '0x10fd5985b3', '0xf61102f12', '0xed933244b', '0xd60e3bb80', '0xf0ccd804a', '0x10ee1390ae', '0x1243c5dac3', '0x10bf6bdd75', '0x12d6fcfa81', '0x122345270f', '0x12e66ca628', '0x110f84d487', '0xf756e18ba', '0x10f9f2ff82', '0x1141a7979a', '0x10da3eafe7', '0x10be1be1b0', '0x12d58e04a5', '0x139b991a1f', '0x116bcd6486', '0x12c2165a09', '0x10ba78918e', '0x127296468e', '0x14c02a0f92', '0x15523f38b5', '0x13e278170c', '0x16350e3a6c', '0x1451d75056', '0x151a7319a6', '0x15528d98a9', '0x15d6e732ac', '0x17475ecd1a', '0x164c4c1afa', '0x15a7835f1c', '0x1425049c43', '0x16a92dfa22', '0x14def06006', '0x1290d33c73', '0x12e28d6b29', '0x11ee1dd646', '0x11cf01f6aa', '0x1408c54177', '0x124e30ba44', '0x106aa5e4dd', '0xf97f3efad', '0x1164d1766f', '0xfa9989649', '0xe1f2847c6', '0xfe28d660b', '0xe6e1a72ed', '0xf134cad7b', '0xde3ae68f5', '0xf4f74d6ae', '0x1138d534a7', '0xf11ba8e13', '0xe8e17f558', '0xe515866d7', '0xdf40f3e37', '0xcc883e06d', '0xe138e1db6', '0xfd5a05ac4', '0xe362d41f8', '0xfe37ac518', '0x1183d4fbb6', '0x1016dbc633', '0x121953b551', '0x11f22745c4', '0x101e18810a', '0x112de7cbb6', '0xf6d24535e', '0x115a563e7a', '0xfcca1f4ff', '0x118aa224f2', '0x105ea259b2', '0x114696985f', '0x12303c10dd', '0x14753b569f', '0x13fddf4cdd', '0x11f6db850a', '0xfd0e0ffdd', '0x10613f1d41', '0x1146f90817', '0x1112d80dcd', '0x116a005da1', '0xfcefbbeb4', '0xeb716e42e', '0xe8b85fa69', '0xd1aac52c2', '0xe1f0cb800', '0xfe25b9be1', '0x11de41151a', '0x1127edffab', '0x1026029c48', '0x10f70cdf4f', '0xf51588093', '0x107d974e96', '0xf0a95fa1e', '0xe72698356', '0x10405fedb4', '0x10c1e1a7b6', '0xefddf9188', '0x10b0421e1e', '0xed4cc83a8', '0xdb14dc64e', '0xf5af5735b', '0xe67cc5b4a', '0xcd997da2c', '0xd1337b3cf', '0xcc8dcbce4', '0xe06698947', '0xc743945cc', '0xe029710eb', '0xed36a327a', '0x103f21cc71', '0x11dc8fc146', '0x105ec22c9c', '0x111b2e8f05', '0x1242e28abf', '0x101b737727', '0x11b70ef9b2', '0x10278e5630', '0xe9b5f093d', '0x106e360843', '0xed46adfae', '0x10ae89468b', '0x107f277277', '0xf19e941da', '0x109a980ca1', '0x108932f35b', '0xf928e6d5f', '0x1120d56d13', '0xfbb5edf08', '0xe01c258f8', '0xee64a59f1', '0x1072b8881b', '0xeb243371c', '0x10881c2961', '0x1081485b5e', '0x11058fbbed', '0xf4f280221', '0xe5bbb7101', '0x10271419dc', '0xf1c362584', '0x10ffb23aff', '0x102e9e1d6e', '0xe465f863d', '0xe38a6244e', '0xfb242fdda', '0x11a861fee4', '0x13dcdebc3d', '0x11b7492040', '0x12b6db0abc', '0x128596ac3f', '0x14d5d6c43b', '0x1330b25c9d', '0x114a4ee51c', '0x13734d9b20', '0x1505b3b13d', '0x12c5d44d3d', '0x151dfb92a9', '0x13144d914f', '0x136d6f0767', '0x1171795fb3', '0x1259a3c891', '0x10dca7dd09', '0x10e161faab', '0x10a6d41229', '0xf1a084e4f', '0x10fd1e1fff', '0x111345add6', '0xf43300d77', '0xeaf201a29', '0xe29051405', '0xd4e0a8774', '0xef76bba19', '0xeeafdf39f', '0xd579c7923', '0xdb44bbf02', '0xd7f275f14', '0xf2ed3aefb', '0xe5ecc40a0', '0xca8a610f7', '0xc1c3cf4e0', '0xd518aa0ed', '0xbb2c556f1', '0xcdd070860', '0xe7892d82e', '0x1047460659', '0x124fbfa678', '0x119ddfa99c', '0x13d04f9628', '0x118ea3e933', '0xf5ccf6c0d', '0x10e9f216f0', '0x10a2f86dfe', '0xf7b5f02ed', '0x1038f5e812', '0x121fe8d12f', '0x12a660f048', '0x10f8e42d81', '0x11fe4ef258', '0x11176f9469', '0x11754d4b34', '0xfc788bf4b', '0x10ece32f53', '0xf35ee3a66', '0x10bee4845b', '0x12d6962f38', '0x133a35bd22', '0x124f1f66bc', '0x1498527c26', '0x1355785968', '0x1228af7e74', '0x142f9d0878', '0x135429b089', '0x153d93831f', '0x135d7e02a2', '0x139e3c4e2d', '0x11cd346821', '0x14062977c8', '0x14851c5f15', '0x1222b6f362', '0x138aa36a70', '0x11a1b303a2', '0x120638cdfb', '0x1174cc0281', '0x11bd6b67fb', '0xfdb7bf27c', '0x11d68c8269', '0x141094ed54', '0x169079e3b3', '0x13fc7114f8', '0x1283efe6a6', '0x14d43d921b', '0x133a76f891', '0x1482920564', '0x1686b8faaf', '0x1495771979', '0x124e1d5cae', '0x144ec8ac9f', '0x1341345a23', '0x117b6738e3', '0x110522fe84', '0x11f275847b', '0x1341da01e5', '0x148e7b8e85', '0x14d4ca3dea', '0x127638a21a', '0x1470197728', '0x14202404da', '0x13ef45a609', '0x13123c119a', '0x12e444162c', '0x15401b1b0e', '0x129817b7ad', '0x106bd5d4c1', '0x1242b69df1', '0x13ad859640', '0x11c5b9b372', '0x13fe3aa31a', '0x117e734eb7', '0x10f2350c7f', '0x106b7f8df3', '0xeb673df80', '0x108d1aa991', '0x1161cb5cd9', '0x105ca37ccb', '0x1268008eb3', '0x101b007cdd', '0x121e282202', '0x134fe4b1c1', '0x10e5e81b89', '0x13028741db', '0x12ecb20667', '0x154a44abcc', '0x1545ff5f9a', '0x13e41ce895', '0x1430d1a55f', '0x138de93390', '0x12b6a4c211', '0x11ece27d78', '0xfcbe3ffc1', '0x11b8a1ab37', '0x11cd99712c', '0x1189c15b89', '0x13baf0a66f', '0x16320f24a8', '0x15dd175a78', '0x13dfe21597', '0x1359cfa228', '0x1354153af9', '0x13b4b7831e', '0x123ea9917e', '0x13be84f5a1', '0x143a5439f4', '0x11f1d6bbda', '0x142f8b97da', '0x145751b7ac', '0x11df2b3be3', '0xff8cd3276', '0x10164781b7', '0xe9761505e', '0x106a173c03', '0x1277477987', '0x14c5ea4971', '0x14626c2dcd', '0x12015f713d', '0x12a4d42cc3', '0x14f8d6dcb0', '0x179740193b', '0x18c7d4c107', '0x164cb6c7df', '0x14f76c1915', '0x12587e95f3', '0x112b1449e4', '0x13177e1263', '0x157a3e351d', '0x1729574d4e', '0x1814c7c60a', '0x15d3b4e247', '0x17c72fc79f', '0x15f93e8dc2', '0x14c5aae8d1', '0x12dec277c8', '0x13c9f8148c', '0x1642d6fdaa', '0x151662802f', '0x17b90e6ad0', '0x161ca9ce32', '0x144dd099ab', '0x1414aed846', '0x136a279d88', '0x11d92c6e00', '0x131cdc8537', '0x11238bb0e0', '0x12f62893c5', '0x1427e47d74', '0x16a6e7c83d', '0x14dd4894e6', '0x124dbf5969', '0x14977138f3', '0x12ff461816', '0x12be17f49f', '0x106654f60c', '0x11a54a6dc7', '0x11c593ee07', '0xfccca2aa7', '0x100ef6e297', '0x11cb2da72b', '0x1404880e24', '0x15646a0e11', '0x1465494707', '0x12fe1c1daf', '0x155d68774f', '0x146dfa20c7', '0x14d5580a5b', '0x176fa0a6cb', '0x172be7a349', '0x179fb2ff91', '0x15706f2061', '0x140376c3b0', '0x12809ff11b', '0x11674c80be', '0x127747f5ef', '0x11e02b76a4', '0x13a6dd459e', '0x146ef803b2', '0x13909251a1', '0x1341506d9f', '0x13093553e7', '0x110cfc2afe', '0x12de22103a', '0x127b49de21', '0x11c2b0544f', '0xff187b537', '0x11ef83b6d5', '0x1049d7d87d', '0x1251c081a4', '0x12edba9846', '0x11431b28de', '0xfe40c4cab', '0x11819c882b', '0x130839bba4', '0x1195b7ea47', '0xf9b2b5dc7', '0x118e8a3f72', '0x11e7a556be', '0x100de87852', '0xf7b58ab76', '0x1013a18ab3', '0xe8934c955', '0xfbbce26bb', '0x118b5d2559', '0x105a795315', '0xec3930bdf', '0xf9542170b', '0xef56d8a23', '0x10d3173cbe', '0x10639a85d6', '0xfc1fcd8d5', '0xed08a0ff9', '0xf722330de', '0xe86beea1b', '0x105726162b', '0x1261729997', '0x14ad788054', '0x128488effd', '0x113ac4db74', '0x1361ef6297', '0x134c258e5e', '0x142444f1a0', '0x156aee9caf', '0x1817680e2c', '0x19f2a4d6ae', '0x16e835bed4', '0x1646621f63', '0x147745426f', '0x1506943d87', '0x138c66b5d2', '0x1386f99dd8', '0x133f72e8fe', '0x13b323a21f', '0x11cd1f5931', '0x1086ad28ea', '0x1296e80958', '0x1447dc0ec9', '0x1379bf8e57', '0x15e8c32ca0', '0x17d98ca452', '0x15b16ef86e', '0x18670a2ba6', '0x178dedddbe', '0x1846215e66', '0x17580092f1', '0x1600d878cd', '0x14648d45d1', '0x135cefe46e', '0x129dae3937', '0x11a6043057', '0x124c24c2dc', '0x109fd5d922', '0x12864a5708', '0x112a860453', '0xf6577ac95', '0x1151843718', '0xf59472152', '0xf2b15b149', '0xd8efc30c9', '0xf404b6333', '0xd6cdf2362', '0xe98e6c561', '0xcc5c9ecb5', '0xdebcef95a', '0xda9d9564c', '0xf5ebfe5d1', '0x114a598393', '0x1034acdb8d', '0xf39a61ce9', '0x111a420c5a', '0x105652cf52', '0xeb80c358c', '0x1083b9bd15', '0xf27dbe64e', '0xddec6fadd', '0xee2a51682', '0x10be84a979', '0x10d44bfdaa', '0xeb9c27df5', '0xed71372e1', '0xfea7d0b6c', '0x10117bae5a', '0xe5b2e0b67', '0xe5cbc7fa4', '0xf938c6b26', '0xf20a24486', '0xd79d24ece', '0xf0ea79e97', '0xdea4a29d8', '0xf8b0bc97b', '0xe006a4a46', '0xdb09d4b99', '0xd35e0d14d', '0xdc91075ba', '0xcacfed229', '0xc4d821892', '0xdd7148295', '0xd1e5ac770', '0xbc40562ea', '0xd3c7aa8ab', '0xee3c4bb85', '0x10bfdfb81f', '0x10093687f4', '0x1209e100d0', '0x105599739c', '0xfa5fc743a', '0x119a6d5c60', '0x10523bfe8e', '0x1080a4f1b8', '0xf30fbcae4', '0xe5b77559d', '0x1026d490aa', '0x1050d19b52', '0x10c1103e87', '0x12d9300ecd', '0x10c7424d09', '0x12e00aec79', '0x125ec7230e', '0x1066d7ca83', '0x1166dad9b0', '0xffbf0684e', '0x11005865c2', '0x10a88de398', '0xee843224d', '0x10c2d2ef9b', '0xf9ce79fc8', '0xdf2463d78', '0xf48752cfa', '0xfa827bd0e', '0xf4faf4383', '0x11396df109', '0x124a3f2124', '0x11555c9b67', '0x1306d047e0', '0x10fe08a151', '0x10463b0157', '0xf7da331a6', '0x10ed596f63', '0x130a8ab816', '0x12702edc50', '0x1265c74c9c', '0x111bf2d8ab', '0xfa624f161', '0xeb9eebfcf', '0xec82a8d66', '0xe2532f652', '0xefe9de259', '0x10de33875c'], 'gasUsedRatio': [0.9996537615634695, 0.6265717571530053, 0.9988901140876233, 0.6969427080043393, 0.19684164185471412, 0.30333438600400014, 0.9993783, 0.15923549345936308, 0.9993851660928217, 0.30813484793820306, 0.998947098034583, 0.10690012084823389, 0.31856752637536906, 0.22804573278764337, 0.5643462923710346, 0.13437093333333333, 0.9995726506399834, 0.9117340146762142, 0.5958850276260499, 0.3601491, 0.1066369, 0.9995143591049994, 0.7210870063478726, 0, 0.7318402333333334, 0.03601453485995741, 0.37315151663724366, 0.9999775447173764, 0.999528232436975, 0.857067435410782, 0.07258503333333333, 0.4464592, 0.460444323882271, 0.8256773039654837, 0.050762, 0.44678643333333334, 0.6575031666666666, 0.09946686272478408, 0.27248428765200183, 0.7145785862628329, 0.4474117351685723, 0.6232733333333333, 0.6942791302373434, 0.5323762635511793, 0.05742403333333333, 0.370063, 0.9210035333333333, 0.1541776211136842, 0.42304745015920747, 0.18816917511918213, 0.6861018903251384, 0.6478812036785561, 0.3918622059596314, 0.6488046626996705, 0, 0.48668441384140826, 0.8593707192316973, 0.5475668575194934, 0.3650784354444675, 0.6321670333333334, 0.7912011587351618, 0.15119791282464906, 0.5178681, 0.9996947, 0.5373913040582537, 0.16246812371918626, 0.31032679919649053, 0.5797016, 0.5283152666666666, 0.9995846277223042, 0.37845558655854744, 0.0968015, 0.09779443333333333, 0.9699255666666666, 0.7680848666666666, 0.38827225214577965, 0.1590706, 0.6113936, 0.2099086, 0.0646388, 0.8977730420422209, 0.9996073334887924, 0.7033429276002984, 0.02861164616534913, 0.3525930966361485, 0.9993736335007121, 0.1615481034460301, 0.43933167544458834, 0.233620928592631, 0.5570377, 0.44401276666666667, 0.9995462902857974, 0.4640499230531279, 0.6413045847513723, 0.06218628055626294, 0.7651924696472215, 0.5959678346165797, 0.2251570446376166, 0.6404688671150284, 0.13229148534308183, 0.23776875877212486, 0, 0.9994536, 0.7686657020580597, 0.2998792465539635, 0.9529637, 0.30472913333333335, 0.9999036726029634, 0.45113215439001075, 0.308042, 0.8131748986218376, 0.9997373330881776, 0.2896549, 0.9997258666666666, 0.3169072666666667, 0.11107005991350553, 0.9985307986287454, 0.1359699, 0.7688052333333333, 0.09673616286303575, 0.29722911074717, 0.3237512, 0.9530472160601839, 0.059314857337695426, 0.17307911239639706, 0.9987876656038465, 0.18586384117689084, 0.7055242952664563, 0.21168865138444448, 0.7281801071134855, 0.6121636322303274, 0.5577830502972305, 0.6026852005335354, 0.12088170916484263, 0.5958762666666667, 0.9996425666666666, 0.9997719, 0.7281337333333333, 0.24639894190009878, 0.49637896483128163, 0.4382475377939436, 0.12312342671904897, 0.9995514611495887, 0.13828849181739347, 0.1862851686084572, 0.3869976576911773, 0.04506146666666667, 0.4252652333333333, 0.9997351666666666, 0.9998199666666666, 0.2867979751106378, 0.4691186577799865, 0, 0.09980692629339083, 0.9995738830729948, 0.9999052481882933, 0.19347532306474294, 0.05506807776096475, 0.930871631155743, 0.9996412649566963, 0.9473789313660518, 0.609563046621731, 0.646223242009076, 0.1569569235983542, 0.3705939346231882, 0.38823279684368256, 0.6067486, 0.2447919, 0.1586074134725893, 0.4293597340690851, 0.7112703666666667, 0.07951613333333334, 0.9992553666666667, 0.08110886666666667, 0.9983416, 0.04572213333333333, 0.9998055333333333, 0.9999403915409936, 0.9999134666666667, 0.10073463333333334, 0.7429919649871433, 0.36126628253459303, 0.5523373580228887, 0.27803213936925947, 0.366447611224409, 0.9243543498158028, 0.011988407713567744, 0.9993820643185111, 0.28086906532682326, 0.3816312857757955, 0.2920973925604026, 0.6404631386553283, 0.7817179, 0.6845465930814774, 0.8001172488776257, 0.33833734681193045, 0.6094808697880584, 0.232905115461805, 0.9526749602055751, 0.6160121222725538, 0.1039891986252614, 0.5662582666666667, 0.08039410484337955, 0.5103029787680873, 0.9493999772668008, 0.7532173668507929, 0.14099458243278556, 0.09130861398811231, 0.5958850566282932, 0.040936788893131126, 0.9648251666666666, 0.5785216735857435, 0.5578574333333334, 0.9997315288287654, 0.9619798632472011, 0, 0.9995037323904249, 0.199413172514655, 0.21069246362864694, 0.24984327985206847, 0.9994270466000651, 0.9994221001514452, 0.948212376981058, 0.0802522097589583, 0.5596699674380353, 0.12809540365667482, 0.9480222116728292, 0.4771659384110501, 0.2801996473349525, 0.38199374898228877, 0.42068889465750126, 0.4519178022237217, 0.9996941974643199, 0.9998918333333333, 0.8701988, 0.1891416301351603, 0.29155773878722285, 0.6186150333333333, 0, 0.9998478514269183, 0.9993097660224483, 0.344087286579456, 0.5932537271820817, 0.6045438449020918, 0.06655770824964946, 0.5243928669583005, 0.33129896924776736, 0.3033448465792273, 0.8641394145358564, 0.1431843, 0.4187363372999599, 0.04619161131855761, 0.9997435333333333, 0.068008, 0.9993776, 0.1837587, 0.12785625162971642, 0.6620260189240076, 0.14207844959581709, 0.9993266850158359, 0.9998694178295143, 0.5079695979581456, 0.08636673454641354, 0.6951363733022201, 0.3133385996449669, 0.2494071994675725, 0.34948026216766964, 0.10951182385922546, 0.637717386216995, 0.31319834303060545, 0.04607467946638991, 0.9998819663322379, 0.5787960122827074, 0.9995825145697391, 0.20690903957720325, 0.029306073025614755, 0.9920238666666666, 0.5748419002177707, 0.6067476, 0.32163875309094003, 0.17914336666666666, 0.8517587757778804, 0.9435698779731287, 0.8470902691684365, 0.0602862478772043, 0.5859783545554303, 0.6015111042814622, 0.35677773333333335, 0.2774608333333333, 0.9993857333333334, 0.3230097857224246, 0.37977952112755303, 0.6747581333333333, 0.12809795431905924, 0.9856448778445444, 0.6875342751695024, 0.5415252955647283, 0.37093313333333333, 0.08379056666666666, 0.4499732677706886, 0.3898381435102054, 0.9993621, 0.0420389176697712, 0.7391223231808349, 0.06255417586996784, 0.34699010500841476, 0.976851751753916, 0.32308145706438857, 0.15740192086122745, 0.9080354487666422, 0.9998671364160665, 0.14862800846017366, 0.7822564666666667, 0.1755579, 0.11075445172210664, 0.11721534550210982, 0.5617307988045012, 0.9144573451635118, 0.9995521253007122, 0.27176242469627776, 0.999983518430607, 0.5212922170331992, 0.37582814358902084, 0.19749716955273372, 0.9994524307807516, 0.37394397603653357, 0, 0.703195130838213, 0.07497375652743697, 0.9060220881511523, 0.9996540872944327, 0.7663994523165114, 0.23268241473424356, 0.22771610313388654, 0.6990911775744102, 0.487665601326549, 0.43559348073454124, 0.23102953930125233, 0.41516024260871603, 0.43634215709653434, 0.5806124058588802, 0.29416700524857853, 0.1804322540460025, 0.7810860276465277, 0.09858182529701001, 0.9088110372404096, 0.07269404644737322, 0.9998611679865033, 0.5933433896316482, 0.2639398010268638, 0, 0.9994268666666667, 0.9998017666666666, 0.999627763488953, 0.27074993333333336, 0.40509619023690036, 0.12512466666666666, 0.9733929, 0.7004459855048455, 0.11087066025352557, 0.7577127055792803, 0.30976271023183977, 0.999777248079379, 0.5391937119861757, 0.13475661346157009, 0.9996047944613913, 0.2629977624753842, 0.7223627875664999, 0.3456617, 0.9995557, 0.7245151333333333, 0.4599257824734147, 0.29073193333333336, 0.2918576323112853, 0.8453616556708786, 0.9665331666666667, 0.3028865666666667, 0.6958326, 0.08811616666666666, 0.18929034201898154, 0.9997131330655908, 0.8224715666666667, 0.7642695666666667, 0.13797046148897732, 0.8995412979162858, 0.18244408635941187, 0.44185273839809147, 0.9998984339611209, 0.7596326189590871, 0.07746543114556856, 0.9996060985163044, 0.25931566666666667, 0.6630482999982816, 0.09521498886732294, 0.2623494, 0.19398610590092108, 0, 0.9998005333333333, 0.999492861887034, 0.36067123333333334, 0.9564526666666666, 0.2175162, 0.9999079100741874, 0.44004527737559224, 0.26668369887006554, 0.27778972332966284, 0.20430342380318237, 0.9549928241452857, 0.33415752941238885, 0.9799401904393903, 0.044690777035394466, 0.591173231553296, 0.23837618730038773, 0.9999585997640187, 0.7040426487299463, 0.13894199294661966, 0.4061273, 0.284491, 0.2778921716277388, 0.3959057, 0.7131902, 0.0892207, 0.8982707613985056, 0.11627160852016795, 0.4000545, 0.42349842045908836, 0.4314194170387698, 0.04354753333333333, 0.9999441212322834, 0.9272612296858553, 0.5197365463411593, 0.183366, 0.5274980981071983, 0.23076456040778187, 0.9920748978679665, 0.6584953397576568, 0.03829256672370136, 0.22449857689592043, 0.36079328629668533, 0.27782186666666664, 0.5505227521341256, 0, 0.9995001209986244, 0.9987181, 0.21791716666666666, 0.12884978848512238, 0.9997519331018042, 0.7864286, 0.9999969, 0, 0.2439910943916881, 0.5297467588069499, 0.9074176533436468, 0.5232931900571519, 0.9995698654479521, 0.3897396850649069, 0.10276229000072241, 0.46018321760822134, 0.06362283448141655, 0.6123754498705947, 0.9993039713444601, 0.9189420035971945, 0.39413582777359296, 0.20268221253482405, 0.915726165069006, 0.12666181502624288, 0.627315793889334, 0.9998595222016434, 0.9577665180096729, 0.10860989830236492, 0.9999322022327752, 0.9993586413043642, 0.4255684560319021, 0.053780700366403034, 0.15208691470956573, 0.5212417733103761, 0.20309255529247805, 0.999311958180831, 0.9995826642878531, 0.830132723027224, 0.04847348820747178, 0.13399383333333334, 0.49723815305645963, 0.11479670714359333, 0.5415552666666666, 0.06822165177629289, 0.07167247611821449, 0.9589353173621465, 0.12082931298158638, 0.36196467957583034, 0.10400903017800014, 0.9997686734464843, 0.9996608653779551, 0.8153579954429327, 0.1677755465990749, 0.999663369675884, 0.350948767074639, 0.6681179666666667, 0.11069513333333333, 0.12441942890565971, 0.8926984331852043, 0.5659975, 0.4063668, 0.47391343333333336, 0.9997034103802362, 0.6642982866784009, 0.0539119, 0.8069956666666667, 0.0671746, 0.9110860421868622, 0.9993680660768617, 0.6099986, 0.23047912953665922, 0.9672154690766689, 0.16001070513057497, 0.6542596241880266, 0.5415393050327291, 0.5969854125106333, 0.7636190915858743, 0.33147679460743645, 0.3845300959583117, 0.22111897358543295, 0.9996387792286111, 0.18403623777152545, 0.0582103179042716, 0.5687820594005015, 0.29775925914433155, 0.47289053684056104, 0.9999007691094705, 0.15482550484632002, 0.087261904865181, 0.299464378780553, 0.9617943666666666, 0.1018502, 0.1065053, 0.9994471333333333, 0.1336464, 0.6788755666666667, 0.1853126, 0.9092324988684785, 0.999432966137435, 0, 0.3635102010446534, 0.4347861058003654, 0.3981969989477266, 0.16456953333333332, 0.9046306384851475, 0.999585799613413, 0.09004648109884204, 0.9719977143957336, 0.9094450707423787, 0.17440932167943404, 0.99962236770057, 0.4661810226151852, 0.09247535050358699, 0.7635030551310258, 0.09183883333333333, 0.9995464571153732, 0.14189636576994138, 0.9410791, 0.23277783333333332, 0.7214023666666667, 0.7113209333333333, 0.9991133, 0.4088377, 0.09435113278550163, 0.021638933333333332, 0.6426248, 0.7191392394673398, 0.4528563056991451, 0.5797625986147259, 0.13120868262983032, 0.22335546431962366, 0.45374032680723714, 0.1037621545287403, 0.810464279764263, 0.9993659333333333, 0.9996081173265694, 0.3405645714143723, 0.2650968900401179, 0.7022637111032417, 0.11160516488015758, 0.8062676469822032, 0.1484688437188716, 0.34192151069912435, 0.9996334, 0.6245145, 0.07853553333333334, 0.9527350666666666, 0.05484021813968006, 0.19290438004408805, 0.9857267488485495, 0.25256873812831115, 0.06808364410126722, 0.5700687429858782, 0.41114371474007344, 0.8881006516939748, 0.05193052875296418, 0.9997972733533474, 0.7328950060510427, 0.883322729290304, 0.8976113425291352, 0.1660051079758769, 0.6798465618761396, 0.7700988819468322, 0.02817329104302814, 0.8992844110952501, 0.14763188761476745, 0.11680144415786542, 0.9993778561984304, 0.11029669523991213, 0.999543330146228, 0.45561949153363185, 0.16163400938144548, 0.8980254451189141, 0.48363058500726996, 0.2669444143887747, 0.8996203978760379, 0.17390954387988988, 0.06138983419611725, 0.754932084436158, 0.9157317317068825, 0.0739843240960165, 0.999537115602814, 0.49354708429117394, 0.625225984891732, 0.09756833474665853, 0.2515545980493852, 0.9998691654237382, 0.2418506, 0.9999568088428317, 0.3078187657257308, 0.028564267937817727, 0.48497783333333333, 0.9148850333333334, 0.9998391333333333, 0.9995039155735576, 0.0676708313074342, 0.7254058544674079, 0.4588657470864731, 0.9996218948940614, 0.18417328571124825, 0.10397429811247584, 0.9997347152321818, 0.8232571008216989, 0.0719773202907175, 0.9995211982334833, 0.11399824125108668, 0.5729935945868241, 0.09146165795131225, 0.70796507302745, 0.17559533085343743, 0.5043802563977655, 0.4458003617939376, 0.12766883919776317, 0.9998252916328854, 0.5203760770193072, 0.0753323436634139, 0.34842058536561277, 0.3573013034319794, 0.2583696451437957, 0.9995590299966604, 0.48702433333333334, 0.07750026666666666, 0.6085424, 0.4394097836537379, 0.9997439997610664, 0.2859137616410867, 0.023595281584935377, 0.32668829849791703, 0.8990704870961029, 0.013400076350263503, 0.8983698624641451, 0.9999000381077577, 0.9995985739113815, 0.9995832988193466, 0.3482214248487352, 0.9988495956668103, 0.04445173333333333, 0, 0.9039202459147085, 0.43443314099263847, 0.22237488382666604, 0.6913415901255151, 0.9690137178938394, 0.6159240077829407, 0.1401732018941872, 0.740666149597823, 0.2995162218479357, 0.5858118583221824, 0.1153602768021956, 0.7904822781340055, 0.09476735245150808, 0.903666226807622, 0.9998436470242485, 0.5826305406554226, 0.30895794978408686, 0.9994104808627212, 0.25505890573077206, 0.25691572307382987, 0.9465158029165357, 0.3301339182089287, 0.8956323867086616, 0.14683971501382267, 0.5522387830173591, 0.12962242789688136, 0.9993914523171148, 0.599059563327178, 0.03521165277044149, 0.8100976206531356, 0.10905503440067932, 0.5890822473773243, 0.37393325832016594, 0.565004200109387, 0.0755200473068007, 0.9996346088269111, 0.9993117211503435, 0.9983036370554054, 0.04295013807672633, 0.2056512058624909, 0.9998407222639147, 0.1926051782397231, 0.7666189812687665, 0.8932160526948075, 0.15508495598949942, 0.057184257727850615, 0.9376070343449074, 0.2925827350184491, 0.1317448026212627, 0.3942964244246173, 0.7178700125772904, 0.7919974124270365, 0.7698913311029775, 0.5534404528056918, 0.04502706091000591, 0.9281460617845092, 0.4388706, 0.46205953446874204, 0.32674847163190684, 0.462338, 0.9994265266633798, 0, 0.032565930848925846, 0.9480461662225881, 0.8104434, 0.11266952178802601, 0.9998135998260265, 0, 0.37473953284712797, 0.3757929666666667, 0.08411246666666666, 0.9998352941685777, 0.7007882774286682, 0.2652424, 0.9997934666666667, 0, 0.9997862, 0.7636707244624376, 0, 0.9998921333333334, 0.48205459297670844, 0.9999883666558089, 0.4968657, 0.24007726878630317, 0.5602547562377724, 0.37393019183383813, 0.3279894634220633, 0.3315392446636456, 0.02494417341671715, 0.9873929032301202, 0.5184876062950943, 0.4404563021108444, 0.9999691063313317, 0.9998032909648906, 0.4401851148626601, 0.13609091802085826, 0.3945949921281186, 0.49537476347443515, 0.5781182649714893, 0.20340894864869122, 0.8287387814265473, 0.5979793544477892, 0.048510566640057984, 0.9995442532314428, 0.5307874790607342, 0.014414, 0.0747765, 0.5288375666666667, 0.12809788758722893, 0.9997730997882265, 0.9999306, 0.9997681930261766, 0.4251642, 0.033154133333333335, 0.6418465965348497, 0.9995029328694041, 0.9994830666666666, 0.7017340766591911, 0.09953720325657038, 0.26086261784685805, 0, 0.24328493333333334, 0.9481495666666667, 0.9998477179632578, 0.8136260260509577, 0.6588300007456059, 0.12556733333333334, 0.8575564, 0.1964494, 0.2812882666666667, 0.1337432002350295, 0.6947597817757963, 0.9997036, 0.28911143333333333, 0.9999062333333333, 0.2283786, 0.17293693958817452, 0.4560339419903613, 0.3673108296949071, 0.17728876511924901, 0.783366653071322, 0.08689552149902001, 0.925397558070927, 0.7519357653398948, 0.9953691225630322, 0.18433913252786488, 0.009079747374677032, 0.9999798075505787, 0.19027946640136606, 0.44638983424823314, 0, 0.8038910380697196, 0.5285898031125562, 0.056189030126535734, 0.5654419007183163, 0.9322235488864629, 0.9999611907622659, 0.7746653274414631, 0.3136532232940084, 0.22483683473908073, 0.9996170168750708, 0.3248943909174183, 0.5790572074270699, 0.9997117370224048, 0.45484872399155335, 0.5780824045668129, 0.1300972619659325, 0.2340078, 0.1979862335570685, 0.26242497826331307, 0.7441876666666667, 0.37213679157697493, 0.8974455376158351, 0.6591014359424757, 0.3299379935488544, 0.4367026031602653, 0.45447165433635395, 0.08284296666666667, 0.9262539202864931, 0.4181434438786808, 0.343932782830791, 0.09077147972562012, 0.999797234941241, 0.13265161360129232, 0.9987322666666667, 0.6330363600055454, 0.14783601909834793, 0.182236144449422, 0.9066455493076404, 0.8486371550304411, 0.1958210579898039, 0.049906081486354954, 0.9999743916709679, 0.5793013762604515, 0.0865843154186857, 0.35735766677141767, 0.6536930082040104, 0.11665676694333466, 0.8295695421104673, 0.9603584417164993, 0.22846561010356228, 0.11122459097304806, 0.7219125669285694, 0.3397393515396981, 0.9989391579042666, 0.3964617447061734, 0.3459187889891081, 0.2605859052256819, 0.6704379297644427, 0.2618780676816477, 0.9995264695734178, 0.9994313216049829, 0.9998657684082962, 0.08217522652556135, 0.22174790121546273, 0.9998367657307902, 0.48243556666666665, 0.6749928666666667, 0.7534101666666667, 0.9993491310931791, 0.8082251426935473, 0.03125052654101002, 0.3896174228267807, 0.1751444279749974, 0.6094110266645756, 0.2189616, 0.4956629, 0.4427672955974843, 0.5939149876539884, 0.11451253333333333, 0.213463, 0.9994284, 0.8639098333333334, 0.3412042192534343, 0.9998360132202068, 0.854293476730388, 0.13828584352860615, 0.9995872961968422, 0.3609833948869424, 0.6221912741338868, 0.3467182957534671, 0.27031022745965294, 0.20722168775671165, 0.2980177, 0.34566556666666665, 0.2921269, 0.6470798, 0.1342484, 0.9572122489056103, 0.20666756644531423, 0.08761760995981539, 0.9993560987765877, 0.04506665988669981, 0.4529754500971086, 0.07549253235335138, 0.9993502642193286, 0.021119269182270407, 0.8491894062804501, 0, 0.8596803605401596, 0.4259673665393613, 0.9996220600944489, 0.9997523231673165, 0.24907138464014378, 0.25796963333333334, 0.993229744487841, 0.32099316666666666, 0.10378407848597489, 0.9879745554429185, 0.1708712, 0.16072816666666667, 0.7927444517095723, 0.9995199712934251, 0.5203229076594813, 0, 0.5311067257176633, 0.7899783904834498, 0.5382817858362621, 0.07378867841523423, 0.5016940245117377, 0.8381392192284866, 0.3847265164236689, 0.06328187929865801, 0.9693961666666666, 0.19661089053460704, 0.9679645701002654, 0.10329099339330906, 0.41094696710100526, 0.3599147, 0.674088, 0.1780235399867971, 0.3822960340114593, 0.9998519219252846, 0.29145205375890215, 0.08749613333333334, 0.9999408244515897, 0.9996806333333333, 0.9996163, 0.32960236666666665, 0.9995266955151628, 0.12209533333333333, 0.3320133, 0.9996931995905998, 0.2086890951310837, 0.5444302128438566, 0.18218791426384556, 0.2803874344064275, 0.9999248134358523, 0.540619248625237, 0.6074929834338382, 0.9999919236599075, 0.06069792892228007, 0.9998848119320852, 0.3929936666666667, 0.07137252860751858, 0.7438880942955547, 0.17413906666666668, 0.7545552899072611, 0.41931609964758537, 0.07951805958597664, 0.9974099415294718, 0.22600209464947488, 0.07303920937906688, 0.8833692090243448, 0.5978387682693821, 0.41170940285234786, 0.9997798366877177, 0.7474852067049566, 0.29079713294241144, 0.8907293345190257, 0.07232616281034795, 0.33098684144323726, 0.3074105366081812, 0.8708981285228101, 0.999560474940893, 0.3733347040077345, 0.49118292172294925, 0.219876506387806, 0.15862219581801115, 0.26415058896071114, 0.5151022217688911, 0.3277378424781571, 0.7401609629830962, 0.9997472603151891], 'oldestBlock': '0xd10b19'}}), + (('0x400', '0xd10b17', []), {'jsonrpc': '2.0', 'id': 0, 'result': {'baseFeePerGas': ['0x16d60882d2', '0x192e89b406', '0x186fb21aec', '0x1665b16191', '0x19323fb45b', '0x173d931909', '0x17ec82d968', '0x16093c71e9', '0x182e6359e6', '0x19a862d278', '0x18bf901805', '0x16278f4b23', '0x169d99824d', '0x1408d8e2dd', '0x16893d02ad', '0x195a40b56c', '0x1c85259af5', '0x1a1d340bcc', '0x171b79b7ac', '0x19c57a1fb4', '0x1ac914351b', '0x18bcd15c3a', '0x17624870c5', '0x178772c271', '0x15d398791a', '0x14b3d0ce11', '0x151a669dcd', '0x1628961764', '0x13d139bf72', '0x1636832665', '0x163c0aad0e', '0x14e196cdc8', '0x12e47baa65', '0x14ade1a116', '0x1371641553', '0x15df36b29f', '0x16f7d62b7a', '0x19acdb723a', '0x170c44ac5d', '0x1959d2c571', '0x16f1c99762', '0x15ad28338a', '0x1413eb536f', '0x169528e4fe', '0x160144e003', '0x148c16826c', '0x13e9ab275d', '0x1406b267f3', '0x11cbdb9126', '0x12b64535f1', '0x14379cfba7', '0x122dd5d225', '0x147327eea2', '0x134b739dc4', '0x159bdc47cb', '0x1530e49cce', '0x17d694e815', '0x1621f45ac1', '0x14eb50aeb9', '0x12baf63563', '0x11a709535e', '0x13dbb746da', '0x1241a836f5', '0x148987898d', '0x171a6e479f', '0x184784a461', '0x15a59afbba', '0x1466e6e941', '0x16f2fa5e69', '0x14dff27c6e', '0x175cae6fed', '0x15d4364b47', '0x13c609a12b', '0x120087720d', '0x13de9d82f8', '0x125b45f6e8', '0x104a755e96', '0x114b214e9f', '0x11ab0a1e65', '0xfa0a38b66', '0x1162182926', '0x12ee45811c', '0x118d46b781', '0x104f41277f', '0x1225886e06', '0x1469efafee', '0x16f729ef84', '0x1564def485', '0x142c7eb8ec', '0x14f4c49745', '0x12fbd957b1', '0x155ad875f6', '0x1806039bab', '0x1ae5797ef6', '0x18735e7e24', '0x19d2d49ce3', '0x1852af47c2', '0x186fa76791', '0x19498ba42e', '0x1763ff6c73', '0x16a7ad0fb0', '0x152f1009c5', '0x16688cd6c0', '0x15e479ca2c', '0x14a31daaed', '0x17374b8c27', '0x1a1e16b6a0', '0x1b16dd1fc7', '0x1861c916f1', '0x17e32e6147', '0x15aec6fac9', '0x154350ead3', '0x130cba6cc9', '0x156dbcaca7', '0x1492da01be', '0x1725063f13', '0x1a0810f2a1', '0x193935c5fa', '0x1c35e70dd0', '0x1cb2189f72', '0x193c74a7d5', '0x1ad5e754b3', '0x1a6e65ec89', '0x1783d9429e', '0x16d985994d', '0x155204dedd', '0x156bca8f5c', '0x157c629070', '0x133e51a829', '0x13fbc53e41', '0x167a78785e', '0x19492b5b94', '0x162005f022', '0x18e3533373', '0x17148c0729', '0x15762fb78a', '0x14e07edf1e', '0x1336ebf08f', '0x129183148d', '0x120c214ac6', '0x1440702124', '0x16c83b9ec5', '0x13ef342aed', '0x166c79384b', '0x158d1e9474', '0x147568320b', '0x17034cf3e0', '0x19e383f5be', '0x17ef4e5635', '0x181428f959', '0x18d2723319', '0x163c381948', '0x168529a00c', '0x165035cb9d', '0x165e4e81a8', '0x14ae303e5c', '0x1583634250', '0x133e817220', '0x12ff1ea88d', '0x129233b059', '0x10f5d7c805', '0x131486bea7', '0x135f883094', '0x11a08b774e', '0x12aad3799a', '0x12cb813edb', '0x10c42a08f3', '0x12da13bb58', '0x131df129a6', '0x1336c4d02f', '0x159d81c4ee', '0x141088060a', '0x1269414ea4', '0x14352cfe2e', '0x13e7d274b9', '0x137bcee59a', '0x1511b4d7f0', '0x1508c354bd', '0x1267aaea26', '0x1490016553', '0x13798e5cf2', '0x13a73ab136', '0x13384ea744', '0x10d144d25c', '0x12c5309280', '0x150458e067', '0x143c561982', '0x15e307777b', '0x179ddac0a3', '0x14aa1f688f', '0x145e9a3f96', '0x16286d438b', '0x146099e3f4', '0x1479db1f7d', '0x154afd68f7', '0x152d100b92', '0x17d22487df', '0x17c0dd8382', '0x192f1c3afa', '0x1694ea9484', '0x196692bcb6', '0x18d1d3c375', '0x162669eaca', '0x141a8846f0', '0x1386b0fbd4', '0x1286b5c767', '0x14d741f844', '0x1771def138', '0x16f1484c79', '0x17d680eb28', '0x1a1cd2645f', '0x17c1f83cff', '0x190df2265f', '0x171b70b967', '0x154d13a92f', '0x15a19ba45c', '0x15385c2dfd', '0x14c389ef8d', '0x175bbdd153', '0x18e535cd7a', '0x164a23ca09', '0x14cf5dbcc9', '0x158e8727fc', '0x14bf138bea', '0x1349acae7b', '0x15b26fb4b9', '0x17c8bfaa59', '0x14f1cfc96f', '0x1364584377', '0x14f522840c', '0x135dccc427', '0x122d91da44', '0x130447f127', '0x11b321ad1f', '0x12bdda66e5', '0x146d6de642', '0x1480b5ce06', '0x127ae87e84', '0x10c9022017', '0x12e178682d', '0x116c8c6eb8', '0x10e4501362', '0xff3727646', '0x11b3645ca7', '0xf7cf7d113', '0x116c897add', '0x139987b622', '0x160ca4ed26', '0x14db572ca9', '0x1775d6164b', '0x14e0fb9e18', '0x177ceb4d50', '0x1a6bbe821e', '0x1db90bf8b9', '0x1b5a07d788', '0x1b5c463a4d', '0x17f97aa599', '0x17885d0916', '0x14f12dd1d8', '0x173265eda5', '0x187c8d5929', '0x162782cbf4', '0x1573a073be', '0x13b6e07d4a', '0x162d983c06', '0x167cdd1b49', '0x16a807e4a9', '0x146c0a27d9', '0x120db43497', '0x144ecad4b7', '0x12ad8998f4', '0x127a34ce2e', '0x138c85c691', '0x1186c2953f', '0x10f88b8226', '0x12d42738fc', '0x10a80ba014', '0x12bcbb0bf2', '0x12cf1e13ef', '0x11cdcab73d', '0x126cd24369', '0x12a9696a98', '0x13a333347e', '0x126373a8ba', '0x12a913ac87', '0x14fd7030d2', '0x179bc874b4', '0x1556054c72', '0x142712be6d', '0x16ab6f789a', '0x19805ddf55', '0x1cafd344cd', '0x1a646d9135', '0x1996567106', '0x1c7fd66833', '0x194062546e', '0x185a71c6a0', '0x162dd04736', '0x18f3152f50', '0x178c80da88', '0x185244a8bd', '0x15aa2635ab', '0x185f5a3e6a', '0x1abde03f49', '0x1797ddd680', '0x18197e1ef5', '0x1997e2d0b4', '0x16e8ba6259', '0x148a363371', '0x15186b60bf', '0x1554ccad39', '0x17ff653f69', '0x187cb2e289', '0x1b48c4d927', '0x1933669db9', '0x176d3aed95', '0x18f35d5a02', '0x17eacf2c79', '0x15dbb634ed', '0x13af400433', '0x15f155e77b', '0x168251b8e8', '0x1621212c96', '0x1696146a40', '0x15e74b9ce5', '0x1419e5a8a9', '0x12b7ab5016', '0x1133dad8b6', '0x1359c77f42', '0x15c47df05e', '0x1714c0209b', '0x14acfadec4', '0x1584d56d80', '0x154cfd58b8', '0x13089f6281', '0x1511b9f537', '0x139ac2f09f', '0x13c0fa50b2', '0x11a3310b6f', '0x10c5e535f0', '0x12de44ee6d', '0x14fc29380c', '0x1472f8c499', '0x121c3ba270', '0x114f558d2f', '0x1378fb8b4d', '0x15e807fdc5', '0x13f8d9b1a8', '0x129514c355', '0x11c80ac0e0', '0x1400f54832', '0x11ca4a7927', '0x1403265d21', '0x168328cc88', '0x15f8136eec', '0x13f05f7a66', '0x166df10a0a', '0x146c2d29c8', '0x126fdf7f71', '0x137d98d5a9', '0x12134c3702', '0x11c7ca4cca', '0x1400a76bad', '0x16807210ce', '0x183106caaf', '0x1b3674c354', '0x1c22558611', '0x1931bed1b7', '0x17ea0697c1', '0x17ac4a5c30', '0x17149169c2', '0x1716cf27b4', '0x14ab5cdaf9', '0x17308046c1', '0x1a15a16190', '0x1d5848a5b0', '0x1dd8f3d1eb', '0x1b502352ff', '0x1a60f9f579', '0x17a55c9b3f', '0x1979e583a3', '0x1ac6607103', '0x1853e94287', '0x1704d5067c', '0x19aa0c0711', '0x1c9a72b4e5', '0x1da650e908', '0x1cc6630abd', '0x205345d24d', '0x1fe7775da8', '0x2018122470', '0x1cbce1052d', '0x1d832f0a0d', '0x1e213c524a', '0x1dbfa761b3', '0x1e01964f34', '0x1a4163854e', '0x1a234170c4', '0x19a0396d6c', '0x1c02c8a01e', '0x1b9d36a707', '0x1adc5465e5', '0x1b5b9ca323', '0x1ec68bc636', '0x1ffe5c319d', '0x1caa564362', '0x1a73dc476a', '0x186670e443', '0x1823e37e0a', '0x15d2c7e96d', '0x188c6de2a1', '0x17c4020599', '0x174dee7dd7', '0x14d6eb8c31', '0x162003852e', '0x1587046e11', '0x1837e265ad', '0x199af41873', '0x1ccdcb0a40', '0x1a470cabc5', '0x192c82a53f', '0x17ed26707e', '0x18a9baf20f', '0x1b6b9544e7', '0x184dbd72e9', '0x1606415e01', '0x14c98eac3e', '0x1324eec748', '0x14d53420db', '0x1503a3a324', '0x1443893b14', '0x11fbf427e7', '0x1198b86112', '0x109dff42b5', '0x12ad2fa90c', '0x11e1f5a607', '0x141da0e482', '0x149aca1594', '0x13683f1d3b', '0x15d4f5bb16', '0x185e5b6555', '0x16f11304eb', '0x17ef5dce79', '0x151be31fd8', '0x14fe5b600e', '0x12ad634ef0', '0x13926add1e', '0x1603dd34b1', '0x14bb42a81a', '0x14bebf5abc', '0x138d079e9c', '0x12793ca48e', '0x1293c96b0e', '0x11e5efcd9f', '0x14220f51c1', '0x156120be48', '0x134247f9d1', '0x130b782fac', '0x144a3946e2', '0x1435dd819b', '0x1293d7c500', '0x11a8e99c02', '0x1123fc4226', '0xf80e67d67', '0xea2d1705b', '0x1076f5d0ae', '0x1285be86b7', '0x14d65f8fb1', '0x14745712c0', '0x1630b91070', '0x13ee4f3f06', '0x166c0ee417', '0x17ff52be7f', '0x159180cc5d', '0x170167e526', '0x14b2311734', '0x1301608038', '0x1470e4a6a9', '0x152fb3e046', '0x17cbfbc2a2', '0x15ad93886f', '0x1862cbe05b', '0x17964ed4a7', '0x1582a8271e', '0x1832cce09b', '0x15b702eb33', '0x16491a0884', '0x190b4fd611', '0x191b512cde', '0x17a1cc3a2f', '0x17b3a77153', '0x1aa9d9a836', '0x1b4eaea918', '0x199f20a375', '0x190c015f93', '0x1c2d18ab3c', '0x1f7f2dfe1b', '0x1e0fc72400', '0x1fbf2677dd', '0x1bd861eb10', '0x1c0b270e8e', '0x18cd5adb77', '0x15e94122a5', '0x18a6157447', '0x1bba7cf5f8', '0x188c2c2d30', '0x1905994b6f', '0x1bc2cda9fc', '0x1df54325ad', '0x1aa731d5af', '0x199d84cf72', '0x173dae2963', '0x19e33641ee', '0x1cd4cf4967', '0x1c956b0cb8', '0x1bc3b67a64', '0x1f3b2606e1', '0x1ca5573132', '0x19adb556b4', '0x18db2dcaae', '0x179cd79fe8', '0x1556596034', '0x18008fae5e', '0x1613a5e8a8', '0x16b223e4d0', '0x14773fee04', '0x1364d4c24c', '0x15d0d408cb', '0x152947cc85', '0x135e1da4b2', '0x151926b304', '0x17bc285ec8', '0x19c3977c0a', '0x16a5e8c904', '0x149c9f31a6', '0x172fdbc219', '0x1a15b93967', '0x1835f8c9bd', '0x186189c2d5', '0x1a8e881b83', '0x1c4a52cb55', '0x1d90cd3591', '0x1b64de6127', '0x198f2589d2', '0x175a63bdbf', '0x15ee79b271', '0x155b6d392a', '0x18061f584d', '0x17fc984804', '0x17ec8cf3fc', '0x1560ef50b0', '0x13ef532b9e', '0x12228b214b', '0x14661090d4', '0x1529e1b0e3', '0x17cef64018', '0x1617ca39ae', '0x13c51bb0dc', '0x147ec9fc7d', '0x1435ccb1c7', '0x1435284a72', '0x1221810c7d', '0x12bb00476d', '0x12a084cf99', '0x1112530a73', '0x110e5e160c', '0xf0168cc5b', '0x10e0eba1be', '0x12c4612ed8', '0x11b5aeeaba', '0x119e94662f', '0x11898af57e', '0x13ba4dfdb9', '0x1631183d3d', '0x1539bd009f', '0x13b5a1714c', '0x14604bcb5c', '0x13d6b18149', '0x11a51f9f5b', '0x13d98bbcf9', '0x1654378a2e', '0x184c56064b', '0x1542cb4582', '0x131a42c0a7', '0x157991739f', '0x161aa2625a', '0x13f307f3ad', '0x128a1061f0', '0x1441725609', '0x13ad67016f', '0x11a4b7043c', '0x13d8dce7ae', '0x14923b6988', '0x14f58e1f22', '0x177db2b038', '0x153c1db19c', '0x141b09ed26', '0x1268c559fd', '0x134a364ee6', '0x13315786f9', '0x1597611a62', '0x168ce539e4', '0x1704671bd5', '0x15df4e5541', '0x1599d0d81a', '0x184cd4985f', '0x1b5665967e', '0x18dccd5a71', '0x15c133af23', '0x15593acbca', '0x15601653b1', '0x149be95f20', '0x16498ed4e1', '0x143810350a', '0x16858f6366', '0x1955ea834a', '0x19847db4be', '0x1cb0788160', '0x197c79ef66', '0x16e4d09603', '0x1969c952bb', '0x167000c3ef', '0x1652d2e53b', '0x1513e4969f', '0x14703c9544', '0x1652612b71', '0x13c628cdd1', '0x12265e91cc', '0x13bbd75fa9', '0x15fe9c09b4', '0x16e97e4ad8', '0x14b230250b', '0x1747f364d1', '0x17dc4c4dc0', '0x154193e0c5', '0x17e920a01a', '0x18fd2505a6', '0x1806209e5b', '0x16c5492046', '0x19318d8958', '0x1c56e7dab1', '0x1b6be4231e', '0x1ace1c3481', '0x17cca633b5', '0x16e8109cb1', '0x1703d0c502', '0x14f499e9e7', '0x17762fd7a8', '0x1576fcac5c', '0x1391bd526f', '0x147b6fd190', '0x123aaa7bbe', '0x14813e7cdd', '0x155ccb7ee5', '0x1807ec4359', '0x175fb9ef34', '0x151061f0d8', '0x1589eb8b6c', '0x149a7fedbe', '0x143ad91899', '0x16171e1752', '0x18c82e668d', '0x17f70c08ca', '0x163e1fe987', '0x1609b13173', '0x16e74041c4', '0x19674a101e', '0x17467f2976', '0x153bdc40ae', '0x1424a8bc8a', '0x127f560928', '0x149a695fe6', '0x13e75825a5', '0x133ee60769', '0x13f135947a', '0x166f124018', '0x16c68af8ad', '0x13edb99998', '0x121f57c283', '0x120f3c36e3', '0x1093a81a87', '0x12a6079c08', '0x120dae53d8', '0x109951472a', '0x117e342961', '0x1195ad3cd0', '0x104eba9716', '0xee5e7e1a0', '0x10c2676582', '0x116b3157f9', '0xf69b5708d', '0x1156a8b10c', '0x1381085219', '0x15f0782a44', '0x16b7a48e34', '0x195bdab72d', '0x16b7cd204f', '0x15cd13e8a8', '0x165e285940', '0x13e9795b0e', '0x142b50be4a', '0x1203710e30', '0x14429f9d0b', '0x124ffc01a8', '0x11dbdfeebd', '0x11185dd9b5', '0xf94559598', '0x10cc45a78c', '0xfcb538473', '0x11c49e5d46', '0x120f5fc02b', '0x1006ba7e5d', '0xf5c6f62ed', '0x11478d72bd', '0x1370519fda', '0x1395d1f1ec', '0x1532cdbce6', '0x13ca02ea1d', '0x14c7e104a4', '0x1335db0097', '0x159c1a2b54', '0x184f03a39c', '0x15a5618bb5', '0x1435e9ede2', '0x12b727e97c', '0x12f4e2e842', '0x1099d886b1', '0x123496949a', '0x110409bc56', '0x13246a2ad8', '0x1178099e58', '0xfdf314916', '0x103af0a632', '0xec9572d10', '0x10a25ddf7e', '0xfeb373320', '0x10ca2ccce4', '0x12cc6e76fc', '0x1161d0ab39', '0x10ba1853f3', '0xedb7e10c0', '0x10b6745302', '0x12c91eb8e7', '0x11301e853a', '0x1076febc6a', '0x1234226dd6', '0x1386321063', '0x119fc8fe09', '0x10fc963280', '0x131b7885e3', '0x1405758e9a', '0x1196a96e4f', '0x109a38bbbc', '0xf1c7eb95e', '0xee4a30d11', '0x10c0eaa686', '0x12d8ed0430', '0x13b115ddf3', '0x13fef4823e', '0x122c8f878c', '0x10ec8d109a', '0x130988cc60', '0x156a8f1ab4', '0x154dee05b6', '0x14cf361d44', '0x12e37e17ac', '0x1315ae079a', '0x113b4a571c', '0x1362575035', '0x13274e6e0f', '0x137d1f54e9', '0x11891fac38', '0x1371ae2ac7', '0x1533b05725', '0x12abd0e2d5', '0x122419b563', '0xff9675d76', '0x113c5a71cf', '0x10a01ceddd', '0x103ed18e7d', '0x122f325500', '0x1474a8578b', '0x14202dfa1d', '0x15c33c44da', '0x13ba90707a', '0x116d70ece1', '0x123df773dc', '0x106b886319', '0xff2d97897', '0xeff63d505', '0xf97b14394', '0x11287b0437', '0xf036ba3b1', '0x10e3d62699', '0x12b897e259', '0x150ee09a51', '0x134308a4c7', '0x15ab111838', '0x14af4dbb50', '0x12f00f229a', '0x11e74a36ee', '0x12ceb0db8e', '0x115c8b9793', '0x1074beef33', '0xf9d68e359', '0xebc29151b', '0x1093a1c2b4', '0x12a5e1f796', '0x14fa9b8e0f', '0x14bbe7e41e', '0x131810d6d9', '0x143407b41a', '0x13a06b70b1', '0x1260caf0d3', '0x14ac3f92a3', '0x149863603a', '0x172a9e3bf0', '0x1844c02407', '0x16e751de57', '0x169f781d80', '0x160a3b8e6f', '0x189cccda9f', '0x17c77c68c8', '0x152b9eb848', '0x15313751a6', '0x12bfa1ff25', '0x1419b34084', '0x132210de59', '0x1585e06b13', '0x18360df942', '0x15482d3547', '0x14016eeb60', '0x131e9a2ac2', '0x12140e7bce', '0x11d9fd0207', '0x10f22ba44d', '0x131022ac12', '0x12f773fb6b', '0x13cdd7e998', '0x12803bf0db', '0x1072c4ce41', '0x127e9b5a20', '0x14cce6c66b', '0x12d6b2018c', '0x14d0e9f790', '0x1426e769a5', '0x12b9db06f0', '0x118eb59880', '0x12c01d0a71', '0x10e8dcc062', '0x12fd60fb92', '0x1557161ac2', '0x1801881e05', '0x1b0108d845', '0x1900c955f0', '0x169528a9c0', '0x1534d98691', '0x155e75bb64', '0x1809d90346', '0x1b0a6c55f3', '0x189a9af4ab', '0x1877d4e3f8', '0x157c22bf99', '0x182af091be', '0x1b2fa4a6aa', '0x1bf933f26e', '0x18be5a7ae9', '0x16a0b97e64', '0x1596e19fa8', '0x184967a88b', '0x1989337397', '0x177622be59', '0x18698a48c4', '0x158fc6377b', '0x17f671b574', '0x18c26c519a', '0x19d89c30cf', '0x19c24c0094', '0x16cf940943', '0x154d3dc224', '0x17eec56cea', '0x1a3e9ca750', '0x1b6ef42248', '0x18b2205637', '0x19e55b622a', '0x18cf7a24b5', '0x1be88ab481', '0x1f64c3d114', '0x1bfe53f0fd', '0x1e65f3ae9a', '0x21d3407be0', '0x1e13830584', '0x1ba225e5d6', '0x1b2d25aaca', '0x1c6b0aee66', '0x1f700f3cd9', '0x1fe5ba4f42', '0x23e11523f8', '0x244f511fff', '0x245cbee295', '0x2065005abe', '0x20b98de17f', '0x1cdf187daa', '0x1fbe482fc7', '0x1dee033931', '0x1d6d1d0ec0', '0x1baa4f4070', '0x1ab6587ff3', '0x193d2c0db1', '0x17e32d9aa0', '0x1a6d7e4a82', '0x1a80b10e33', '0x1db559c0f9', '0x1c031d9adb', '0x1c98e72922', '0x1ea39fd971', '0x1c174b8660', '0x195803b891', '0x19fa2d48a0', '0x192ddd6230', '0x160821b5ea', '0x18c89e1db6', '0x1be1566c5f', '0x1e340262a8', '0x1d7c0bc226', '0x212b510559', '0x2409933ac2', '0x20f6ebea2d', '0x201d0a6817', '0x20665a99cb', '0x1f843f757a', '0x1d4c371f54', '0x20f4c7e4b4', '0x243f7c2fe3', '0x2232eae8f9', '0x226861c143', '0x255848d941', '0x2222898bbf', '0x1f40cc2153', '0x23282dcb23', '0x21b3511f12', '0x1faba320d2', '0x1faa3be9f8', '0x1c2ab8d475', '0x1faf9060fd', '0x202778a292', '0x1dec8dd97a', '0x1ca2459990', '0x1980750d30', '0x1a0fc068a3', '0x1a067e66af', '0x1764ca2063', '0x16c3e7ac37', '0x18b2e7b6b4', '0x17ed3b30c6', '0x18585d6370', '0x1b633c9d3f', '0x1ecf87f39e', '0x1c8806ef71', '0x1ac9100ca6', '0x1ba7902ec6', '0x192aaeefd7', '0x18b5abce5b', '0x17d4c37649', '0x16b258bd72', '0x16cce04b6c', '0x19a64cfae4', '0x1cda5267a1', '0x1d75721510', '0x1b3dc3c7d5', '0x1e37dbffd7', '0x1c5e5b4dbe', '0x198aef2ed6', '0x1cbbdb2773', '0x1cc512f63b', '0x1dba60f1f1', '0x1a7a1a0e41', '0x1dc79d7938', '0x208bbc2bdd', '0x1cf8d69f21', '0x209746cb49', '0x24a973d3fa', '0x2060a29641', '0x1da00d81a2', '0x1afc9c8c2e', '0x1e59b2fd11', '0x1c235ce1f5', '0x1c05c035a9', '0x1acdcc4a1b', '0x18eef9429b', '0x1bda31b0bf', '0x19beb63d42', '0x1b1a2e86ba', '0x186f195d82', '0x166fa0d373', '0x15e2b87f83', '0x14a492045f', '0x17387692df', '0x18f0612e15', '0x198298e738', '0x1c663f3cb6', '0x1a921c1821', '0x18a57ee8dc', '0x1bb978faa4', '0x1a730fc02b', '0x1af04ca59c', '0x17bdf61b5b', '0x15e1c5b0c2', '0x189c28829a', '0x16128926d2', '0x14588a77fc', '0x16e38bd7e2', '0x16ed32ea5f', '0x163070ac9c', '0x1730bcf9d1', '0x14ddd7a6d9', '0x17012fbc5d', '0x161526a5b8', '0x160342968a', '0x164c4816bf', '0x141fbefebe', '0x12ef2ac850', '0x154cca60e5', '0x1473026e40', '0x156269e3d7'], 'gasUsedRatio': [0.9108800834880779, 0.3815847, 0.16622236666666668, 0.9998913727411849, 0.1895163165324393, 0.6176127981283326, 0.18436663333333334, 0.8893841169235092, 0.7442482946317417, 0.35821589882670984, 0.08077718411741035, 0.5832504, 0.043490068051452245, 0.9994425328130306, 0.999902661626739, 0.9997611664498844, 0.16254967908276594, 0.03944386666666667, 0.9611643102823241, 0.6573946448397034, 0.19417816141908653, 0.28111807222471097, 0.524833646472008, 0.2105626801104566, 0.2939865557433668, 0.5774254864292557, 0.7000484045809376, 0.0773633500712084, 0.9835477687924516, 0.5038894832208931, 0.2565354270164013, 0.11904590768983893, 0.878290000370724, 0.26086323654464144, 0.999717799058875, 0.7004730821191916, 0.9714556936634551, 0.09068701173391634, 0.899680180421858, 0.12030654163881085, 0.27892940004412914, 0.20500903691364217, 0.9990276533254641, 0.39767401229081684, 0.2350163020755919, 0.37648924470745343, 0.5227777297677489, 0.0546144203447523, 0.7058121101089188, 0.8217712839577163, 0.09674113543750945, 0.9996487563432062, 0.27406260920296227, 0.9797365289079373, 0.4226535423682452, 0.9996881202742482, 0.21380823370143703, 0.28069760833372337, 0.0814599913631322, 0.26982062583364896, 0.9998228872609449, 0.17735502936048414, 0.9997134398034718, 0.9997794504619545, 0.7036289638437622, 0.06630310218872973, 0.2699559, 0.9993974666666666, 0.13844576666666666, 0.9766021186355143, 0.2375086326849098, 0.12336828838962458, 0.14163953578178465, 0.9149577333333333, 0.19540296666666668, 0.04987523333333333, 0.7461807333333333, 0.5866560666666667, 0.03800918263350829, 0.9493837603925369, 0.8561067157777823, 0.20864589642720321, 0.21689100616042736, 0.9505386541789772, 0.999751756878962, 0.9999888999578198, 0.22629243447351438, 0.27185811823151174, 0.6551152038298754, 0.12352970703400162, 0.9996011322615133, 0.9998630323698162, 0.9783471961273327, 0.13627461098191435, 0.7245986139505559, 0.2675657581029813, 0.5186097333333334, 0.639324533740531, 0.1999803416255425, 0.3742005352164896, 0.24025212314570063, 0.7312254333333333, 0.4079067333333333, 0.2706405528334914, 0.999840766512741, 0.9999204, 0.6488314333333334, 0.1002354, 0.41886657678776673, 0.13081786666666667, 0.42256133113985805, 0.08364507806873953, 0.9995224333333333, 0.3403966973749867, 0.9998605332031644, 0.9989290865868662, 0.37583787804248364, 0.9736983906232239, 0.5687872080840548, 0.01776264563916002, 0.7535102349456657, 0.4397339461112249, 0.05867245433291132, 0.3868232, 0.23228385852117928, 0.5188876031939414, 0.5121038644573783, 0.0825266439531954, 0.6538280271360174, 0.999396998271395, 0.9995759180015601, 0, 0.9995048479357648, 0.2094619914534262, 0.21948393333333333, 0.3910187666666667, 0.18148615456326436, 0.3654911631164809, 0.3877613147812598, 0.988564566598567, 0.9997995038345517, 0, 0.9995056146998206, 0.34436540858855264, 0.297204, 0.9994025333333333, 0.9998657666666667, 0.19810136666666667, 0.5240588768265545, 0.6234789725196231, 0.08314103425628437, 0.55125834739086, 0.463260387296264, 0.5098711378743686, 0.198152230356003, 0.661081745443966, 0.078107, 0.44853479422656223, 0.4104131872356966, 0.15305721411330495, 0.9999567822624252, 0.5614230648364212, 0.13949243365540062, 0.7360364448304337, 0.5273529864068841, 0.06825094777381804, 0.997569853924715, 0.5562485541016708, 0.5202918299438803, 0.9999121807443069, 0.21303870385938445, 0.17037971128837062, 0.89032103030552, 0.44018864723912543, 0.4152137431056055, 0.8255123, 0.49336750670362944, 0, 0.968910678585995, 0.28841256974871926, 0.5366443862007921, 0.4118131668039726, 0, 0.9644735417468492, 0.9787802108903386, 0.35130264574320846, 0.8263825462520309, 0.816132807372799, 0, 0.4428972215421277, 0.8511863282450653, 0.17856743333333333, 0.5193649401359572, 0.6595877, 0.4780390666666667, 0.9995921, 0.4886671, 0.7409163381375247, 0.08667128813252055, 0.9993373522839458, 0.408500214535662, 0.0697626386557993, 0.13044572717183325, 0.3850946770882784, 0.29516137228288125, 0.9997544537815687, 0.9997795509793449, 0.4143010738530426, 0.6561111181550465, 0.8816913517568828, 0.13927106665507719, 0.7183346742855463, 0.18911145998578344, 0.18735139749562624, 0.5620062247627844, 0.42397589714800127, 0.4139811924296054, 0.9998196324795937, 0.763201113264833, 0.0813285, 0.23447993632448752, 0.6435319339631383, 0.349632642599298, 0.2187750343086715, 0.9996374786424371, 0.8847823735500584, 0.022439133333333333, 0.2034831346142842, 0.822934901405908, 0.19630961289262835, 0.25454424181591806, 0.6845562, 0.22298273333333332, 0.7354569333333333, 0.859807702221219, 0.5147479804314484, 0.1053872423369015, 0.1331360814337067, 0.9993818952463089, 0.19138382427984868, 0.3778304678992449, 0.27719865335488275, 0.9387909300820928, 0, 0.9999475333333333, 0.9994851972951587, 0.9999384999426, 0.28365068296588697, 0.9993094179599424, 0.05985919957419673, 0.9998603270837775, 0.9994745186944587, 0.9999021662948986, 0.1808976673166038, 0.5012817394002331, 0.004990697038290539, 0.42627874224282075, 0.05966505305527511, 0.9306658487172458, 0.7223858863026157, 0.11902448689130779, 0.37313139053893984, 0.17605238063143172, 0.9998875329097073, 0.5558469115324782, 0.5299934909694075, 0.10552543333333333, 0.03608940797355284, 0.9994594114016835, 0.17896019429124654, 0.45705880174505664, 0.7319698333333333, 0.08616433947749978, 0.3732135149992807, 0.9378900249734099, 0.03851441865964228, 0.9996994058987313, 0.5153327934429147, 0.2862352196918182, 0.6395671090361107, 0.5513824351551013, 0.7091410329628549, 0.24558543509558245, 0.5591615499433981, 0.9993525641316525, 0.9990061934740038, 0.11496808861857923, 0.2781425620073005, 0.9995952921484179, 0.9996566017351626, 0.9996401483483938, 0.18005923333333335, 0.37798857250772044, 0.9552436248940499, 0.044149152853637574, 0.35771905865488635, 0.14286739190029488, 0.9996776704904679, 0.2754346185641365, 0.6312198551229229, 0.06306479478903006, 0.9999527998222126, 0.8888374310390665, 0.029054036553971804, 0.5858469997428143, 0.7479252799790772, 0.08048236235713287, 0.08632943644094718, 0.6081795333333333, 0.5447224881763709, 0.9999970999972934, 0.5815856577518193, 0.9569179, 0.1945536149383206, 0.21840493717794138, 0.7602097666666666, 0.3343258, 0.15564987456415477, 0.10222276548200664, 0.9588662931726999, 0.6032401461562777, 0.43253435828281056, 0.5825754329768557, 0.3790854436607902, 0.1708585967783015, 0.22465215932247384, 0.17625951952714947, 0.9994936778194481, 0.9995883972879065, 0.7413703005491848, 0.0831467, 0.66312452556745, 0.45945124413620264, 0.07427607454674383, 0.9277809666666667, 0.221925143235703, 0.5304587575252732, 0.07145454443536742, 0.3039540657555561, 0.9996618024295572, 0.9487466175573738, 0.3978517126791075, 0.042508474802923225, 0.32321961457392956, 0.9997577574774577, 0.9999404590768984, 0.1468059253776145, 0.221666588675502, 0.3275925127183361, 0.9999216849591576, 0.057374062046107066, 0.9996245697902417, 0.9997000127210433, 0.40346721256398116, 0.13037273020082574, 0.9996254018780922, 0.14209656806417498, 0.11110464178729333, 0.728585785824358, 0.20955626666666666, 0.43472864585601173, 0.999903311257128, 0.999773336631876, 0.8003802092152641, 0.9995486917733644, 0.6354364004031344, 0.08203066870154839, 0.29675498444377474, 0.4596634927998753, 0.39985795551800063, 0.501517240457071, 0.08080427742046885, 0.9876916575177154, 0.9993710982181117, 0.9999698, 0.5685110666666666, 0.1603489140479011, 0.36318257230373413, 0.08559626666666667, 0.8096030106732558, 0.7039162581302876, 0.13441428548358403, 0.2847888020233116, 0.9596871844932837, 0.9580795795695402, 0.6463270099838317, 0.3819921744768415, 0.9935313938926197, 0.44788981502183856, 0.5238040019034544, 0.08170181485668315, 0.6078200483051451, 0.5836786443977927, 0.4493951282188975, 0.5346304141272985, 0, 0.4820673053903804, 0.4216701268921184, 0.8722795666666666, 0.4433422, 0.3908598079357826, 0.5740407691047178, 0.9997044882913726, 0.6583105, 0.08388976666666667, 0.1912235, 0.1896454112559086, 0.45738223333333333, 0.1161045761185798, 0.999499332866044, 0.37243306666666665, 0.42236938962436515, 0.07692340769262744, 0.7467468201251116, 0.3919519113752983, 0.9999926666666666, 0.7290811333333334, 0.9996768155895768, 0.14916637752749828, 0.33199816666666665, 0.3017784666666667, 0.6231513333333333, 0.9471858936918568, 0.04536157567080396, 0.12487362230756416, 0.27532197047500434, 0.18383346265986641, 0.8528070162865461, 0.5348275333333333, 0.3571628, 0.05001193665614473, 0.4137841008170683, 0.2773685319033705, 0.9957117249989229, 0.3299780838906119, 0.9994966652405515, 0.5972193666666666, 0.2675411539368193, 0.9997443997614398, 0.9647713329932454, 0.265782740358587, 0.6731918414559945, 0.027706243627137132, 0.4781414606749086, 0.05866793482258075, 0.6916008631524033, 0.9993169984179188, 0.2667766892006194, 0.5026281738582652, 0.26973657469654094, 0.2795874128741739, 0.522455972958272, 0.3537780769241144, 0.9994596333333333, 0.7476246221101572, 0.10326397816965237, 0.45553058618222664, 0.7615167724206177, 0.48432221635319367, 0.1768200266112155, 0.3024070008727044, 0.382389096158348, 0.1179704342495637, 0.2761775699001222, 0.9997755946433016, 0.9999183532950685, 0.9999249329780161, 0.42648945233361146, 0.8394605898154843, 0.09271848944577797, 0.9999685774415479, 0.7810180678627439, 0.0951246036380219, 0.7665235743045548, 0.09845587413232171, 0.17323583333333334, 0.8021481643491536, 0.645853902796976, 0.9928594666666667, 0.14385514121206025, 0.999656228935965, 0.3689763708453407, 0.1478145259226068, 0.99986293204863, 0.08946931329863865, 0.6051196196930506, 0.9951428797166597, 0.5099856198729384, 0.26505324213451614, 0.5118062195358416, 0.9998281978036438, 0.5965928283442876, 0.2530685807128864, 0.41027945119382725, 0.999744434213352, 0.971411029613335, 0.3177385194721144, 0.7242124618771403, 0.00842903564431904, 0.5284889722962278, 0.03766261576993597, 0.03374760836849843, 0.9997664712897655, 0.9997742324754167, 0.04113295597007079, 0.5772902026643845, 0.9378698003727791, 0.8165748878101938, 0.05872281087817788, 0.34425131686706856, 0.12922654692583435, 0.9555078866308773, 0.9548505626466793, 0.46564520508553203, 0.3853664758933474, 0.9994212357806742, 0.16889523338303436, 0.08565555195964385, 0.3718960629137864, 0.2998883284679378, 0.11455195538943976, 0.999574168350789, 0.17912229844091562, 0.6121740961881774, 0.10696956425806192, 0.2904901272184576, 0.9995111884134104, 0.37999787666065055, 0.16096296973502716, 0.8574223416022649, 0.9998982335717037, 0.8419490185586879, 0.016232991986154254, 0.14036176666666667, 0.9997413525692161, 0.9999209877206934, 0.21262559670023623, 0.5281164709283945, 0.8569591528088459, 0.7611103243730976, 0.6803167982892799, 0.2061976475632511, 0.23207993967805052, 0.15474897521520198, 0.2565135287032571, 0.39523598617845457, 0.9994640666666667, 0.49380329892139674, 0.48954873176097957, 0.07442378009758606, 0.2298634367405298, 0.13883827269934237, 0.9993135313883389, 0.6499919333333334, 0.9998856117001748, 0.21178033333333332, 0.07941735104329378, 0.6467511346649416, 0.4443549789049284, 0.4995034969963004, 0.08891388797881801, 0.6322821136345951, 0.47790841195231376, 0.16598062683086734, 0.49637843421747646, 0.019089354847021667, 0.9993074056710896, 0.9475520356242604, 0.274625343295456, 0.4796160573026927, 0.48134441489708124, 0.9996159905934545, 0.9996054954497213, 0.32583892191146085, 0.21429786644509133, 0.6352975850532547, 0.39448245197611675, 0.05770525070038312, 0.9998068561233422, 0.9995889978755214, 0.8527641059709303, 0, 0.09393409028287641, 0.9967484627702634, 0.6171908083918345, 0.11008029797178422, 0.21727834572918217, 0.8703132506852648, 0.3858001862713487, 0.08654288896843376, 0.9996090970161072, 0.645935186348058, 0.575441459294446, 0.9831878717057506, 0.11582240417358645, 0.2872913455097174, 0.16251050636031678, 0.6913449574730258, 0.47985486450007686, 0.9998938951755071, 0.677672703141519, 0.5828058333333334, 0.3010341068613166, 0.4503579821814169, 0.9998464164924977, 0.9999759333333333, 0.13786296666666667, 0, 0.42532343333333333, 0.5050190333333333, 0.356599052307912, 0.8257418698460641, 0.12878678478923866, 0.9555560661824566, 0.9997647364769936, 0.5287237595595127, 0.9971945189785543, 0.0534085713995237, 0.09312503333333333, 0.9401924666666667, 0.031627150579207265, 0.47968024770156453, 0.2767694, 0.3786808485152418, 0.8685941202957587, 0.04345337353989342, 0.17145248002682573, 0.8490655652208797, 0.9582631835839557, 0.6668620816454536, 0.1131235805945486, 0.9996143464586905, 0.5995627718078571, 0.06340020773276345, 0.9995240667759938, 0.6803701537520611, 0.3455453272599517, 0.29132675085158816, 0.9256214333333334, 0.9994781904529774, 0.3704244933058993, 0.41009491110650503, 0.051472692835774936, 0.3499277886614826, 0.5189292688620877, 0.14207006802121863, 0.9783845720896209, 0.15955113333333334, 0.1467708, 0.6865943333333333, 0.06000549536622512, 0.9993527698970236, 0.6673008977174889, 0.9996551993448788, 0.3906380335853933, 0.10469867772632131, 0.5901549447477211, 0.326315673332892, 0.42746103333333335, 0.8678574628124364, 0.9873912548985045, 0.3681410666666667, 0.21252226666666665, 0.4631673, 0.6570867785726094, 0.9366439742010426, 0.16491259106359193, 0.14914884507784415, 0.2945486333333333, 0.17318137828255958, 0.9553641250065167, 0.3641992137848605, 0.3677649531612459, 0.6447650833320293, 0.9997734326989449, 0.5609231787356025, 0, 0.13746991926385974, 0.486112171518389, 0.17159052888584708, 0.9999208117163124, 0.3723520660424625, 0.17772463372509478, 0.7154569666666667, 0.5209664, 0.2094879350314418, 0.15427878246948973, 0.9997481666666667, 0.6573640493275016, 0.03939286416370516, 0.9997329852033618, 0.9995865258182564, 0.9994454908015336, 0.6418495185736359, 0.9650984158424414, 0.08344531709220496, 0.33856152519648347, 0.6039798039659168, 0.06083390723517495, 0.5516658701109934, 0.07246556697739735, 0.9989171508154551, 0.11544222693565322, 0.4009299914045298, 0.3289470777852555, 0.14533840071128454, 0.8128501498520498, 0.2609957297088503, 0.9998778800497141, 0.5657390049266995, 0.049553607925913186, 0.3339706, 0.9995555333333334, 0.9998392666666667, 0.5301437520405342, 0.8294761741777625, 0.2340664510181068, 0.7004477077064841, 0.1977198157343812, 0.999605332215108, 0.9995656, 0.061863009228511644, 0.23474680808583742, 0.20408638764103954, 0.5515369812535977, 0.002942779215184136, 0.8865950786860562, 0.23861653370168578, 0.9998824, 0.15033396666666668, 0.1343098202060979, 0.5903206176325765, 0.1441830626648841, 0.9998505748393278, 0.3279612058930391, 0.7188442508407941, 0.9785812597735367, 0.19860026208060927, 0.34923410032894664, 0.05292670113694967, 0.9995008725536737, 0.9961283386453744, 0.15981236668470614, 0.3317098708888012, 0.9224341138242989, 0.7901728050724829, 0.11073116500538169, 0.3553136490107195, 0.9993659975907908, 0.6913439911812216, 0.013957799594967811, 0.2757413424546393, 0.1407466355891562, 0.4422430711444781, 0.9996852979124762, 0.9999017619444821, 0.6792024, 0.5617880193342132, 0.13555495985129587, 0.22487439973411344, 0.9994593989908781, 0.9998627657345692, 0.4791125081816896, 0.40706267640531746, 0.13078706666666667, 0.5415157333333334, 0.11160826666666666, 0.999673, 0.452413815424095, 0.5700066576628684, 0.09912896192264732, 0.9353246771168865, 0.8616210433621588, 0.022542363870030967, 0.3864261399997731, 0.02223543471799688, 0.8158890827344712, 0.35836102957554, 0.4085603, 0.9774221193662278, 0.9996231309932408, 0.435471825860718, 0.8253425348174828, 0.1261718131686709, 0.03341996817047283, 0.6869579503846751, 0.10048206907957931, 0.3851601520023463, 0.261480763558778, 0.6586735897269324, 0.9016222211371359, 0, 0.9999879999195994, 0.9336489302949327, 0.999340528299366, 0.1587987, 0.9997191257262718, 0.3184531417629307, 0.16215760365231668, 0.2815462016044497, 0.7019518333333333, 0.19248653333333332, 0.2913852333333333, 0.29553846666666667, 0.2746048, 0.9999484, 0.9998084537116173, 0.9999912666582245, 0.4533000240498719, 0.18361153333333333, 0.7323735372408843, 0.38583947297815724, 0.2455412, 0.9994529, 0.48498924133916566, 0.9993789135821576, 0.6902887306595473, 0.27502346999564947, 0.4509829917258554, 0.3969266194789876, 0.9668843454257299, 0.36457958994274303, 0.0611548147117299, 0.5041302286989988, 0.03875880344539866, 0.7884115666666667, 0.30750194231333566, 0.9996345532903262, 0.9995959050106177, 0.016055897172871297, 0.26010813194793686, 0.322837825468433, 0.28217176666666666, 0.4498119666666667, 0.29709546666666664, 0.9997175333333334, 0.4797691, 0.6766181843236587, 0.2367892951567657, 0.056216727622842855, 0.9976175136708658, 0.998706347242931, 0.12274897867759643, 0.919863634236198, 0.37238677136447484, 0.21695663704034696, 0.2503919575386319, 0.7717898382599742, 0.10730000578924666, 0.9920613815141646, 0.9950920527891445, 0.9996774888378943, 0.9995517570632162, 0.20360449348496332, 0.11278031659521803, 0.25623632534354174, 0.5306585617796628, 0.9996931033160217, 0.9995739027141557, 0.1395378474505306, 0.4779165603612169, 0.012313921246119325, 0.9994814824720348, 0.999570694900474, 0.6158448759599726, 0.038150508093106265, 0.1579737089189346, 0.3164295548033517, 0.999756361160846, 0.7057424738477095, 0.17505036666666668, 0.6621038666666667, 0.032915466666666664, 0.9454311468482306, 0.6330056574719469, 0.6755559442317569, 0.486510774820113, 0.042199186277214085, 0.2353664904312032, 0.9940400906653473, 0.8863964990292709, 0.6811932127727102, 0.10083613043767087, 0.6943843568929958, 0.33233375700602963, 0.9994521299001745, 0.9995271160262368, 0.06677243990847459, 0.8436203288290397, 0.9509408541548311, 0.05666373980302328, 0.1751151024062651, 0.43384311418083593, 0.6827735171602223, 0.9250239367214715, 0.5584827929741042, 0.9993332311337375, 0.5480058022102158, 0.5057786997063158, 0.0635312, 0.5407827256683848, 0.028999261365952655, 0.8978767666666667, 0.27147266666666664, 0.43270743881400187, 0.2606280967534024, 0.36221225040102534, 0.2793772641501352, 0.28580112782346245, 0.9253777219035454, 0.5113507161346679, 0.9838297554556068, 0.27161606522874376, 0.5835503621383807, 0.7856049, 0.1673326670160078, 0.10881566822795702, 0.5999765666666667, 0.37710876666666665, 0, 0.9996237666666666, 0.9997747666666666, 0.8332737, 0.404830216706614, 0.9998753665503421, 0.8458867979525454, 0.15892486332641154, 0.3967257045708018, 0.5356710177345503, 0.3909590666666667, 0.21838615407945858, 0.9994872661881151, 0.8995382720250197, 0.2738807779107854, 0.5244270486101252, 0.8414487347310822, 0.15618292180809074, 0.16230507801579386, 0.9996409480333255, 0.3342868378148044, 0.2590538666666667, 0.49930770730952106, 0.05811192090445951, 0.9997236, 0.5591290228241211, 0.22256860773070056, 0.32754132826485577, 0.0624639, 0.5877967501932304, 0.49444952815289295, 0.09552430197022242, 0.3925428361590186, 0.8397448396844807, 0.37494739568428775, 0.5699621495985068, 0.999888532913474, 0.9999370666666667, 0.2040879, 0.25522302528419, 0.6297934878072553, 0.14015866666666665, 0.4273518666666667, 0.3577810268273031, 0.30958653333333336, 0.5182636333333334, 0.999873209522432, 0.9995331328975907, 0.5840059268597769, 0.19890077128143974, 0.9371208811661036, 0.25516477495928547, 0.10154953497235242, 0.9997277683315515, 0.5050126043320785, 0.6332258608066056, 0.0625569, 0.9989676333333334, 0.8715401923311447, 0.06076535135019233, 0.9996404819163905, 0.9996482326649754, 0.03254577612068982, 0.15997665571938716, 0.1437570909029273, 0.9985590278576392, 0.20843846666666666, 0.4835565666666667, 0.32605872968286864, 0.2208752966373893, 0.9682585070820559, 0.1973534044439926, 0.7108845531429469, 0.10618923774248153, 0.17292549079483477, 0.40186862710078297, 0.27286011810711375, 0.9994864309024396, 0.7960176, 0.5916096333333334, 0.9530364734496569, 0.24243665960754895, 0.21031693333333334, 0.9995498, 0.31604096666666665, 0.5739841711235645, 0.025346566666666667, 0.1866126, 0.9986893333333333, 0.08755163333333334, 0.187112950870142, 0.9999522, 0.5065893333333333, 0.37135636282162865, 0.680477601779095, 0.09917666666666666, 0.9098541274445504, 0.3396821, 0.48734096666666665, 0.5518318304491002, 0.11001536934767805, 0.263514, 0.9997751195957147, 0.3402425, 0.6829254433621098], 'oldestBlock': '0xd10718'}}), + (('0x400', '0xd10716', []), {'jsonrpc': '2.0', 'id': 0, 'result': {'baseFeePerGas': ['0x16f3d613ff', '0x19d1f5e210', '0x1d0c248b6b', '0x1a07047a95', '0x1c04d70a06', '0x1bd90ebbe0', '0x18bff65e5a', '0x16d6b27b96', '0x19b0b18052', '0x18a7d6ab7b', '0x1826502d79', '0x1680e48233', '0x14c834fdb3', '0x17267bc3cf', '0x18ecd2d93d', '0x186771b36c', '0x1717c43037', '0x14c98eb22d', '0x17620a0408', '0x16d9459fbb', '0x171d28b82d', '0x17f55fe19f', '0x1af2fc1714', '0x1b296bc6d6', '0x185ad3cab0', '0x1590159f67', '0x1725321cf2', '0x14b6b30b90', '0x13b0e9d9af', '0x122418d408', '0x11dfc92dbd', '0xfeef5ead1', '0x11ec45a01c', '0x11663c7c9b', '0x138f0bdfa1', '0x160074f995', '0x16720d37e3', '0x166b2b5eb0', '0x16af0ea7a6', '0x15278b0b1a', '0x17cc078167', '0x15de6e116a', '0x156f85459d', '0x13b34b9e90', '0x1629090472', '0x173a25d6d7', '0x15d344147c', '0x140da9ba30', '0x11cd1703b4', '0x13d0ab9b94', '0x1334b4b487', '0x13da127b91', '0x1200da8991', '0x14402b7c37', '0x15b550ca1a', '0x158227ac85', '0x12d1e2b6f5', '0x132ba40121', '0x155ce93b0e', '0x142f683d18', '0x120b0ae994', '0x144c5d7daa', '0x15361d5e43', '0x16d50e8490', '0x1797a59250', '0x157d320085', '0x12d827dc94', '0x12e182b397', '0x11d3cb7661', '0x10703ac63e', '0x105e114b1c', '0x110f3911c0', '0x101b29ef06', '0xe7eb0dc7c', '0x1005f7b368', '0xed166a963', '0xda9a06428', '0xf5eb2248c', '0x114a85f9f0', '0x132879a341', '0x1548a2a279', '0x15e417718e', '0x142f8c6ed2', '0x1561559f5b', '0x12ea23bf81', '0x11946e9483', '0x13771f17b6', '0x15dfbca960', '0x147b3d5298', '0x134812d5fc', '0x15b07ce81e', '0x17c706dbb6', '0x154336a98d', '0x14f70dea2d', '0x12db116496', '0x136fb74503', '0x11390e06e4', '0x135fdaa3d2', '0x14d7a13da6', '0x12a95be87e', '0x14a193e5b1', '0x156ec6d9ae', '0x13566c8d13', '0x13238ecd21', '0x11acfe64ef', '0x13e2369c03', '0x165e7bd07d', '0x180f8d1b8c', '0x167382fed0', '0x175fe0ae46', '0x152ecebfc4', '0x17d40a9273', '0x1acd8440f0', '0x19ed4dd151', '0x1b3c4d21f3', '0x196672d386', '0x1c92ecdd9f', '0x1aa4d1705d', '0x18cbe0b5c3', '0x179fcd5ae6', '0x1a92fd2f34', '0x17409d894e', '0x198088cdc8', '0x1cb090b64e', '0x202d19c2a4', '0x1e73d02f9d', '0x1d59dee89e', '0x1a3286f11c', '0x1d4d11018a', '0x1c043c12fd', '0x1b8a171369', '0x1866c94d2c', '0x1b4d5808e2', '0x18e6529bdd', '0x1614f694b2', '0x18d77f971c', '0x1bf2693090', '0x1c1f30fece', '0x1a13e8419d', '0x180cc9e35f', '0x15b6db92bc', '0x15e13b2925', '0x1562757997', '0x15166fe37f', '0x13a7745902', '0x15454e6845', '0x1589e5ee74', '0x13d32b9555', '0x11887a7b28', '0x1299f94483', '0x11e265b8f6', '0x117aaa1708', '0x13a917b31a', '0x161dd06f46', '0x138f45d716', '0x160054c828', '0x14732e3479', '0x17017bfa87', '0x14c62e8a18', '0x1238ea6912', '0x147f7677a8', '0x170e822bd6', '0x159b1c318f', '0x184e08bdc4', '0x162dfaa09d', '0x18b93b5a87', '0x16871c6b49', '0x146f9198f2', '0x16c5f12baf', '0x13f69f4dc7', '0x1627d6099a', '0x1726e4e4f6', '0x193b1d0495', '0x17380af02e', '0x15e68a41ae', '0x18a3587945', '0x15e8e94cf7', '0x157db15739', '0x135f4bda5f', '0x12a4963c10', '0x11aa8076c5', '0x12a433dffa', '0x114e64ddba', '0xf42989888', '0x10f8bfea74', '0x1139ae4b0c', '0xf749f771c', '0x110dcb37e1', '0x132f1a3faf', '0x11a1a445cf', '0x12c7a2a01f', '0x13e7a1a127', '0x151858dabe', '0x128224b053', '0x10c066a1fd', '0x12385c46d8', '0x141ff9b2bd', '0x16a326f458', '0x152207938f', '0x159290eeeb', '0x1844cadcd1', '0x1a9bc545e5', '0x1974a947ca', '0x1c8c8bd422', '0x1adb520a5f', '0x182669042e', '0x175d92ec10', '0x15933eb284', '0x1845676613', '0x1646cb4eef', '0x16f6e37b82', '0x19d582fa7d', '0x1d0feb1998', '0x1a2230835f', '0x1b6f3af8c1', '0x1828392e18', '0x1abf39a795', '0x1d9bf5da46', '0x1b4c8e8e86', '0x1a2fd3b850', '0x17a0721a97', '0x17cb177065', '0x1abd22f5ce', '0x1e143c4f5e', '0x1cdf524e29', '0x1b4a04ac97', '0x1eb25173b6', '0x203648376d', '0x1e8e41f9fb', '0x1d6425cf8c', '0x19b7a1159b', '0x1cee21fad8', '0x1c37e41c53', '0x1ac26c3d76', '0x193c227bcc', '0x1793428036', '0x1a84d5deb5', '0x1dd45a7e2d', '0x1b328119b0', '0x1d283ee8d6', '0x1be75d67fa', '0x19aa06e750', '0x18931d69e6', '0x1ba5638984', '0x1f196a8513', '0x1cc7e5e27d', '0x1c213555fa', '0x1b66f98b95', '0x1901ef72d8', '0x177e7c8c6f', '0x1a6e1fdae3', '0x17205bdf87', '0x1a041e91ed', '0x1926adadf8', '0x1647feb983', '0x1711c671ba', '0x1676e53e3a', '0x194585f38d', '0x1a627da614', '0x1d6f9eb76d', '0x1ded90dd05', '0x1a2fdec165', '0x1d74d2a2ac', '0x1d67b12832', '0x1be02e52fe', '0x195ac30e2b', '0x1c5b3dcc52', '0x1e6053dce4', '0x1b7d09c894', '0x1eeba9ffd0', '0x1e4cecb93f', '0x1b3229c28e', '0x1caa6608d9', '0x1fd0018b1c', '0x217cd4c4bc', '0x2581ef65d1', '0x2887bdb1fc', '0x2873323407', '0x24cf2130cf', '0x26ef981fc0', '0x27d22907a3', '0x22d7e3e6af', '0x20ddbb4185', '0x249f6aaa1b', '0x277a649b20', '0x24d76f22dc', '0x22e3244273', '0x1fa492b068', '0x1f69002065', '0x1ceb92d138', '0x207e884389', '0x1dfa5ae041', '0x1c86d9c449', '0x1a21b0f27e', '0x1c04923726', '0x19391fc80c', '0x16281cdbe8', '0x18ecc87281', '0x184b55a56a', '0x1650fe60bf', '0x16026b8ed6', '0x13e4c42b27', '0x1660b522d8', '0x16db8b3cb2', '0x149c0c0846', '0x13d3a7e8d9', '0x14e4cd35a4', '0x1295ae32a2', '0x128632f958', '0x11c9f17071', '0x1402a8f54a', '0x16821eb6ad', '0x1707a745a8', '0x1547cf2b6f', '0x12bbe7381b', '0x1510ac213e', '0x14da713025', '0x13d5ed8f13', '0x123e72c557', '0x13100f1937', '0x14e5e248e5', '0x151f4b3e3d', '0x1368f66539', '0x121221aa18', '0x11f46c64b3', '0x12fa4fc292', '0x1559896e7e', '0x1724abbb54', '0x155a5b7db1', '0x1560b506e1', '0x148065e9b5', '0x135fab8771', '0x12d6efe4aa', '0x1404ae5695', '0x15c90b5dc6', '0x16e59b5476', '0x158a333568', '0x151566ac41', '0x1767140b86', '0x164e0a347a', '0x13cd98d2ab', '0x13e3c9d92b', '0x11f951686a', '0x131a7c286a', '0x1444948135', '0x163b21bc12', '0x1901e638ae', '0x177b111a64', '0x17e9b40e80', '0x173acbb1a6', '0x173e1d77ef', '0x1682cb61e1', '0x149ea2325e', '0x16e07511f3', '0x1681c9d6ad', '0x13f3bafc6e', '0x14a6b148e7', '0x136a86806c', '0x119b6babd8', '0x13ce11d3fb', '0x16474194ea', '0x190ed08aa8', '0x1743a4e5c1', '0x1490ef2a3c', '0x1535010c00', '0x15186eba99', '0x1301322ec7', '0x15611182da', '0x180c65b6c6', '0x1561f1021d', '0x17f7fb0d48', '0x19511cff70', '0x18ce0fe5fa', '0x1801f8908f', '0x15a14b211a', '0x18550c7bef', '0x16df03336c', '0x1498cfc747', '0x13959bcc6d', '0x11ad9c5606', '0x13470f211f', '0x10fc078e77', '0x10e5e9afb4', '0x1302a4ec15', '0x138934dccc', '0x1295c1d3e1', '0x11143af2ce', '0x13368a3ff3', '0x115f9e8511', '0x1339c81c61', '0x12e5676d9b', '0x1137fa7345', '0x114f024665', '0x11a2edbfec', '0x13c1c5703c', '0x1554b18b53', '0x142e70d44a', '0x12b57c7d59', '0x1335e9f490', '0x121b3bfa4a', '0x10efe1f40b', '0x130d2cfc49', '0x15239ba765', '0x17c7d7bff0', '0x161e15fca4', '0x1857f4ebae', '0x169275576e', '0x15b20f9043', '0x13846e0cbc', '0x14a08c0ba2', '0x13d9ab0555', '0x119bdcbafd', '0xfdc19b23e', '0x1128f3e2ee', '0x12d0797904', '0x1529edd396', '0x165cc65f6a', '0x14a0370354', '0x146e9ca657', '0x16ccd67e9a', '0x1408a3bc66', '0x11bf444912', '0x13f66c2ea9', '0x1674c6f56d', '0x1588d2e90f', '0x183990f9d6', '0x172028a867', '0x14de391777', '0x170de23a3b', '0x15e5c54118', '0x18a1b16554', '0x18949c015e', '0x1682b423f7', '0x13b25d9f79', '0x16286e9794', '0x1874494aa3', '0x190956f49b', '0x1980e22e81', '0x18159655bc', '0x1595616a9e', '0x1713ca952e', '0x16a09d77a0', '0x1974749062', '0x1c52e34a42', '0x1ba40bc5a6', '0x1871a3dd6e', '0x1aeb4754a0', '0x181c131fda', '0x154483ea41', '0x1531749b56', '0x1352437a09', '0x14bd018ccd', '0x128ba63c1e', '0x12d56a602a', '0x11eefe3253', '0x1024e98dbc', '0xfdee1a0c1', '0x1166eca24e', '0xf7cab9717', '0xe096d5be3', '0xfba287ab1', '0x1075d173cf', '0x1036966e63', '0xe410f3309', '0x1008d3eb35', '0x1066a6f965', '0xe59d21a39', '0xfabe69807', '0xeada1807f', '0x10834333be', '0x12934fa295', '0x14e5b24314', '0x156d7a6165', '0x13cf1509cb', '0x14d3feffb9', '0x14587aa5db', '0x16a41aa779', '0x16f3d1979b', '0x176e64e62a', '0x16d9479917', '0x18a6ebe464', '0x16322e98db', '0x161441ab16', '0x189b3c5f8d', '0x162acba5c7', '0x18efd02a81', '0x1c0d4bfb39', '0x19d115cc49', '0x1b511756f3', '0x1dd4aea05a', '0x1a7a855732', '0x1d2f83fcef', '0x1e98bb2593', '0x1f095dfd92', '0x1c5a0140ee', '0x1ab5c1f48a', '0x1b34639bc4', '0x1c1bf0f70e', '0x19af85af38', '0x1c7e7be70e', '0x1c88d4c9f9', '0x19aa21c587', '0x1769d3a06f', '0x177dd6366e', '0x1a6cda9434', '0x1db9bffd67', '0x1c98ba8eb1', '0x1be9633205', '0x1f65ac6bba', '0x1c6c54a798', '0x19a7baae9d', '0x1c95b16538', '0x1a4a3757f5', '0x19938e175e', '0x1c7eaa4e2c', '0x2004dbc302', '0x1e807e08a6', '0x1d1ca24066', '0x1a7ccc250a', '0x1a0e65561d', '0x1cb71b54dd', '0x19dd5adf8f', '0x1843332472', '0x17f47d8885', '0x1576c344da', '0x16129dd92a', '0x18d4bbc789', '0x1be83da1cf', '0x196534fcf0', '0x1a48b1281d', '0x1ad26cef22', '0x1a7f0ce28e', '0x183809c658', '0x16d349803f', '0x155bb630f2', '0x1740a00257', '0x1655ed7ea5', '0x155c8a572f', '0x166b49ec6e', '0x14283347ad', '0x136dd06af6', '0x15db2a2aec', '0x1895b43169', '0x1aeb7e915c', '0x17980e10a9', '0x1a8a2dd2a2', '0x196bf9e2af', '0x17f652d721', '0x15b27af76d', '0x1868842ab4', '0x1a2afa178b', '0x1b947e1571', '0x1c5edcbb5c', '0x1fea143710', '0x2066fe6ed1', '0x246b9c5ce4', '0x286e08f9ca', '0x279ef69fd4', '0x2375d46fbe', '0x2243233ff0', '0x2106700e06', '0x1f882d93d2', '0x1d58c97848', '0x203c567775', '0x1c7f527985', '0x1e225e547c', '0x1cad5b6335', '0x1a05661cf8', '0x1a86549a10', '0x185363df2a', '0x1b5d083737', '0x1ec6702539', '0x1c4112784e', '0x1eabd1cbf9', '0x1bf6995be5', '0x19000f93c8', '0x1a38f19a73', '0x18b216b1d5', '0x19db0045e2', '0x180e7855a7', '0x1b1012cc3f', '0x1b64e4b3e8', '0x182edea929', '0x176b1d287e', '0x15d236de3b', '0x171793ef12', '0x19fa7515c0', '0x1d3996436c', '0x1bd392da15', '0x1f4e04dbc6', '0x1d2d80ce2b', '0x1aca211afd', '0x1908c70e28', '0x18d596de65', '0x1649f91c1d', '0x19124a7cf3', '0x1984e46f80', '0x168ceec981', '0x15e36165cd', '0x189fc7925e', '0x1bb383ea6a', '0x1ecfc512ba', '0x1e4e814f75', '0x1d82a8ffa5', '0x20e701d297', '0x24ba165705', '0x22b2698595', '0x212313f47b', '0x1fe988f592', '0x2017664e53', '0x2338119183', '0x231ff8905f', '0x223f8d5252', '0x1f3bcb20d6', '0x1f68119153', '0x21f25fbaf8', '0x243727792d', '0x22e46956ec', '0x20887031f9', '0x20d7a2557f', '0x1d77664b48', '0x1f7f3a8761', '0x1f0529c4c9', '0x1e1723c39d', '0x1aacb14f6d', '0x1e01f6652f', '0x21c0dd4540', '0x2048a7cbd2', '0x2450650bea', '0x240eda5674', '0x1facb9a8cf', '0x23a1b2417f', '0x212fce3b9a', '0x20b4839f91', '0x22523d5999', '0x1ebaee718d', '0x1cc7fcdd2d', '0x1f106e717e', '0x1ce475e63a', '0x1a5dcbb2f4', '0x1da94588fa', '0x1d23e018fb', '0x1a27747198', '0x1b8cd54ea2', '0x1ca2dcda7f', '0x1a56cf7cb7', '0x1742caef59', '0x17aa53706b', '0x1919fcb7d2', '0x18e7aea515', '0x169374e1a7', '0x19656afceb', '0x1c91760073', '0x2022a76ae4', '0x1e36d82fb1', '0x1f2c8f2b5c', '0x2289299624', '0x1e38046360', '0x1f87234aad', '0x237771c845', '0x230ff752f0', '0x1fff36047c', '0x1c85d87541', '0x1fdf765bb3', '0x1cac143da4', '0x1a65ae30b9', '0x1db1b4e005', '0x1cc69a3838', '0x1bff5dc41a', '0x1a5a08ec65', '0x18ed9888f6', '0x1ab189cfff', '0x1b1d1aa3fb', '0x18b37886f2', '0x169526e62d', '0x161929b7aa', '0x1816b5939c', '0x157c34dab6', '0x12dab2d5a4', '0x14f2f7ea95', '0x1685a1e954', '0x14613eb935', '0x16ecda20c4', '0x19c9f00c64', '0x1985c25cc6', '0x1cb64024f1', '0x19821a5590', '0x1b30899f9a', '0x1a5dc6aa49', '0x176162c6d6', '0x19716d9a3d', '0x16b591854f', '0x194f3223ae', '0x177c35b146', '0x1a6b2f41a1', '0x176ab14c61', '0x1a575d9dab', '0x1da210b45d', '0x2156097e2b', '0x1d2b484e66', '0x1f49e64e99', '0x1d2bc9b865', '0x1ab2feb01d', '0x1ceccc05ae', '0x1ac25c915b', '0x1920039172', '0x1c4370fc93', '0x1e09c12d63', '0x1b8ea0b2cd', '0x1ae446ed41', '0x19e3eb7b53', '0x1753ee805d', '0x173f932979', '0x154b87a4f1', '0x1444a8341f', '0x13eac4dd98', '0x1392d52961', '0x143cd7d033', '0x1648179baa', '0x1865eac4f0', '0x1b729fd06e', '0x186bed0f98', '0x1a57f40290', '0x17d5606fdd', '0x1769141b79', '0x1632510a7f', '0x18f7adc9f3', '0x1816bc1890', '0x181bfa5aca', '0x154b71aeab', '0x1453e2d85f', '0x13803dd210', '0x13ecc77eaf', '0x12c9113ac2', '0x12f23ee0ff', '0x119a0bee66', '0x13cd1754b3', '0x13e89efa5a', '0x1525ccd7d2', '0x139b013cf4', '0x13d6483c7b', '0x115b7f34ec', '0x138636c2ab', '0x15f6d9ccae', '0x16a901f051', '0x1885cd49e7', '0x17db590033', '0x15beb7eaad', '0x17a848bf84', '0x15dae2cc1e', '0x135edc7a61', '0x155b5e1168', '0x13c81c6c5f', '0x15d1932f3a', '0x134dbd8157', '0x1175a70872', '0x1196a0ac78', '0x113335520c', '0x11fc25f8fa', '0x123080594c', '0x1475d61514', '0x14f42e0dd9', '0x12fd2a5d26', '0x13d4c3e034', '0x11bc2352e2', '0x13f34e053e', '0x15ee553b18', '0x1385e31afd', '0x11644b9a43', '0x1390c069cb', '0x12ecd2a89c', '0x115fab1b83', '0x138b9238b9', '0x1566338632', '0x1318941e30', '0x157aed32a7', '0x1829b828e4', '0x1b2eb5f102', '0x196d6009b7', '0x1ac320dece', '0x1a590af6a6', '0x17e42683ef', '0x19b25294d2', '0x1a322852ab', '0x19f6d5a74a', '0x1a881d986a', '0x1c3dfa290d', '0x194fdd34ed', '0x179fa8cfe3', '0x1a939a94e8', '0x1de5db5d87', '0x1e1164005f', '0x1c702efbee', '0x1b1073b79f', '0x1bb8b6ed52', '0x18dd1c4002', '0x1a0a5bdbf1', '0x19b45dbaa4', '0x17234d79be', '0x1a06e96115', '0x1c58d47b52', '0x1f0f883bba', '0x1d5589d0fa', '0x19aad896db', '0x174fdab9c6', '0x19a830bad1', '0x198f58a981', '0x186e36979c', '0x16936295e8', '0x1963fb63a9', '0x1af073a675', '0x18d4a70a14', '0x1bc37f1776', '0x1a65e7e72f', '0x1d89dd2c3c', '0x1a21744025', '0x1d0a99de64', '0x20ab7b59c0', '0x23f0388fdc', '0x207d13f3a2', '0x1f69e94607', '0x231b2f66c4', '0x1ef7db4826', '0x21b485759f', '0x1f4c6e105c', '0x1fd94d249e', '0x1c193392d5', '0x1f9c156d07', '0x1d844bf2f3', '0x1b06870017', '0x1872f4513c', '0x1b7670dd4b', '0x1ee5398d84', '0x22be7bb32a', '0x1e8a4b78f3', '0x1cc3917c62', '0x205bc8a06a', '0x1ce59052ee', '0x2018a039d2', '0x1d10cc9172', '0x1b0e0ab037', '0x1a72eee96b', '0x1d3c9f658a', '0x20e40062be', '0x1de8e9a859', '0x1f44c37845', '0x1d1e774b20', '0x1dac616861', '0x1f7d1da4cd', '0x1c7ff30044', '0x1a231265b7', '0x1abc63a1eb', '0x19dd4d6dae', '0x1d1817a145', '0x1de590314b', '0x21a11a9ad5', '0x1faf10e7e5', '0x1be8c12986', '0x1f659cb0ea', '0x1bc548fd5f', '0x1a6b5a005c', '0x19c6191185', '0x19983762ff', '0x1cc5c6b76b', '0x1ad2b4cc95', '0x18138ee367', '0x1a46509300', '0x17d384c486', '0x17c1ea3cce', '0x150e153765', '0x128cd93ca3', '0x14ddaef31d', '0x1727f6d7e1', '0x16758fff6f', '0x14c445df8f', '0x170bc878ce', '0x16f0012902', '0x152a3c4147', '0x17cf432389', '0x199ea4bb99', '0x173e17f146', '0x15ce71124d', '0x146b9458a3', '0x156d582199', '0x12dcb4988d', '0x11efe26cf7', '0x1169de4690', '0x1018f00729', '0x10558554b3', '0xea4e895e7', '0x10795852bf', '0x1226887b70', '0x11272cbc49', '0x1070a08d19', '0xee9b8c72d', '0x10c6d29ba4', '0x120f9c7584', '0x1212b9801f', '0x10179fb276', '0x1124fc0b90', '0xf71386f3e', '0xfa9964000', '0xe3934ef44', '0xc720e515c', '0xdffe3ea07', '0xe357cbf4a', '0xe8aa5f41d', '0xd1cb29c0a', '0xb83990a3c', '0xcf401e9f5', '0xe92178a66', '0x105f2bc75d', '0xf121a107d', '0xe6f7c50a6', '0xe3c3f28c0', '0xe02255e1c', '0xcdc0f187b', '0xe77902ffa', '0x1033c88f04', '0xe71459d6a', '0xd55107995', '0xefea576b2', '0xd7d6c4d17', '0xd77b3b5bc', '0xc2fb26330', '0xdb58b75d4', '0xd8d9195f3', '0xc7c376d5c', '0xe0b7f69b6', '0xf88b16005', '0xdc5cd8b4f', '0xd9c36823b', '0xc4d84fd3f', '0xdd68c85ee', '0xf47300c3f', '0xe79fa794c', '0xcf96e36d6', '0xe8e2cdc7c', '0xf1481c1b6', '0xd597acf67', '0xbae4b757b', '0xd12c85c00', '0xeb51aba83', '0x108b581bcc', '0x118848a95b', '0x112befe303', '0x10e5aaf8d9', '0xf860b139b', '0x11765bf795', '0x11093b0d87', '0x117d745d50', '0x13ad1b53f7', '0x16224b109f', '0x14def83c22', '0x15ebdc6678', '0x13843e3fc8', '0x15f3f93097', '0x14f38b0410', '0x125519a38e', '0x14020889de', '0x1681ba87ad', '0x19519d0248', '0x18d7b380bc', '0x1bf1c8cf37', '0x195c89cb00', '0x1935673db3', '0x178061c66c', '0x167da0b991', '0x14bd3a6da7', '0x13e01c38fe', '0x14e74a307b', '0x1783056ae4', '0x1584305759', '0x17df26199c', '0x1721afcfdc', '0x174c35f4ec', '0x168196b3c4', '0x16750cb749', '0x19437a4358', '0x1a1664f5b0', '0x1794ae7915', '0x1a262ccf3d', '0x1919de313f', '0x16c6c4c1f4', '0x1629a72d43', '0x14d571e3a8', '0x13446e2dbd', '0x15acec97b3', '0x15ea5c584c', '0x13f51b9688', '0x12891e8654', '0x14b5e1e730', '0x124d34fec7', '0x148eb87d17', '0x12d673bb1c', '0x14fe979e68', '0x179e17ecbd', '0x168f88c824', '0x15bdbcc77d', '0x159e8aa340', '0x16489ac6af', '0x13f3925771', '0x15fcc124ed', '0x1805bcba1f', '0x15b694ab8a', '0x1376fbc7e9', '0x149763bff0', '0x13bdedfa3f', '0x1635368ea2', '0x18fb3f23af', '0x19386e5969', '0x18141a3efd', '0x18a90cbf19', '0x15ca9fd906', '0x180b2d964b', '0x1509c7e382', '0x131e0ae95f', '0x12fc35d7fc', '0x1415b754e5', '0x127baa99ba', '0x14cac07ab9', '0x1498fb558b', '0x172b2f773e', '0x16b4a4a2e4', '0x15aeca5267'], 'gasUsedRatio': [0.9997581333333333, 0.9999619704691702, 0.08412564798812638, 0.8060610311225546, 0.47558430361017684, 0.055007, 0.1911186273395971, 0.999424643532485, 0.33891308563061223, 0.41791592313120857, 0.22733792742819575, 0.1940157336096154, 0.9558292268706414, 0.8066507645709777, 0.41638729347891495, 0.2850783292435862, 0.10065474956706628, 0.9994640982609103, 0.4086092471931015, 0.5464243017899051, 0.6461616792697117, 0.9993076062583355, 0.5315618875428625, 0.0866243703541792, 0.041451390848618555, 0.7935543880332556, 0.07976317754570705, 0.3025263, 0.18512333960779367, 0.44116304508550874, 0.06569187609609219, 0.9994520989772514, 0.3831493, 0.9964353666666667, 0.9996242997954169, 0.580671509497974, 0.49520907856994806, 0.547315440388412, 0.23031841019920557, 0.9996626323774584, 0.1759048, 0.4207567976537578, 0.17619240365265687, 0.9994669456237824, 0.6925689101671868, 0.25857857329116546, 0.175259459351034, 0.05075111292410833, 0.9525523239352971, 0.37701587645539797, 0.6345342368665629, 0.12753891093227285, 0.9993138913253738, 0.7879116197078552, 0.46317602851010625, 0, 0.574518178570188, 0.9574665643073322, 0.2794779457786741, 0.07552053761633744, 0.9999499843012767, 0.6799330743476544, 0.805659833806253, 0.6331655327533429, 0.14338878450933065, 0.007714544567099712, 0.5077566678479015, 0.27679512659208466, 0.18836004915858498, 0.4827366337626315, 0.6691193495938873, 0.27646286647309715, 0.09984811777145529, 0.9217831155957938, 0.19910384727199468, 0.1881168195335846, 0.9998467828332176, 0.9999902999350095, 0.9318981422534636, 0.9438070043934669, 0.6141249333333333, 0.18841121644713937, 0.7366970666666667, 0.0387127696862653, 0.217721740685935, 0.9290161539438757, 0.994963255015646, 0.2453470175279811, 0.26566703736666736, 0.9995179504906916, 0.8850805909848274, 0.07692759528798265, 0.44403367065531235, 0.09755472720197907, 0.623178652118317, 0.04445863393691951, 0.9996982425626811, 0.8030539044269562, 0.08147709142622207, 0.9221735947205488, 0.6554073772744837, 0.10898519840016967, 0.458899512573465, 0.19420580069129628, 0.9996422860781319, 0.9999949902110393, 0.8025015545496487, 0.23242238758962921, 0.6644996798200693, 0.12494550602058067, 0.9995446540493541, 0.9993246974338502, 0.36929265091902924, 0.7018875889345876, 0.2304460880497974, 0.9997973988519269, 0.22980877718732748, 0.22264890281609193, 0.3109127916988525, 0.9994785294049215, 0, 0.8870023061862693, 0.999978, 0.9860929136031998, 0.2857074039229813, 0.3553364574412175, 0.0702116, 0.9738901666666666, 0.324647981246313, 0.43187922239541343, 0.044230618224234984, 0.9754813192638839, 0.148023497791022, 0.047334191009232036, 0.9999397076163061, 0.9999843666067386, 0.5250365775248335, 0.20925393077707002, 0.1889599534369759, 0.11153064688751772, 0.5304906989808956, 0.4094683237509062, 0.4444534533019531, 0.22808234102853653, 0.829011658006366, 0.5503860483071472, 0.18172939805797308, 0.03759832510403266, 0.7437309333333333, 0.3457981, 0.4093718333333333, 0.9991911, 0.9996701887273743, 0.037574802988976225, 0.9993204, 0.21794933333333333, 0.999928330014259, 0.11198470451905755, 0.008654533333333334, 0.9995134750915731, 0.9993237666666667, 0.24831150952238193, 0.9996638996863064, 0.1502397, 0.958792, 0.14474624470795733, 0.1285542130608423, 0.9575096783252318, 0.006465221548398312, 0.9392528132333964, 0.6798768729815928, 0.8591892966964482, 0.1810270414331664, 0.2728800561042907, 0.9999914583014966, 0.05706611494903297, 0.4235369666666667, 0.10565123333333333, 0.3494065, 0.2903987410372896, 0.7208519394618101, 0.2135003162081845, 0.027086818131621115, 0.9486295333333333, 0.5597789666666667, 0.08903336666666667, 0.9136566857536385, 0.9996192996446797, 0.1762756643768841, 0.7605377969841768, 0.7396156065761408, 0.7391975943931841, 0.009510213669253422, 0.12032181712028846, 0.8506757174057729, 0.918162303043112, 0.9993632418371067, 0.23417603480339838, 0.5832058666666666, 0.9999315666666667, 0.8856418333333334, 0.3267062333333333, 0.9860678619338451, 0.26289361920426135, 0.09687100915345578, 0.3700595409231016, 0.193506084048814, 0.9998213919165178, 0.17128501855007958, 0.6235144703607495, 0.9998380011761229, 0.9998293011880047, 0.096915544188224, 0.6991219252914644, 0.022153221726274885, 0.9288343516851967, 0.9280479012461297, 0.18791208222884465, 0.33703082810096024, 0.10895093743671756, 0.5282028249375337, 0.9951789, 0.9996826666666667, 0.33953005109489415, 0.28065992861593336, 0.9994547, 0.6974793666666667, 0.29431973333333333, 0.34755806666666667, 0, 0.9997264994420108, 0.4015725571221683, 0.2932038237539318, 0.2721086, 0.23692502395255635, 0.9994486994854529, 0.9993598743198226, 0.14703090779102787, 0.7882534333333333, 0.32804376807285646, 0.1789535960163303, 0.33019121757547276, 0.9999265665271431, 0.9996347092662128, 0.20180273844109226, 0.4095049120506334, 0.39655427357290624, 0.15043954255022865, 0.25791768747705407, 0.9998849784407838, 0, 0.9998079, 0.3670048, 0.04358123333333333, 0.6415009333333334, 0.3950995, 0.9998370924125924, 0.6761907458223546, 0.9625836009444919, 0.5668536292503499, 0, 0.9993847666666666, 0.493034815163674, 0.29196222973659447, 0.1382272124926378, 0.9735834831419513, 0.7849257447025463, 0.11972313333333333, 0.9994293093872834, 0.4197846917990457, 0.09016666666666667, 0.7161600636354734, 0.9391189431776803, 0.7106211848334291, 0.9801699719552286, 0.8223541246088506, 0.49207962755894474, 0.13996183333333334, 0.7311183666666666, 0.5909210322786466, 0, 0.2730201708635149, 0.9571979475401282, 0.8118693752519963, 0.23285864243142063, 0.28781912481428934, 0.12801233333333334, 0.4705835418380618, 0.18291159683683406, 0.9943335944341763, 0.19024473333333333, 0.30636583333333334, 0.16415336666666666, 0.7887307622560097, 0.10100946094216355, 0.013708333333333333, 0.9997575333333333, 0.3987908141033614, 0.17434400186586846, 0.4449861, 0.11546788772569748, 0.9994859328535374, 0.5857689666666667, 0.10660167013577908, 0.3480748031389764, 0.7152594333333333, 0.057941246293672435, 0.4869841254785425, 0.34120785263568965, 0.999537932455405, 0.9993187000828277, 0.5926974126426692, 0.196153, 0.021344433333333333, 0.9977324666666667, 0.45977486666666667, 0.30480133850705216, 0.1790189670843693, 0.6795208, 0.8850977312679165, 0.5429242910778033, 0.1757480225459846, 0.22402208179240723, 0.47431280097781003, 0.7279060040684162, 0.9999475486308774, 0.8360211435470122, 0.190572885266093, 0.5046464211135085, 0.3360525909159261, 0.279949571989135, 0.3897241537304607, 0.7502573767072654, 0.8530860869071782, 0.7040954581112381, 0.2629273076340564, 0.41527404367183934, 0.9399726666666667, 0.31236203333333334, 0.051356616402583787, 0.5175094830088508, 0.1146969, 0.7513775333333333, 0.7438163700186565, 0.8874290616004575, 0.9995614278563643, 0.2558021526907568, 0.5736218983319947, 0.3857130595203353, 0.5022327532763753, 0.3740725756733684, 0.16394020511840407, 0.9378585283049431, 0.4353405039471564, 0.045934026959486104, 0.64015, 0.26078266666666666, 0.12731922722538558, 0.9993091180189809, 0.9995485920971552, 0.9990541315361833, 0.21368121295651923, 0.03609727014550775, 0.6246509956968189, 0.478948953339356, 0.10356026666666666, 0.9997721225223569, 0.9994118994315028, 0.0565875, 0.9837751666666666, 0.7249893666666667, 0.4191180978441219, 0.37143989239189595, 0.10385267919882754, 0.9997063994421589, 0.25981163303509486, 0.10225473567835766, 0.3033663521907449, 0.11066134948343523, 0.8618944776693073, 0.024196512512231816, 0.47965359007099584, 0.9999928666395599, 0.6105996333333333, 0.3052875, 0.1758751087103223, 0.9997996331463243, 0.1170239, 0.9264415701932938, 0.43142510389781547, 0.14491227659617145, 0.5208989823792534, 0.5757568538391296, 0.9809311793050081, 0.818656, 0.28445756666666666, 0.20815152663242323, 0.6072579334407379, 0.2700817, 0.2416729, 0.9993613569682538, 0.9383129012014824, 0.9998401559332153, 0.22025763333333334, 0.9025871763777329, 0.2089207283260131, 0.34466613333333335, 0.09839768533973425, 0.7274561456257359, 0.3493496860912389, 0.0483327, 0.10268363723842999, 0.8279251985158496, 0.8856374990806427, 0.9994977190452955, 0.7265410883569404, 0.18937818014054467, 0.46242351312112556, 0.9635984976283234, 0.014669900575684838, 0.04344785365819445, 0.9993374851287833, 0.9996491323392083, 0.33582364996119535, 0.9997383656811774, 0.31849263333333333, 0.1095133064103764, 0.9190470410940182, 0.2993093787819017, 0.9994299533655897, 0.4917004797493868, 0.16315676227749312, 0, 0.9998179659810051, 0.9145342207454561, 0.5952373976157688, 0.5746060333333334, 0.2774221026832702, 0.08465807901420708, 0.7768394087327424, 0.42201739998216514, 0.9998365734367839, 0.9508171606486219, 0.4035473333333333, 0.03736542066661428, 0.905033544697975, 0.08254253333333333, 0.028483080394672063, 0.48599706533801085, 0.14670843593918267, 0.7933466324180001, 0.0770532581428756, 0.5621496403973364, 0.3088340877635212, 0.10088752832296902, 0.4322211851490151, 0.8859752995361169, 0.05980928882293723, 0.125448706342696, 0.9816915855946918, 0.6864408158198615, 0.43997788763594464, 0.01666771538546628, 0.9996010081101658, 0.5914283564747647, 0, 0.8680964, 0.24648436666666668, 0.9999230915655805, 0.9996600663493953, 0.9999758901873962, 0.6015248, 0.19782333333333332, 0.7058052855279847, 0.4073390195888387, 0.9512833893862704, 0.5550125394896233, 0.5834439749183935, 0.4005637349305823, 0.8156913666666666, 0.1014912, 0.4789337788350324, 0.9578555939985544, 0.10348184655989105, 0.9997660995555891, 0.9996911, 0.1812767, 0.732411, 0.8681296, 0.0505057, 0.9089356243628097, 0.6933827, 0.5575207333333333, 0.1539557, 0.2683951545350702, 0.5740777691392512, 0.6329920740323098, 0.15512832807715668, 0.9373564666666667, 0.5056739760290743, 0.0976913, 0.14913626666666666, 0.5133537899759115, 0.9995260662243285, 0.9995798333333333, 0.34807846666666664, 0.40419462938893164, 0.999503232869684, 0.12111283333333334, 0.11046219967131236, 0.9567567863641018, 0.17887323566972674, 0.3914381726862004, 0.9564208495598665, 0.9947139628646505, 0.3104805017532574, 0.3177069222591451, 0.13940997318819745, 0.434873975540898, 0.9081982144663673, 0.10291595826188174, 0.2522228, 0.4493113, 0.08403352540422389, 0.6134562725591878, 0.9998512333333334, 0.9955420468087087, 0.13997083063944193, 0.6399648, 0.5818783041640162, 0.45143022133487326, 0.15619470324277293, 0.2698394370336158, 0.24290126666666667, 0.8547468333333333, 0.34228986666666666, 0.32554005653187, 0.6980406848379725, 0.0964040285109342, 0.35552019761260406, 0.9996974706719721, 0.999387703593231, 0.8799292066673698, 0.005802710579001242, 0.9994153601914411, 0.331501113488641, 0.2703418, 0.1219024, 0.9998025738800606, 0.7883632691390512, 0.7158631666666667, 0.6146490666666666, 0.9996469114576283, 0.561157242452001, 0.9960181666666666, 0.9403548333333334, 0.41997256666666666, 0.07995173333333333, 0.3648610333333333, 0.3555717666666667, 0.3191436437681396, 0.2228053976565855, 0.8937557497868917, 0.036123884483859794, 0.729761623097426, 0.30658870766811686, 0.1295191176905328, 0.5774201134437682, 0.16838706666666667, 0.9994978333333333, 0.9987305729288682, 0.17233813326019548, 0.8421768, 0.1468485, 0.07615270355164848, 0.6955499390316078, 0.2671035982031662, 0.6878571666666666, 0.22169153333333333, 0.9998666, 0.5489717333333334, 0.031135833333333335, 0.3735196333333333, 0.22717810608726088, 0.7329760507776474, 0.9999541666666667, 0.9998932, 0.30858963333333334, 0.9999991992180364, 0.22821834633712323, 0.17260267427392448, 0.23791584410957567, 0.46805115898557953, 0.09002306573557627, 0.9993489266433058, 0.5714217275894117, 0.03468722507352845, 0.38251910902755937, 0.9999832339062784, 0.9998497528529524, 0.949130820812634, 0.43444803722582703, 0.39490501571390824, 0.9597675879417944, 0.9649551230165563, 0.27891075544101934, 0.32016855933880684, 0.35215604335354805, 0.5224564240628614, 0.8898381234234679, 0.4893090105192873, 0.40016919903558884, 0.14790236767189513, 0.5221492233937992, 0.8235322251022914, 0.7673211761419398, 0.35385090005468667, 0.2295363123932645, 0.5380363530599555, 0.08883342501238252, 0.7756470931159046, 0.4394458450965611, 0.3801065029682765, 0.045926923781445896, 0.9998144471539201, 0.9993004299987164, 0.32584664244868017, 0.9993501283094135, 0.4717990167208571, 0.01374909166061107, 0.9996943666666667, 0.2255375707711914, 0.4419518528134821, 0.6976589049909986, 0.0814781881418908, 0.24630836666666667, 0.8172880515509938, 0.22035174634002147, 0.1502841644279228, 0.9998526789437331, 0.42972924091173503, 0.09011619693260939, 0.7135050600173877, 0.6576838301041853, 0.17913614777078718, 0.032528590275309716, 0.5695461260673839, 0.7427477490060119, 0.46868652417373674, 0.12593766816239352, 0.9996742133456815, 0.9996097640781018, 0.9994587582656501, 0.2608702159469745, 0.6270689995130385, 0.9313497851564976, 0, 0.6732781666666666, 0.9997097666666667, 0.45441203333333335, 0.15028606666666666, 0.06569768712481071, 0.9698082384876893, 0.09831506666666667, 0.18261996666666666, 0.9995951286901674, 0.37628876666666666, 0.39181653333333333, 0.26486123333333333, 0.2839092, 0.7832786666666667, 0.5629634004271838, 0.14407203822341466, 0.15694861203664542, 0.4142115536686186, 0.860284, 0.06767683333333334, 0.010194466666666667, 0.9444195590327288, 0.8003292293442954, 0.11954740874960719, 0.9995794119248225, 0.9996449859876236, 0.4586918329601934, 0.99986006957892, 0.05367633333333333, 0.7636618333333334, 0.378882011617678, 0.04701300585496261, 0.8528877180548405, 0.07020501038528246, 0.957981993969016, 0.21170118574910132, 0.9996331744311968, 0.04548510972155893, 0.9995573043774781, 0.9998688216942146, 0.9998489912350395, 0, 0.7906637830870293, 0.2292791712608508, 0.1610546, 0.8334615752282103, 0.20049935379939687, 0.25572228481859116, 0.999642832666621, 0.7511599098171013, 0.16962437494824986, 0.40341052659536153, 0.3510477105781195, 0.10410613333333334, 0.48636500209120875, 0.16392425299596947, 0.3071199666666667, 0.43070418263434246, 0.43101366741303476, 0.6357142570589926, 0.9039876879545753, 0.8799551814828962, 0.9999791999410665, 0.05899264012556297, 0.8148003357479313, 0.11887252677558054, 0.42900082077195983, 0.2925860706409419, 0.9993472226670742, 0.3592268873411836, 0.5034009557796415, 0.03302887068276823, 0.318354216458637, 0.3373180173975836, 0.5869651763226915, 0.2712412491047908, 0.5342505470432166, 0.2161389, 0.9998124333333334, 0.521723696522988, 0.748932899004039, 0.20830446666666666, 0.5472422845757784, 0, 0.9993517663732376, 0.9998880331205963, 0.6267377, 0.8287665666666667, 0.3913924, 0.14591553333333335, 0.8517805, 0.19525983789837442, 0.045281392296522296, 0.9101798262916134, 0.20497214393042945, 0.9118897929734452, 0.03893041030282919, 0.1178773, 0.5295102666666667, 0.4116788043524502, 0.682539670370359, 0.5454833402662209, 0.9993748321663534, 0.5964853480483523, 0.12490861641079262, 0.6774057100601145, 0.07718969074783515, 0.9996912306570387, 0.897100349704977, 0.06080566666666667, 0.06334203333333334, 0.9999275666666667, 0.3690861459548583, 0.17209988377979707, 0.9999498532371407, 0.879433066111449, 0.06947716802377306, 0.9994073085871588, 0.9995831918058419, 0.9998553839567638, 0.24171331823253, 0.7100067940321584, 0.43806240810357816, 0.12704914309654466, 0.8022634164609813, 0.5777309989489597, 0.4646158459920563, 0.5874286782103318, 0.7578646226463255, 0.0849983558193578, 0.2332014, 0.9999913582279762, 0.9998839332250044, 0.5227512666666667, 0.283195559536113, 0.3067458, 0.5971429333333333, 0.0876378, 0.6893123333333333, 0.448402, 0.1005915276267275, 0.9994571737002077, 0.8565518508825093, 0.8829231775540374, 0.2776560253218416, 0, 0.13292905827576446, 0.9023797287984948, 0.4848700848108067, 0.32325063005298227, 0.1963146971913741, 0.9987360261708149, 0.7439820477011838, 0.18691189030471256, 0.9724775843970019, 0.3032552909164932, 0.9758622568717781, 0.03852126536459038, 0.9455651742998683, 0.9997608993225481, 0.9001869666666666, 0.116034, 0.36766183333333335, 0.9701737413250706, 0.028515959948229284, 0.8535204, 0.2143930548180298, 0.5703264323046702, 0.028976133333333334, 0.999851, 0.23515497117065187, 0.16239052364417286, 0.11866278892074374, 0.9930449498886308, 0.9999879215153413, 0.9982831617450637, 0.016019822613607012, 0.2673525898229312, 0.9998747105078679, 0.07206997686688973, 0.942882085427694, 0.12231368082108673, 0.22327846163104018, 0.4104201171554713, 0.9216195125310603, 0.9998936330319602, 0.1374875795028598, 0.6817185582762408, 0.2250149488209959, 0.5761500604436194, 0.7447140450481571, 0.12031728580852911, 0.16837633333333332, 0.5916548666666667, 0.3696235707501709, 0.9994726372193613, 0.6103482283816354, 0.9993964655199512, 0.26859943101664, 0.02346017373079752, 0.9998674034727144, 0.03800857776592884, 0.3053624, 0.4022652213446902, 0.4721849564454579, 0.9966624042781017, 0.22897900362671644, 0.0904015291969279, 0.8652153686565092, 0.12725733158864685, 0.4884557227984133, 0.04499060428938488, 0.024137710142677727, 0.9993503629268784, 0.9390232747842018, 0.37962023164573744, 0.19855824713661985, 0.9390370149972253, 0.48116638461582134, 0.19089318070887465, 0.9998135692340474, 0.8040927243214762, 0.12885619842589555, 0.2528429842292218, 0.24572974374270928, 0.6972344989793494, 0.021168569566262334, 0.3038223868521874, 0.38325820327098825, 0.19767553908076996, 0.558805253505174, 0.08616751693289026, 0.9998110469975462, 0.9070694900408529, 0.28017297782569356, 0.3337141147757508, 0.12847232636088743, 0.9998802160991167, 0.8062184446223475, 0.5026935163578741, 0.061589818248372404, 0.7615391565774621, 0.10285655809358127, 0.5570334666666666, 0.13250065355486298, 0, 0.9994694, 0.5598198974632062, 0.593648120738246, 0.1067847, 0.0124972, 0.9999456333333333, 0.9994976094155943, 0.9944425614797241, 0.18212301310377474, 0.33140288528538586, 0.44453892206338275, 0.4362274259751938, 0.17197431148494594, 0.9999962259626384, 0.9797760128509734, 0.0655399963014398, 0.19252184948198767, 0.9987681953191422, 0.09858423333333333, 0.49337344583652604, 0.11945067568231024, 0.9998536235886037, 0.45443729785729187, 0.18485744946877863, 0.9996922990600643, 0.9240805537471195, 0.04646739832429525, 0.452816441058556, 0.11576006666666666, 0.9991611333333333, 0.916241242907032, 0.2901309883646871, 0.08494319580913023, 0.9874341761249347, 0.6442032262024098, 0.0409648, 0, 0.9768598369641288, 0.9999688333042445, 0.9995768666666667, 0.7388846333333333, 0.4176997, 0.43605985421902177, 0.1748482690199934, 0.9995577, 0.4023536316546441, 0.6065973184053485, 0.9999735408036843, 0.9996411326514854, 0.27175656666666664, 0.7013047333333333, 0.0612024, 0.9993593589193486, 0.3174864088067386, 0, 0.8655862333333333, 0.9995635070980146, 0.9997699331186043, 0.42476431409398036, 0.999446846992928, 0.13026777436044165, 0.47588926421589073, 0.22912193333333333, 0.3279669597361824, 0.18848309823997098, 0.33340856242281625, 0.7068976613625632, 0.9991180370580588, 0.16052132682780357, 0.9378644333333334, 0.37598923333333334, 0.5287242325464149, 0.36410802981473367, 0.4912947559858519, 0.9998585570953405, 0.6304476318202503, 0.115648431074946, 0.9356655214300195, 0.33967727357780186, 0.12956016708714008, 0.39221623333333333, 0.260148768605877, 0.19924541929572467, 0.9999513141629465, 0.5442871666666667, 0.14262336666666667, 0.21502770789008802, 0.9693354741345422, 0.03474983347055635, 0.9930527985506628, 0.16536807040853035, 0.9579746391104633, 0.9997597307541629, 0.32100233535157463, 0.35469957164878635, 0.4775800666666667, 0.6229103, 0.08136768888152614, 0.9081648650275247, 0.8702295050180194, 0.11549155556388434, 0.08579554456278014, 0.7315127849313297, 0.3349884359672926, 0.9996377251221746, 0.999565073641691, 0.5382686811384241, 0.3188915666666667, 0.5966546333333334, 0.034662066666666665, 0.9134020037233025, 0, 0.13478781726511607, 0.4723481641281785, 0.731682, 0.1810016518869324, 0.9996847825909767, 0.4625982200164333, 0.9993027986520774, 0.4200549, 0.3198046666666667], 'oldestBlock': '0xd10317'}}), + (('0x400', '0xd10315', []), {'jsonrpc': '2.0', 'id': 0, 'result': {'baseFeePerGas': ['0x1dacbbd575', '0x1bb1c0b90a', '0x1ae693b338', '0x1ca0955ddf', '0x190c82b224', '0x1c2dbea40a', '0x1a9a01210a', '0x18fdd0f987', '0x16c50757ea', '0x185770931f', '0x1b6228f03c', '0x1e9acbddc2', '0x1c1400cc67', '0x1ecd259d56', '0x1bfae0945c', '0x187b8481d1', '0x15ae65809b', '0x15ebc8d0a8', '0x153880b55c', '0x17df35ab86', '0x19343323ee', '0x187f82313e', '0x16bd03d50a', '0x168d4fe47a', '0x154399376d', '0x14bde50266', '0x168eb5940d', '0x1405050e06', '0x1184646c46', '0x13b446379f', '0x162a24e7cb', '0x1364e04ad2', '0x15ade86ba0', '0x18611b5cfb', '0x188ab76529', '0x15d694aaac', '0x13e981d5f7', '0x166629eb03', '0x147d6ce0d7', '0x170cce7e00', '0x14f8997cbd', '0x147dacd86e', '0x14d4bf01c2', '0x163629953f', '0x13d0532927', '0x12287428ca', '0x110ea4cf61', '0x133076fe6f', '0x159625666a', '0x14041c427e', '0x13ec93e077', '0x14e5eaa7d9', '0x12d5fe44e2', '0x1412e96089', '0x11b922eed6', '0x12d2c59c05', '0x1167f65fca', '0x1128dd33fe', '0x134d59039e', '0x13e8837bb4', '0x164c40574e', '0x1763e7deb6', '0x15d81c676e', '0x147bb1d758', '0x1326df13f3', '0x158b8c9dde', '0x143e5a5690', '0x14a8eff8c0', '0x13574519e3', '0x15c1df1497', '0x143677c54e', '0x15cfb8c088', '0x1717ae2d37', '0x15a050dee4', '0x185393eebe', '0x171cedfe41', '0x16e875131f', '0x18d1f14696', '0x1a152e029c', '0x1796e20c73', '0x153f332b17', '0x16b89aca17', '0x148398d801', '0x1713780e23', '0x155f4f4ea2', '0x13509bc9c1', '0x15ba1d6162', '0x1776768d3b', '0x19651f739b', '0x1c90abe5ec', '0x1ddfaf7d0c', '0x1c33def029', '0x1eb3d2c797', '0x1c118bba7c', '0x1a86157b35', '0x184bff5251', '0x18fc20939d', '0x166a1a8c2b', '0x17122dfe9e', '0x151b8c56b0', '0x17795c1a67', '0x184311f6c5', '0x1675db779b', '0x1499fb8873', '0x1375e6c263', '0x113772c13d', '0x135db77a7f', '0x11fe92efba', '0x12f85b8231', '0x155705c1db', '0x14deb567cc', '0x177a5f5bb1', '0x180be24da3', '0x15ec9ef18e', '0x18a9dba478', '0x1b8462ff4b', '0x1e0a29e96d', '0x1a48e4ac40', '0x17e8b59dd1', '0x17116a036d', '0x17ce14abcf', '0x15606062df', '0x12b4545684', '0x150a211fb8', '0x17ab40cdd8', '0x1a79eae65d', '0x1c77fbf3c1', '0x1900fe95e8', '0x1719811507', '0x199e341f94', '0x170fc47dc2', '0x171c9aad9e', '0x153ce174fc', '0x17e467507a', '0x14e7da666b', '0x178476f1fd', '0x15ef0d2df7', '0x145228a500', '0x14fbfe632c', '0x14ad65e485', '0x126913ca44', '0x12beab0a4e', '0x11bd6f74b9', '0x13f49f196e', '0x14032a57c9', '0x13c5ab1693', '0x163e3a3751', '0x1811923748', '0x16a34ebc15', '0x1611144d35', '0x144fedfec1', '0x16d9d09975', '0x17f0bd5e7c', '0x1aeeb5c3fc', '0x1e2c05bacf', '0x1b88770b97', '0x1a612d7489', '0x1a7c331acd', '0x17c9fc11ce', '0x1ac2336b42', '0x1aec8b2be7', '0x184e987bba', '0x19c3d4cd86', '0x180d129a0c', '0x154fee1a68', '0x12b3682744', '0x15095199d4', '0x14f2671c1d', '0x138cdf5e60', '0x1381ae1c7a', '0x11fdcd63a2', '0x13eddf2c1c', '0x11ecc824d7', '0x10f8d7b0dd', '0x12f98dfeda', '0x1558115720', '0x1712a57b4f', '0x19d406563d', '0x1813521f81', '0x1b14d5972f', '0x1892184461', '0x1af7323e8c', '0x1b6cf6437e', '0x1a45d47146', '0x17643ee62b', '0x1a5076467c', '0x1a28fa463e', '0x19e7b05a2b', '0x1a86667150', '0x1839096190', '0x17dac05925', '0x15a004730f', '0x1822566fc0', '0x160f98a7ff', '0x14016da86a', '0x13b3c3fa53', '0x15ff55dc20', '0x18beec8f51', '0x19331236d4', '0x1aa496abc1', '0x1a69a02e55', '0x174f1ac0d0', '0x1a388e4406', '0x17b88ea9f0', '0x170a18cf19', '0x14763adafb', '0x166f8d1cf1', '0x185d4f2068', '0x1767c24049', '0x16c501a4bb', '0x177ec7a2ab', '0x152cf5c3a2', '0x1573685bf7', '0x17c51d559a', '0x1701253a94', '0x186d1d5036', '0x17d526437e', '0x1aa6f9a406', '0x18253d758e', '0x18b2e6e4fa', '0x17a526189f', '0x14d6d9b89b', '0x1566b2b1ab', '0x14835183d7', '0x1643c32b86', '0x1508f83ee4', '0x1438765425', '0x149f44513a', '0x126ebb1537', '0x121f1e122f', '0x14327541cb', '0x13b3bf7d20', '0x12288ea01e', '0x146cd8a9f5', '0x126f11ca07', '0x1419bd905a', '0x1204489295', '0x14445382b9', '0x16ccc46255', '0x194b2e629b', '0x16a8a5ff83', '0x1524c04303', '0x175e329bc8', '0x154dc93942', '0x17db8dacd1', '0x1ad6ce2f69', '0x1a2fc4d94b', '0x19d35a0372', '0x18116721b8', '0x190abce999', '0x193a181edb', '0x1c4fccf16a', '0x1970b18c9d', '0x16f9058b72', '0x14362188a1', '0x16bc8b9f10', '0x19606da7b2', '0x169d9fba63', '0x14fa82b88b', '0x14ed031521', '0x13a80d74f7', '0x161c524603', '0x13c1f3e3bf', '0x1541029f72', '0x145c719630', '0x130cfa6bad', '0x12e4d6827d', '0x10b094aba0', '0x12a6413490', '0x14c990cc41', '0x16854886f6', '0x1934a4d6d1', '0x169dc0d388', '0x1971579e73', '0x1c9f546413', '0x1bdb6eafe0', '0x1b68c1e25b', '0x199737943f', '0x16ddd58504', '0x19b909e7de', '0x1cf01507c1', '0x206d965b0e', '0x1d29c33685', '0x1c4bc9799c', '0x1a6ed25617', '0x1dbbfc329d', '0x1e58279726', '0x1acf62ad2f', '0x1b395c700a', '0x1ab8083cca', '0x18b6376862', '0x19e3888dac', '0x18cd9e4b8c', '0x161e969f27', '0x17c7559ae1', '0x158c1eaf20', '0x183cabfc5d', '0x1985efb9fb', '0x173d5ecba3', '0x17daa378c5', '0x16f8013b42', '0x19d6594bb1', '0x1adc008ea9', '0x1b59386639', '0x18045bb6b0', '0x1b04d89e0e', '0x1acff95db6', '0x1ba689374c', '0x18e2b324a5', '0x16a1d1e1e5', '0x1549b3e2f9', '0x15bb037b9b', '0x154df870c1', '0x13c298ecb9', '0x114a45cf22', '0x137320634f', '0x15bbc25a6c', '0x14da227fa3', '0x149b064a3e', '0x129703abdd', '0x14a36bb985', '0x124c5629e9', '0x11a69e1136', '0x108aa0714a', '0x129b7f62be', '0x14b426e540', '0x1536e03d24', '0x13f1d2b629', '0x146687cf4f', '0x135ef1f2cd', '0x1586ec9554', '0x1509514774', '0x161369f4bd', '0x13f6b7894f', '0x1293a65623', '0x11a5e4c42f', '0x13da719101', '0x13868f7838', '0x15f329780f', '0x15697a8fd5', '0x181612cf37', '0x1752ebc57b', '0x15a6c2ed40', '0x13c559d00e', '0x1523b9064e', '0x17c8238b74', '0x14cf1f1a06', '0x1766925f4e', '0x1a53455866', '0x199fdded3e', '0x16cd0a3c00', '0x16a5e89bd0', '0x148b0cee90', '0x1476b38743', '0x1514a0d6b8', '0x162ba25fe5', '0x16d3d37ab5', '0x150d3c2030', '0x15c4e34241', '0x14f50d83f2', '0x132bfd0568', '0x156cccb4a8', '0x1819d78b16', '0x1719b684a0', '0x15a42fa89d', '0x17e9cb513c', '0x1a1723b6a8', '0x17908b5b4d', '0x19ca5dd215', '0x1a3273da5c', '0x1aee14a410', '0x1986870465', '0x179c3480b9', '0x17b760a576', '0x1512cf841e', '0x171289b6ab', '0x1430387fd6', '0x1212aac62e', '0x13ebc2e638', '0x1633cbb64e', '0x14b541fe44', '0x15144bd7ca', '0x145ce64a02', '0x120ef01ddb', '0x10ae49109e', '0x129746c3c2', '0x14e88b031c', '0x13b84d1a9d', '0x1258483ee9', '0x1421fe2860', '0x12285f4d9c', '0x11a398ee65', '0x11d60b405b', '0x106498cf70', '0x1271135ffb', '0x104f863f20', '0x115be1b28d', '0xf85c3ee5b', '0x10466f886f', '0xf9e85e3b3', '0xe26b62252', '0xfeb6fbc8d', '0x1045cbd055', '0xfd1884cd3', '0x1065c18bf4', '0x11ee3acae1', '0x100708ea79', '0x1207564058', '0x1447bc8f6d', '0x120e2d55be', '0x144f762a57', '0x16d94a4249', '0x158eca78e2', '0x15ecda0ed3', '0x13796d088e', '0x14b98aa212', '0x1561f08284', '0x13b8acf598', '0x162e95aeff', '0x18f40db1b4', '0x1c122e01e5', '0x19493f9bfd', '0x1b804e1aa7', '0x18e16cf586', '0x1bfd72771b', '0x1f7d0148b7', '0x1d167b8a3c', '0x1b1548acc9', '0x19dced1ad1', '0x1a41fdce44', '0x1849bb1f7e', '0x1a53299f5d', '0x18a384695b', '0x18ef7c6e36', '0x178a5127c7', '0x1a7b4415ea', '0x1d4d4be8c8', '0x1d499a15a8', '0x19de78fa13', '0x1d13b2fdc6', '0x20b5e2cb72', '0x1c9f267204', '0x1ba624a930', '0x183160140a', '0x18e2e50dd4', '0x165980b775', '0x138e50a087', '0x15cd8f3e5f', '0x1735a34714', '0x14a4ae7e36', '0x14807d6646', '0x1257d7a1f9', '0x14a2a7e928', '0x147ac6cf82', '0x12a2a972a5', '0x14f6cdb4bb', '0x16237f71ff', '0x1447a95ec3', '0x1623626657', '0x15a275a74f', '0x185650fba9', '0x17513cf177', '0x176018ca3f', '0x155090f09d', '0x15def00b07', '0x15f991d5cb', '0x14376e2453', '0x12f0ef58b3', '0x11a12d4c19', '0x13d4aad7c2', '0x136938a9be', '0x118348dc14', '0x13b31aa64a', '0x16289c0e07', '0x1363888c47', '0x15cfaaddf4', '0x1582149e25', '0x15c6c5b32b', '0x1386487f1e', '0x1383bb622f', '0x111343f5ea', '0x1176bbaa81', '0x10b6ccdfcb', '0xf51999906', '0x113b8a9f28', '0x132ae412da', '0x158fd9006b', '0x179aec91b6', '0x1a8dcefcae', '0x1b4bd16c0e', '0x181f8be714', '0x1a9a27a531', '0x1decd20c6e', '0x1bd295637b', '0x1f4c22f83a', '0x1c86be8a2a', '0x1c2b75e1f2', '0x1ab7c3735d', '0x17bbc95793', '0x19c4f7707a', '0x19a4b38758', '0x1ba413477f', '0x1f17b01aa3', '0x1c36dfaf43', '0x18b003b95b', '0x18b81954e5', '0x1642e5f2bb', '0x13dbc4f88d', '0x1656fb274b', '0x15d262f128', '0x1318169303', '0x1559976118', '0x172316b803', '0x16d058f517', '0x19a9e2738c', '0x1847f8b1d4', '0x153ef99b9a', '0x14b4efb68a', '0x174a2887e9', '0x1a336af97a', '0x1768d7032c', '0x191c442698', '0x1aa3f5a6b4', '0x1a0d896a23', '0x181f4387da', '0x16a06b6ca4', '0x16f1ca1e07', '0x19d000a518', '0x196b016d26', '0x17d2efca14', '0x17fcbc84b2', '0x1afc434179', '0x1d159a65d0', '0x19ab3dd058', '0x1881ebec44', '0x187e1b86f0', '0x15d39880ab', '0x17afb94145', '0x161c886d96', '0x167a64ab7d', '0x15995cdf2c', '0x136137bb62', '0x156b8ead85', '0x17d56c0251', '0x16bb1d9662', '0x1922d20b32', '0x1634baab7d', '0x15f50119d6', '0x14493138b7', '0x132006c061', '0x11e03b757e', '0x13f94241fd', '0x158cae4d45', '0x145ce1f04a', '0x12381e8745', '0x13df5ad5a2', '0x1329bd3bf0', '0x140e776ff2', '0x126b22459b', '0x14b7df575b', '0x1220e36c70', '0x13daf631bb', '0x140ac499d3', '0x130fc023ac', '0x1242209a87', '0x1489e5dc8d', '0x171ab9eac1', '0x1725fb8eae', '0x14413c1cd9', '0x16c90d416c', '0x161b1497bb', '0x18de57bab2', '0x1bf9f8f905', '0x19b9af8b0b', '0x180576ce0d', '0x168a5526a8', '0x1534b49537', '0x15701ac8e2', '0x17c41a7158', '0x16b1286224', '0x1986edeb60', '0x1cb7a4ca95', '0x196d18a92a', '0x16d102fad1', '0x19aa9cbe50', '0x1cdfdddc8a', '0x1af50df33c', '0x1a87d17156', '0x1da275f636', '0x1a2c9c0e97', '0x197955241f', '0x18257cb2f7', '0x17b52a9d82', '0x162d4a97e6', '0x172d748406', '0x16eadd2c95', '0x19c57a399b', '0x185775efaf', '0x15d95db7d4', '0x16547739a0', '0x191e3b3bef', '0x19daa76ee1', '0x192a095528', '0x16f6ac6491', '0x18a3599da1', '0x1bb72a43c5', '0x1d11f640c4', '0x1a467e299e', '0x1a2ed5d692', '0x1791b547cc', '0x167b85e750', '0x18ff6e5497', '0x1c1f2841e0', '0x1f58ab39fa', '0x1cf8174c55', '0x19da5ea1c7', '0x19adb209f1', '0x168a827dd4', '0x19104b13d0', '0x1c323c79fc', '0x1fb7dafe4b', '0x1c30ed27a5', '0x1a09d3d3fe', '0x1987c5a95f', '0x16af369530', '0x167a14ee7f', '0x1948ada1e1', '0x161f97eda5', '0x148a07d6c8', '0x171b38da3e', '0x147cbd8111', '0x11ed25d0ef', '0x12f98cf826', '0x135b52f4d5', '0x119ce52a8a', '0x12036b0513', '0x10e8d3f30c', '0x1011b3b433', '0x1213baae32', '0x1455757d8e', '0x16df0de5a7', '0x149c75302a', '0x136070af04', '0x15ca29561a', '0x153ec037b5', '0x1355e4dc71', '0x147988301d', '0x16b4fa4401', '0x198a7fb905', '0x18efeca9c0', '0x177a06daed', '0x18b32e18c3', '0x18c889acd9', '0x15af78773e', '0x132f67cb67', '0x1550137562', '0x14db7ca0ca', '0x1776156295', '0x19a63d1fa7', '0x18c77fb8cf', '0x1a8f69bffd', '0x1a05956088', '0x1d0b2d403c', '0x1af5942f55', '0x1a33e41cf7', '0x195e13aa31', '0x1b4c5772ed', '0x1eb561b253', '0x1d6cf38509', '0x1afb7d1d42', '0x1af35884d9', '0x1c7605f507', '0x1a7ca44cae', '0x1dcbe83354', '0x1c13f579c8', '0x18c9f111d3', '0x18971ed56f', '0x184d9e1b5e', '0x1ab8e30404', '0x182aa3fd44', '0x15b5e89f7b', '0x134b93ae33', '0x15b4b19326', '0x186a9762ca', '0x1942b6840e', '0x17cfb8264e', '0x195f44afd9', '0x16ebfb0de4', '0x159a865f93', '0x1704f501dd', '0x14d1b077ad', '0x151d6cfa1b', '0x13a0a7880f', '0x11c1a49aa4', '0x13f9561417', '0x13f81a6b61', '0x128321b30b', '0x10c14c7e15', '0x12d9617b5a', '0x1211d56136', '0x1453f89264', '0x16de20ed32', '0x16382ec5fe', '0x18ff048171', '0x1c1e12f2f0', '0x1941c24a2a', '0x17fc475580', '0x173d3adf24', '0x159509ec89', '0x1846ffd814', '0x170494108d', '0x146c5f1809', '0x14253196a5', '0x14880f1289', '0x150d8dc2d6', '0x17237a16e5', '0x16b290f9c2', '0x14bb3ba738', '0x13b5cc3943', '0x12084047d7', '0x130931ff65', '0x12035e4349', '0x105c1678ab', '0xeeff36732', '0x10cd87447d', '0xfcf3fc114', '0x11972b78d1', '0x128374c639', '0x146d91ee93', '0x1433bf7736', '0x1318fb0c08', '0x1165761500', '0x139203680a', '0x160377d5f3', '0x18c30d04a7', '0x169c8adbcc', '0x1447ae7ff9', '0x16cff22aef', '0x16b41d79c7', '0x193a52a9ec', '0x1c611328e0', '0x1fec16c6d0', '0x226738706e', '0x26b2b5dfff', '0x2742f9c4dd', '0x27dd45a07d', '0x2354a568a6', '0x27bd17db14', '0x291e2375da', '0x280d5ea0c1', '0x2709bab4bb', '0x2beaa4d5af', '0x2d9a2b6001', '0x2843c38b08', '0x278aa341dc', '0x27db868286', '0x25658ac00d', '0x241ef0591a', '0x21fa88c16b', '0x2638791788', '0x217169f497', '0x221bb87953', '0x1e2953c026', '0x21ee07c8c0', '0x262a454f15', '0x22ac6d769a', '0x2701e8a533', '0x2be0a077ef', '0x2dd3aede4d', '0x2874f2046d', '0x2d82289c2a', '0x28f0e6fd31', '0x2e0ea4eb35', '0x29b35ad97c', '0x2c52a9b2a6', '0x277e2ec5b6', '0x23a15a7e1a', '0x281559bdb5', '0x2d1744a1b5', '0x32b3e38e9e', '0x3908e2f938', '0x3a4a9c1496', '0x4192936944', '0x49c2bba5d0', '0x4fc2a6f0dc', '0x5481921774', '0x5913f22709', '0x64267ecf79', '0x70a7b817f4', '0x665bca5d7e', '0x5994ea71f6', '0x64c5a62f70', '0x65c47b60c8', '0x6d7be78ef5', '0x7b28706643', '0x6e762019ea', '0x65e69c664e', '0x5c547f423c', '0x5cb54e120e', '0x528c122c38', '0x5cdb9b2aea', '0x5f123fe04d', '0x5435261625', '0x4c73d791d8', '0x47385da544', '0x401fa9cee4', '0x3dd4e0c73c', '0x361a44ae55', '0x3a05f89cd4', '0x34492f9372', '0x2f4ed9b3a5', '0x32484603ac', '0x3891318c80', '0x33595235fa', '0x31163089e7', '0x2c9441628c', '0x2841dac80d', '0x2d4978c137', '0x32e2f83004', '0x31e4273bc8', '0x2f59faa895', '0x2d12c5baf7', '0x2a450e56a4', '0x2942ca3a09', '0x24785adb83', '0x29069a3308', '0x25bd1259bc', '0x24676ea2c0', '0x2457591081', '0x1feab1ca14', '0x23e04268ae', '0x224b8780d7', '0x1ff7359f96', '0x23850f8bcd', '0x209e82a377', '0x1ce8023ab9', '0x20814ef07a', '0x1d58ec1b4f', '0x1b4b095a9b', '0x1eb3efba94', '0x1e41a60299', '0x1b1dd8081b', '0x1dcff99f24', '0x1aacb97eaf', '0x1d184ce94b', '0x1abb690981', '0x18140efaf0', '0x1a38529ca9', '0x1a8748a47c', '0x1a51950c6a', '0x1be3edc4a3', '0x1e7ec57788', '0x1bd3f66570', '0x1f4dc64caa', '0x23376dc4ce', '0x276ece7001', '0x2931db6311', '0x2625df5293', '0x2651bb6231', '0x21c4f8d9aa', '0x204fa53125', '0x2459545203', '0x264b4ba8e9', '0x2181e233cc', '0x2227d1d708', '0x1e74d98cec', '0x1ed3fc5e49', '0x1de7c035bf', '0x1cc47f1a28', '0x1ac4490f54', '0x1e1bbc3803', '0x1c81f2f99f', '0x201105613d', '0x238fd4a087', '0x1fc69e88c5', '0x1c9c7d5301', '0x1c70c91190', '0x1ffe57fac7', '0x23fd19af5c', '0x244181b0cb', '0x20b3d370f4', '0x240d561eeb', '0x1fb13cf434', '0x1f29913bac', '0x1c60a6193b', '0x19aee03a90', '0x195f73a659', '0x18a29631f7', '0x17057e0b16', '0x190cc9bdfc', '0x1648d0b303', '0x165e128200', '0x157d975607', '0x13d5b62007', '0x145830a083', '0x1275b5ea94', '0x14c44947a2', '0x122bc01eae', '0x1470cb1539', '0x15c4becda7', '0x13f9acf5b8', '0x13ce718374', '0x1647cf73cc', '0x172f69cf25', '0x1a14d34b27', '0x1cdd1cd797', '0x1b6bfbb232', '0x18dc91d0f2', '0x1a4a0b7d2c', '0x1816849540', '0x1764228a4f', '0x17e75c4749', '0x16ea779c54', '0x167fc28c41', '0x15883985ca', '0x1670ad3220', '0x15788f8e24', '0x13b680499a', '0x149d194043', '0x13019c9728', '0x1533778b0e', '0x17d9d54dad', '0x19bdfe5167', '0x17de4ee5b1', '0x16b35cadbc', '0x19774127d2', '0x17cca021dc', '0x1556f61127', '0x143949924e', '0x12527204b3', '0x144f03c576', '0x148f9be710', '0x12af979984', '0x127245b684', '0x10f21ae0c2', '0x13101de0b2', '0x1308bb4725', '0x12d836e367', '0x1155754226', '0x11f22e6667', '0x143024aab3', '0x16b5e4ca9c', '0x193fbe1ce5', '0x1bd06e9cc9', '0x1877d20e10', '0x159bad647e', '0x184eb27467', '0x188f9343d2', '0x15ce975132', '0x17ff2b5f97', '0x157c3d1123', '0x156fde1d25', '0x1527356a52', '0x141763a97a', '0x1699d6a72c', '0x16ab329b49', '0x144bb9d892', '0x1698ef12e8', '0x16925f791a', '0x191d8c01cb', '0x18f2ec4585', '0x16480276e3', '0x154f225cb3', '0x17f8fde1f2', '0x189e96560c', '0x169866e9d3', '0x18f5073fed', '0x188b98af32', '0x17dc6163f7', '0x1ad722e9db', '0x1d07676019', '0x19667a7416', '0x1704dc0080', '0x16c37d11fd', '0x14b04777fa', '0x13d3e503e9', '0x15e6cf073c', '0x16f8298c09', '0x14464ef396', '0x16cda86795', '0x195f72320d', '0x17662eba30', '0x1a5287d4af', '0x1a0e69166e', '0x1782a26861', '0x1a30690017', '0x17fbaae4ad', '0x190494477a', '0x190bf8754b', '0x169c5f0a4f', '0x196fa52829', '0x1c9d77a18f', '0x1967a4beec', '0x1c947f5b5e', '0x1c8b12c5aa', '0x19dfa4c931', '0x1cad70f7f1', '0x19d5b9efad', '0x1b2216c2fa', '0x18bb07a4bc', '0x17dc2d5570', '0x159c960a96', '0x16c580594d', '0x15b23edcc9', '0x15406d3086', '0x17e820c90f', '0x17db4b0127', '0x1a09d91d52', '0x16f2745439', '0x162d9eb761', '0x15efc72af3', '0x135d3a5664', '0x12fbead0de', '0x11d1e67e54', '0x140c1d367f', '0x118e22fd85', '0x1355b1029d', '0x1188388bb3', '0x13b8f4418c', '0x15741e065e', '0x1483062acb', '0x14ec47aa84', '0x1788a7c1a8', '0x167d9093b4', '0x14f372d2c8'], 'gasUsedRatio': [0.23305321960455436, 0.38536927863555037, 0.7567350774160527, 0, 0.9997943666666667, 0.2761272048822342, 0.25789260736643355, 0.1443864, 0.7761427632583449, 0.9998652965394053, 0.9705378746187137, 0.16978427797178777, 0.8879485016552369, 0.13360496666666666, 0, 0.04232526666666667, 0.5442404, 0.37221056971200955, 0.9997379, 0.7231899333333334, 0.3879816307290736, 0.21267289849470525, 0.4672202099405362, 0.27156019038515555, 0.40175327288168844, 0.8501498695016817, 0.049975929553827535, 0, 0.9994050248173219, 0.9994731372119029, 0, 0.9713363988594637, 0.998169672396517, 0.5266680257693347, 0.059339868013720154, 0.14721120610755484, 0.9995826448036821, 0.15906907549427993, 0.9997736245554234, 0.13923098267596498, 0.40841232927908205, 0.5663944603399966, 0.7650913964188893, 0.06818849455219574, 0.16573820161032804, 0.2575021859871828, 0.9999913163495604, 0.999693132224443, 0.2089937923862748, 0.4816297901131825, 0.6955378137341645, 0.10528477563908997, 0.7628940725651491, 0.03159328990348435, 0.7482935476457515, 0.1988365272739157, 0.4433582971252128, 0.9994314666666667, 0.6256061333333334, 0.98012247706781, 0.6959650060995058, 0.2356038615879068, 0.25078014314893865, 0.24001286191743335, 0.9998522662480877, 0.2583585, 0.5822672506369136, 0.2446235882191096, 0.9997517735238465, 0.21604116172217674, 0.8163639972015286, 0.734939113195881, 0.24601841466189836, 0.9994382017405826, 0.3004693167378648, 0.46452732016793913, 0.8338656133617721, 0.7034876739256892, 0.11762495487019482, 0.10278539856729157, 0.7775443030421919, 0.1114519486083371, 0.9995599397261707, 0.20467272207264514, 0.11493589545552844, 0.99953898096609, 0.8195535108032279, 0.8294183333333334, 0.9993282440302956, 0.6832512377011551, 0.2762383666666667, 0.8545506666666667, 0.1568485, 0.279857, 0.16416523333333333, 0.6132668666666666, 0.08848626666666666, 0.617164794755412, 0.15958944895015234, 0.948454619288576, 0.6342641276831639, 0.20297364854879102, 0.16894848431898837, 0.27847392808269994, 0.038767955435011756, 0.999398671722099, 0.21668994998350774, 0.716893063266548, 0.9996872648840766, 0.41190673333333333, 0.9998691722466989, 0.5968402570509066, 0.14699586666666667, 0.9997572963332028, 0.9628097319557498, 0.8666902666666667, 0, 0.1384642770331896, 0.3593004116903136, 0.6277923127259458, 0.09192910727748317, 0, 0.999380798224955, 0.9998941963794609, 0.9744244348084214, 0.8010167089013848, 0.013176927743843572, 0.19536592466308067, 0.9360861885110318, 0.10084431181430586, 0.5086972718274585, 0.17567644414311726, 0.9999358077840577, 0, 0.999723358668242, 0.23064328267395912, 0.2058671919592297, 0.6305880428876913, 0.441477457358536, 0.061475852662124485, 0.5726411348029368, 0.2855798780193208, 0.9995654654354854, 0.5113877454651654, 0.4519850842099867, 0.9998819, 0.828293, 0.2622271314605379, 0.39907127246652097, 0.1819661264241712, 0.9999184331810753, 0.6907238812212575, 0.9999202664434127, 0.9811296202370982, 0.15015256157086282, 0.33242452912189674, 0.5160055428888547, 0.09280551079492648, 0.9993222497843689, 0.5247249879013713, 0.11120420219142409, 0.7399227631144955, 0.23391763333333335, 0.044496150490954414, 0.00987404145385402, 0.9995705802565147, 0.482978907238467, 0.23330593422991597, 0.4910547713213362, 0.18930503272912055, 0.9308213273857177, 0.09772414663840436, 0.28736031418755686, 0.9720190640033473, 0.9994389699089417, 0.8239920594158453, 0.977684487165631, 0.22855276442388056, 0.9994148906147039, 0.12916203477300145, 0.8898837735679669, 0.5682383614352989, 0.33185658332646384, 0.06134236520920241, 0.999789955855327, 0.476554811466171, 0.46100404568959225, 0.5957290130831318, 0.15282545017542323, 0.43918093840783823, 0.12616196666666665, 0.964102746331793, 0.15638567526382668, 0.12733316392329622, 0.439342834751386, 0.9659771333333333, 0.9997668056190203, 0.5733376351151261, 0.7291200333333333, 0.46542066666666665, 0.029982144230507757, 0.9997071663933553, 0.11862606666666667, 0.3850827666666667, 0.052488188048963144, 0.8858718141727194, 0.8438693910845741, 0.3425280572958989, 0.39134918193914187, 0.6274820390890075, 0.10509290331708443, 0.5519816687152249, 0.9324624735057936, 0.37118128371375964, 0.7472135115437848, 0.4027908171325265, 0.9732391465689585, 0.12377990882860894, 0.5916721270919558, 0.3293485357388936, 0.025339050114416638, 0.6078549616665978, 0.33399003203771, 0.8415858108211012, 0.27908365148668435, 0.345118914690327, 0.5794400798092006, 0.07529248935217069, 0.4325129310877477, 0.9581393545108685, 0.4019738434484926, 0.1865895186579389, 0.9993284551395543, 0.11002728253902792, 0.8616568867796416, 0.08532149151402273, 0.9995726650570383, 0.9999230082257985, 0.93751210422396, 0.0833118817287483, 0.23251445091522185, 0.9208186666666667, 0.14667723333333332, 0.9794961446519193, 0.9998741332158577, 0.4027558002777181, 0.4448564970654612, 0.227772, 0.6618690333333334, 0.5295481, 0.9891265179552168, 0.09430063969339376, 0.1120364713543115, 0.019205533333333333, 0.9997278675960408, 0.9644808335154447, 0.06480430855799486, 0.21043831937106502, 0.4899461423766891, 0.2573576667714177, 0.999413554672275, 0.07432191818100004, 0.8029348630165912, 0.3319675557849533, 0.24256565827202264, 0.46707774754113707, 0.03336688708954875, 0.9696683289130338, 0.9585519138591865, 0.8335241450619796, 0.9768963165531122, 0.0890734494774452, 0.9999100700514182, 0.9998891834681908, 0.3930593871396955, 0.43567911464423353, 0.23461231135209357, 0.07419634384933681, 0.9996415175079064, 0.9999475286776859, 0.9824488165703519, 0.0972698954667455, 0.3810701319194175, 0.2366209773938393, 0.9995926110472881, 0.5820650396789989, 0.0341137061132247, 0.561762889590036, 0.4257728761820565, 0.19952436531903506, 0.6905195488114694, 0.3322663515365908, 0.0671992, 0.8000366357748341, 0.12465374967683303, 0.9993016666666666, 0.7122688333333334, 0.1421354, 0.6057377362327646, 0.35154926144597737, 0.9995533333333333, 0.6582337652717879, 0.5728435679873302, 0.0127352, 0.999962963834184, 0.46942417146256005, 0.6250365315404787, 0.1000098200183307, 0.1377918, 0.26242465767822276, 0.5831685171567244, 0.4215941990224724, 0.2100291536036546, 0, 0.9996111401808754, 0.969666858338738, 0.33778993708045146, 0.4527099313968787, 0.10871444135758385, 0.9407689666666667, 0.046442166666666666, 0.3584908337008911, 0.2486038736504112, 0.9995678776147725, 0.9506388728805252, 0.5986567924724217, 0.26058900500218085, 0.5914308333333334, 0.2981167109682605, 0.9452390822231435, 0.4088307714904138, 0.6976458356055598, 0.11730146666666667, 0.2220999, 0.30002216666666665, 0.9998347, 0.433982, 0.9966242333333334, 0.4019901899128834, 0.9995693329170218, 0.37340242175385036, 0.2131701716899929, 0.15258428846783692, 0.7768999031808186, 0.9999635643161057, 0, 0.9981679333333333, 0.9999183, 0.3935172637253056, 0.05924293333333333, 0.47318409760464425, 0.12823966571011053, 0.4845225045974939, 0.6205848228451774, 0.7068002353554736, 0.6185360488362608, 0.18884000452884483, 0.6363108999178129, 0.35082423218888936, 0.15922837629746653, 0.9700999473904852, 0.9995933346657506, 0.33394775848431546, 0.24734871504912054, 0.9199194624013424, 0.8641712077346367, 0.11276739710450662, 0.8778320035680459, 0.5630598334792908, 0.6119089869685279, 0.29138438496666913, 0.1998575163311291, 0.5179824709642509, 0.05425804766895723, 0.879421908117758, 0, 0.08085875542571766, 0.9090151550118829, 0.9580876538423296, 0.2307869654387362, 0.5717101140915106, 0.3640573565381543, 0.04730636666666667, 0.19486715444298025, 0.9580405924391474, 0.9986191502654128, 0.2726375368640801, 0.22107925863025787, 0.8898493090338765, 0.10758926533720592, 0.38574503293618956, 0.5446864840142012, 0.17635261840037755, 0.9999086104107857, 0.03777374546239519, 0.7570764333333333, 0.07684176666666667, 0.6939422986786736, 0.3387949, 0.12404963220082256, 0.9998741791830157, 0.5886871160953451, 0.3883635, 0.646410580068563, 0.8739841781847055, 0.07545058376394313, 0.9994372008344697, 0.9995515207841617, 0.061179989017163275, 0.9995779644346109, 0.9999198320417756, 0.2739902362647584, 0.5681749921436738, 0.05286481769980142, 0.7568411440877367, 0.626960051047278, 0.18924473619341922, 0.9990687666666667, 0.9997504333333334, 0.9997617326680497, 0.10316536639318752, 0.8504000333333334, 0.118835, 0.9999015627906016, 0.9999313009024133, 0.19506410846006025, 0.22432692285300143, 0.31979234104416304, 0.5610580666666667, 0.19993386875617375, 0.8354481838848221, 0.24379881787364352, 0.548176689073761, 0.27619185482846464, 0.9997738715306798, 0.9260228559710448, 0.4980298724271828, 0.03311507241432852, 0.9960241395080962, 0.9998518661037579, 0, 0.3640634, 0, 0.6146511734005561, 0.09227582988118119, 0, 0.9596151874994494, 0.7580484681050617, 0.05772720276481443, 0.47260628043783726, 0.07881406405412773, 0.9998579659896378, 0.4698036, 0.13979796666666666, 0.9998397666666666, 0.7241142308797874, 0.16416486075251296, 0.8665283358973952, 0.4090057771109765, 0.9996745, 0.3323819956479165, 0.5099569, 0.14737825180378028, 0.6043671, 0.5190264666666666, 0.17993326666666667, 0.24765746666666666, 0.22302535092184184, 0.999417966123435, 0.4153413, 0.10884275161361737, 0.999472632841124, 0.9992999824461757, 0, 0.9997521, 0.4444186585132951, 0.5499024315723505, 0.08635865425415326, 0.4979583207329419, 0, 0.5910195, 0.32827623333333333, 0.16607433825797557, 0.9997363330872442, 0.9491395333333333, 0.9996701666666666, 0.879051326954104, 0.9996815663694619, 0.6118063333333333, 0.0350356543501937, 0.9110459666666667, 0.9996454, 0.21896641263139877, 0.9995675995820129, 0.14584113333333334, 0.45000026666666665, 0.2938298248239406, 0.0532143830000908, 0.8431193808360358, 0.4804362794955977, 0.8115901264463818, 0.9994930093571837, 0.12972711708089846, 0, 0.5051167, 0.10228136666666666, 0.0682472, 0.9997958, 0.40726, 0, 0.9725799401606088, 0.8348200718592322, 0.4441229, 0.9996531720108647, 0.284524, 0, 0.3984818508606988, 0.998947278350492, 0.9999931266148284, 0.07385808062673337, 0.790631013070889, 0.7437318854374781, 0.4117749613869926, 0.20356383014288484, 0.2520143733943625, 0.5561905887740478, 0.9999926857081175, 0.43886384195134576, 0.24915104034046293, 0.5274144329069744, 0.9999571830451538, 0.8111291045125401, 0.030266847640761964, 0.31901752462206057, 0.49756831759092174, 0.06459323135088704, 0.8408463490646557, 0.23403093333333333, 0.5663261174536935, 0.3435765843978502, 0.08899779237545392, 0.9211382168292787, 0.9507034666666667, 0.31492423333333336, 0.9232292, 0.033729770454181844, 0.4551606581499476, 0.19556184971148313, 0.27111118177791205, 0.23873170843686797, 0.9694049516286507, 0.8155889904453701, 0.27972385849252146, 0.07891756540809436, 0.8629714833068983, 0.3572023121557338, 0.6864977708777771, 0.17331938138953337, 0.9994458844790542, 0, 0.8810247413197976, 0.537620803551728, 0.3043042061145417, 0.3314477885162843, 0.999576032132091, 0.9996889286908313, 0.5076124453402108, 0, 0.9997396987765842, 0.38069960912313827, 0.9999131661775028, 0.9998975994289858, 0.17814071273999776, 0.2350486096214522, 0.2533889421966979, 0.26318368151540056, 0.5437667705586574, 0.934393046003879, 0.3192367674922811, 0.9997431, 0.9999070666666666, 0.041573329689775396, 0.08944550358603351, 0.9996399146952841, 0.9999560332497965, 0.23440421631744368, 0.4366842518281886, 0.9679999268617041, 0.03293045846907552, 0.3929786703238518, 0.2915484466626475, 0.42731803203029584, 0.2417272452067539, 0.6804830804822113, 0.4551079925761679, 0.9981288025537519, 0.278086839080669, 0.09040447246017842, 0.5880325978599764, 0.9994454229963441, 0.6172104753699326, 0.393260726976024, 0.15019567456918614, 0.7916825503236796, 0.9996171307808719, 0.6955116333333333, 0.1154406, 0.48593172100776927, 0.1006900640003952, 0.31557936831321387, 0.9475060669281938, 0.9998733666666667, 0.9586712091023551, 0.19664650041190407, 0.06973486350458027, 0.47299986536641087, 0.01127292943415838, 0.9476439849912908, 0.9999415902050037, 0.9996340806241582, 0.05519944083723096, 0.194552, 0.4219569590295077, 0.05410997092048707, 0.4634031347952361, 0.9995386, 0, 0.213565, 0.9999525203027423, 0.046605810983427046, 0, 0.7339457611636129, 0.5805125, 0.13963698885294823, 0.5909516515548748, 0.2548779, 0.30121550360593785, 0.999819633164991, 0.9993634666666666, 0.9991647, 0.10471995904000256, 0.2604320097365424, 0.9981181333333333, 0.40003113333333334, 0.14046386296218258, 0.7356721143453431, 0.9360905306240006, 0.9992424318939539, 0.4054373465665474, 0.265725485407637, 0.7084205367930505, 0.5135107513408551, 0, 0.03881400187282882, 0.9435964966011319, 0.41452525128228673, 0.9993713321388644, 0.8730585666666667, 0.3643120492838743, 0.787484327901517, 0.41891677718580655, 0.9645100992358552, 0.2129333, 0.3877429023891503, 0.3724998666666667, 0.8044403666666666, 0.9997122476568298, 0.3328892217929144, 0.16787916161520564, 0.49528456666666665, 0.7241820971512015, 0.22254742741480887, 0.9998141850387359, 0.2692954783280755, 0.031429033333333335, 0.4679661355980782, 0.4532953564089993, 0.8981403, 0.11744947725212997, 0.09349058917177798, 0.05498958915612523, 0.9997324994828324, 0.9995039834012432, 0.6383047177503481, 0.2705210540351247, 0.76218331377548, 0.11369563333333334, 0.2699680237752165, 0.7621321995289605, 0.11766717259178529, 0.556841110689176, 0.2182303165417044, 0.118671136234886, 0.9995493586719261, 0.4990354130333891, 0.20816585805178622, 0.12032466833047635, 0.9999250264334374, 0.3345852626498217, 0.9999206554037157, 0.999739631614902, 0.38661273333333335, 0.9998678333333333, 0.9994869333333334, 0.09304943333333333, 0.2986437077527128, 0.3755439666666667, 0.21479253333333334, 0.9995155, 0.29248846666666667, 0.049123066666666666, 0.44554497466776305, 0.5766813715692801, 0.6015931171658218, 0.8962652063617186, 0.4237538199456408, 0.15350482981352348, 0.30295926666666667, 0.1594816671813359, 0.7226431809988552, 0.2850879574220552, 0.1328374436426877, 0.15221646733699135, 0.9995645491435415, 0.2635451072932461, 0.9505981894204376, 0.7098844567290801, 0.9136456550442891, 0.45577293478847675, 0.2812984875904666, 0.14367263341334233, 0.9998826900060844, 0.9993637852169411, 0.9993960986649882, 0.1526240556506061, 0.08755711718867068, 0.9994638518661415, 0.4809376125061268, 0.9447315337401757, 0.9996664893136001, 0.9993831930115247, 0.8108784041294188, 0.999358447047083, 0.5582494913022902, 0.5614054906488902, 0.04508773333333333, 0.9990563666666666, 0.6388153333333333, 0.396346068064535, 0.3987102334940937, 0.9998792844287303, 0.6535316968279472, 0.03181916666666667, 0.4281604987270069, 0.5319630940905377, 0.25303303135371386, 0.3635392573912557, 0.2627735333333333, 0.9993663145394811, 0, 0.5795694333333333, 0.0371389, 0.9997602992655662, 0.9993030326828305, 0.13405593073523164, 0.9999674332725421, 0.9993908936553471, 0.6777166666666666, 0.03127349476569463, 0.9994574, 0.098544061609495, 0.9998584570320237, 0.12163582830096992, 0.7515355945842964, 0.0641079, 0.10877888925202127, 0.9999245193233538, 0.9997071429049017, 0.9978211684975299, 0.9995412903998175, 0.5881379358625137, 0.9996354323271132, 0.9994841582303965, 0.825359494090707, 0.7380016908404482, 0.7163998031268083, 0.9972033272843852, 0.9994401922756496, 0.13440300535064234, 0.0007020546800302218, 0.9996718925394629, 0.5395125590878115, 0.8032989193117044, 0.999578453818388, 0.08763405206284607, 0.190005694682763, 0.12431090221661541, 0.5163827758718705, 0.06158925323704269, 0.9996263663378959, 0.5953479356529043, 0.0429251, 0.1316197933949168, 0.22624421116126375, 0.10143351116159305, 0.35701819976730625, 0, 0.7898724666666667, 0.10447336666666666, 0.11918034627480402, 0.751484601385628, 0.9999645012980171, 0.1310048822426096, 0.3237756153954362, 0.13268604261045405, 0.11220608716136002, 0.999761366829348, 0.9945879273339975, 0.4217573274963449, 0.296377591214575, 0.30755394997323227, 0.25119835111780525, 0.404532030408997, 0.035563978035665106, 0.9996585336450504, 0.17949632591384118, 0.35855005649868615, 0.49309646231303617, 0.013012550063184922, 0.9961952359625015, 0.3237288029274509, 0.22831351700177088, 0.9447405140347619, 0.17335512541614326, 0.04469771717214385, 0.997999223862993, 0.11141395642117234, 0.22001001339007586, 0.9997253635946105, 0.44183771612892647, 0.08490003188801577, 0.8976644957392013, 0.0790078, 0.8629232887418768, 0.17515266666666668, 0.10291623333333333, 0.855781270410556, 0.5470543866330001, 0.4683703163719097, 0.7388670038473073, 0.873585, 0.15014531690195476, 0.999616399641973, 0.9999662002963764, 0.9789023963801304, 0.6787257986547371, 0.20415504548704683, 0.5179644426020152, 0.025059441088445735, 0.32726292828217224, 0.9998686767364312, 0.7140563325016299, 0, 0.5773785666666666, 0.0667935, 0.5488073895840712, 0.38026586759033865, 0.3478245522218225, 0.22179436666666666, 0.9993661143439903, 0.2873377348485525, 0.9993577666666666, 0.9360128, 0.07415230973045178, 0.10163852819595964, 0.47613258786246304, 0.9997033661129501, 0.9994938599676135, 0.5296995666666666, 0.10795991048074888, 0.909712485460493, 0.016282316057941608, 0.4331114, 0.1425384, 0.12020301157413547, 0.4516802215682068, 0.38369396666666666, 0.23799180100631734, 0.8524536333333333, 0.05839936030867476, 0.5149046472443374, 0.34318664206350763, 0.1918129913842506, 0.6027853, 0.12944566666666665, 0.9998830333333333, 0, 0.9996337, 0.7598627392982581, 0.17048937328928557, 0.4661830624293766, 0.9996540911065979, 0.662419815326188, 0.9996531893454583, 0.9267221382734201, 0.3001765505002264, 0.12654406666666668, 0.7296936124792527, 0.16506792359137862, 0.38428933001044085, 0.5876570165483315, 0.3346930303275391, 0.42724255103664055, 0.3280933532137389, 0.6686809672623968, 0.3272377694336138, 0.1724790886907513, 0.6827781333333334, 0.18809606666666667, 0.9618989610020852, 0.9999505332871644, 0.8171788, 0.20884023333333335, 0.30430043333333334, 0.9872471802048033, 0.2382344890188564, 0.0866056, 0.2908286, 0.12386325246603308, 0.9337066576428293, 0.5496973107980614, 0.13521848621085267, 0.4487248346828384, 0.17459113027177, 0.9997681545749387, 0.493946722096753, 0.4601725109514755, 0.17932074808550938, 0.6412729398629476, 0.9997295042797707, 0.9997930268052854, 0.9471006478961761, 0.9063834154625872, 0.018786757203485074, 0.0324622030122052, 0.9996819118102164, 0.5417042089886696, 0.051506490037374064, 0.9016617634276315, 0.08136861290099565, 0.4910033643583549, 0.44704026844987543, 0.2992178106164574, 0.9996309985977947, 0.5120011431547201, 0.08128483333333333, 0.9536096665060098, 0.4954634290992005, 0.9507662773183269, 0.4734824445475347, 0.07230527681617027, 0.3254733555078406, 0.9999748666666667, 0.6079326795949578, 0.17112855434665497, 0.9181080867178305, 0.43399189125126003, 0.3884613333333333, 0.9994815937763226, 0.826157071079933, 0, 0.12499285552341861, 0.4556270919186191, 0.1353768, 0.33355514993724705, 0.9183807238220089, 0.6950154327776299, 0.03072459171005758, 0.9988909142483069, 0.9507206587325551, 0.18885058730351884, 0.9997163655888559, 0.45956381560988957, 0.10915383333333334, 0.9557683077525203, 0.16306201885788427, 0.6725902333333333, 0.504616257775718, 0.11097806992436368, 0.9998116821898757, 0.9999180065334264, 0.05125114284579535, 0.9999375780316353, 0.49484772086797, 0.12588050748324486, 0.9334759666666667, 0.10350293728492539, 0.7010138209462329, 0.14580985274373348, 0.3591996705060516, 0.12306856666666667, 0.7146665051756373, 0.31112909038715103, 0.41803096666666667, 0.9997413666666667, 0.49161123333333334, 0.8658282479507906, 0.025105474226054206, 0.3659726260428694, 0.45643103388563105, 0.030928666666666667, 0.4214798, 0.25471442863956656, 0.9999791333138578, 0.00275662775318689, 0.9054658748535891, 0.12707124711639128, 0.99973765406019, 0.8510930371143474, 0.32440782193612927, 0.5801792970922963, 0.9991339625962908, 0.3226683309160158, 0.22619241509035218], 'oldestBlock': '0xd0ff16'}}), + (('0x400', '0xd0ff14', []), {'jsonrpc': '2.0', 'id': 0, 'result': {'baseFeePerGas': ['0x1c3951214c', '0x1d43ae1772', '0x1b87b4cdf8', '0x1d74085c39', '0x1b0894ecfb', '0x1aab5b2e3e', '0x1e0009d939', '0x1cef2a1acc', '0x1a27b55ada', '0x1aba6fb66d', '0x17d59d3bde', '0x186987490a', '0x15c383c2e4', '0x16065cc0f3', '0x15732616fd', '0x131c863d38', '0x154ecad4fd', '0x169d6dd2d5', '0x159d9ef0c3', '0x163699c876', '0x14cb255d5a', '0x12a8134d61', '0x14ef87347b', '0x176b51f0ca', '0x155270d027', '0x136788c588', '0x1218d3ac0b', '0x11dca96b38', '0x1078bfdc95', '0x11f060006d', '0xfd0b346e2', '0xe523594ed', '0x101c2283d2', '0x11ec11f82c', '0x10e08e6058', '0x11fec5aa65', '0x1021ee519f', '0x107cf58740', '0xea0aefd68', '0x1043031ea6', '0x10b3d89037', '0x12ca2f4d73', '0x14f5490161', '0x130fd73e1f', '0x147a16b3cf', '0x12dfd25c59', '0x12ef1fbd2a', '0x10bd0aa81c', '0xf62f097e9', '0x114ead5ed6', '0x1372fe2107', '0x1356fa6cd5', '0x1162127104', '0xfcba148b5', '0x10198f5167', '0xe5f452be4', '0x102aaaa967', '0xf8c320f88', '0x117bb389e9', '0x10d8e960d9', '0xf88a7b5e7', '0x10a2e2d897', '0xef16b17b0', '0xfd0a53cff', '0xef78e41ed', '0xe03987ad4', '0xf62a9328c', '0xd76540c3b', '0xc3965936c', '0xda5c8a708', '0xf5a123d10', '0x11384b01f6', '0xf8ff2d485', '0xe16becd2b', '0xfd99359c9', '0x1165ec9013', '0x106e3a5c2c', '0xf47dd1de1', '0xe04f2457f', '0xfc5640687', '0x11bd71c36e', '0x13f475b542', '0x127b9e3c73', '0x10437c95c0', '0xe99827de0', '0x106c2f1b11', '0x12790b1843', '0x1354a3d552', '0x11cf1e1003', '0x11e448c006', '0xfe4f2ed81', '0xe764aed18', '0xd8543ff70', '0xf083b6d59', '0x10e8a31f41', '0x1305402ddc', '0x12c3b23ec3', '0x117e233d71', '0x120d5fc558', '0x107d8a84de', '0x12616bbde3', '0x10ffed1181', '0xf1aabcf6f', '0xd37565582', '0xeddcfae5c', '0xfa68a4d42', '0x119ad59dc9', '0x1098fb65fc', '0xf6fdd7410', '0xfe01b7a9a', '0x1165ea706f', '0x1162b0dff6', '0xf5602261d', '0x114057ce45', '0x133a5d9f7b', '0x145509e235', '0x12439e22f6', '0x148bfb3384', '0x13043f8a3e', '0x11ca38db28', '0x132333d603', '0x1494be5b75', '0x14b73b33cf', '0x1411655d05', '0x130fa2fdfc', '0x15466989bc', '0x17ef123f40', '0x1672d1a39e', '0x1702849fbb', '0x1455346988', '0x1386882b1c', '0x11c3e4df0c', '0x1124f72ca6', '0x133c4fdb99', '0x1286a9a281', '0x126e0e270a', '0x11f357badf', '0x1271a0cd3a', '0x10f2523ab5', '0xfd12b0a8c', '0xfb7f8bb9f', '0xe36722a58', '0xf57aec005', '0xe282aee94', '0xd1d944d2c', '0xe8d27cb0e', '0xeab295e6f', '0xd101fb777', '0xeb1f2c8ae', '0xd3e1d9488', '0xb9659e1f7', '0xd03e34787', '0xea404dce5', '0xf56cbfc1b', '0xef6c4ea79', '0x10d4f7aa43', '0x117c36f8d7', '0x1184510fb4', '0xf595cd717', '0x10703792ac', '0x127d7cc439', '0x10d00b7eeb', '0x12bcd4fe08', '0x1198cd3787', '0x1278d07d74', '0x10d616f023', '0xebb54121f', '0xe5574b09d', '0x101fccf46d', '0x116b20c359', '0x11cdb230c0', '0x1022489442', '0x10ef09a72b', '0xffaa89245', '0xe9aaa373f', '0xf2bbea97e', '0xea3575ac5', '0xe3c503b98', '0xdfcfd7e8d', '0xf90b12b0a', '0x118240126a', '0x1184266ebe', '0x11a6d1e228', '0x109c986e82', '0x1240f92d8b', '0x10f2e3d58d', '0xf825eae01', '0x117201afe4', '0x10cf41ea7b', '0x124464f541', '0x1096837e90', '0x12a9373f46', '0x14fe1960c8', '0x17574ec97e', '0x1527c383f7', '0x1723d4b433', '0x157ae07c50', '0x17e7f3541f', '0x18efd43979', '0x16a9989f4c', '0x17841d33d7', '0x1917f4f3c5', '0x196140c2c2', '0x168091501d', '0x15f30a108b', '0x13c4e7f606', '0x163d3c16ff', '0x18dde3804c', '0x18d31ef0cb', '0x1621256200', '0x18e4f32293', '0x1c015e7e4c', '0x1d1525a69e', '0x1c9280134c', '0x1d8b65a48d', '0x1a44a0dd70', '0x1a291a40e4', '0x17d00b207e', '0x1a9f698c65', '0x17d8ee1616', '0x1628f62ebb', '0x15aea68531', '0x14256044de', '0x167addb64e', '0x15306fda28', '0x153c853a9a', '0x13947cce87', '0x15dedc6b95', '0x14995b5ede', '0x147f5cd440', '0x129425171b', '0x1126e3c541', '0x134b9b0210', '0x120ea68655', '0x1156d3342b', '0x10fbcf7a3d', '0xfdaebb0a4', '0x105a3e9156', '0xe961b3a39', '0x1044a70683', '0x10dc45269c', '0xf743deb20', '0x116219aaff', '0x132f9799b8', '0x11821713f8', '0x114353fb38', '0x136b6b48ea', '0x1478288f32', '0x124be87d94', '0x1161785fa0', '0xfcec1eb6d', '0x11c74bc2d2', '0x1400180bb3', '0x142e88c202', '0x12bb1add61', '0x1512672728', '0x1547face77', '0x15a7867687', '0x148c74a94d', '0x12fe6d6a71', '0x14ca6cd7d3', '0x17630485b7', '0x15df30e458', '0x187c992736', '0x168b8f10f9', '0x147810af04', '0x17062c8a98', '0x1659f91677', '0x13c9d6c76e', '0x137058dab7', '0x118597e244', '0x1278a80f11', '0x14bfc17ff0', '0x13ce5fc3e6', '0x1647cc57aa', '0x18d54def34', '0x1665146ee2', '0x1476b2c3a2', '0x170565d356', '0x16aab8c387', '0x13f5828616', '0x13774e36ef', '0x15e6339f3c', '0x14e2c061f9', '0x12fc3f336a', '0x142e702329', '0x159d81651d', '0x13b54145c9', '0x123dc6a4bd', '0x144821fa64', '0x142d7fe7e7', '0x12d79f8a9b', '0x10ee4a0ae9', '0x130bfc5921', '0x120e503529', '0x119563014c', '0xf62b6a123', '0x11239e6fcc', '0xfd30829c7', '0xe88e03c49', '0x1026df52d2', '0x122b9a87cc', '0x147059cb1c', '0x12b9066d0a', '0x10a6ecffd5', '0xf62d576ce', '0x114efa9436', '0x1378219785', '0x15e7243dd2', '0x138308eeaa', '0x15f2c530e3', '0x18b0cedcf8', '0x16ef8aa2e2', '0x15a3748cca', '0x13f1674bc9', '0x15675264a9', '0x13185df4d0', '0x10c083184d', '0x1282dc4427', '0x14d26c2ea9', '0x1647d53b57', '0x1672c11d69', '0x1639d5e93e', '0x183d4182fe', '0x16bef1ba5f', '0x155e17f711', '0x13bcac532c', '0x148d3769bc', '0x121728d2a4', '0x14596b3927', '0x16e450989f', '0x15288e9895', '0x1361322711', '0x11ba4ce241', '0x13f18555ea', '0x1437312237', '0x125b34b606', '0x10faddfe1a', '0x131a31cb5f', '0x10ec8a67b8', '0x13099c9e29', '0x13ee4beb43', '0x141dd2da46', '0x11fb195b1f', '0x1045513378', '0x124dd46472', '0x142b16de19', '0x12d4a5d660', '0x1238bd6efb', '0x10f9d2165f', '0x10c424a852', '0x10b79dd4a2', '0x125fd4d9d4', '0x10656aab1a', '0xf17fe231f', '0xf0af58078', '0xeb35bd55a', '0xe52438aec', '0xcfb93a386', '0xe9af5d3a5', '0x106e452b21', '0xeca9abf2d', '0x105e6bc2e3', '0x1269f55293', '0x11d871d932', '0x12e34d390b', '0x10a8ba82fa', '0xfe76e3fbd', '0xf0265c338', '0xf503f6aaa', '0xe1aece137', '0xf0eadbf2a', '0x10ef556608', '0x130d3a733c', '0x1326c35f37', '0x1120abdd41', '0x12f4ab67aa', '0x1502a90d88', '0x1380260806', '0x136a34949d', '0x12326af1a0', '0x11a826070c', '0x11019befc1', '0x123fc3e662', '0x1151cd04a4', '0x137bc695b3', '0x15e9d87d66', '0x13752d507d', '0x110687a66e', '0x13275741bf', '0x158c0ad94e', '0x13deac0ad7', '0x14277e41f5', '0x11cbd710d7', '0x119b24c7b6', '0xfe3bfd463', '0x11dfd9e57f', '0x10722dd75a', '0x127fbad3c5', '0x14751e8775', '0x136b8f143f', '0x113be89551', '0xf146b82a7', '0x10f6da3076', '0xf23bdfbca', '0xf9141350d', '0xec2922344', '0x109a8686f2', '0x1025fedd9e', '0xe99baf659', '0xe0a747c2e', '0xe1613e15e', '0xfd74e1faf', '0xf3d5e1245', '0xdffb4f3d8', '0xc3fbe555d', '0xdc77c94d0', '0xf45a61601', '0x1112f39994', '0x1123488f8f', '0x110e0d4ec8', '0x115784bfec', '0x13823e0fb3', '0x12d1e02e6d', '0x124bf0b42d', '0x10aabc8625', '0x122d9c7ee7', '0x129a7492ae', '0x14ecfb2598', '0x175ed89d9f', '0x15bc858000', '0x1468dbb26e', '0x13326bba9e', '0x11c85aa550', '0x12c7b5bd46', '0x1093030b03', '0x112742f634', '0x10fcd9254b', '0x114e7dea24', '0xfcad9a735', '0x10fdabe040', '0xf1e0539d0', '0xef9190028', '0xeb1cb0275', '0x102d488d47', '0xe8028e649', '0xe0de3c12b', '0xdd72fee6e', '0xc87e474b7', '0xe09f57c52', '0xd711fb101', '0xf0fde400e', '0x10f13fc434', '0x12ca26dbd8', '0x13da38b6df', '0x11c413637a', '0xffa4c6090', '0x11f8dfdb58', '0x1205bf4f4f', '0x1275aa3b93', '0x11dcb8198c', '0x1417c39313', '0x15f3b49eae', '0x1390e368f4', '0x111ec6fbd6', '0x1341e1dfac', '0x158981551f', '0x16e0fcf0e8', '0x1558bae250', '0x1402e97414', '0x13296b9a58', '0x13aefb51b5', '0x138213918d', '0x133258098c', '0x145cfc7ce6', '0x1279b23f07', '0x1338e11a56', '0x121df3bb96', '0x1271211416', '0x11045e6325', '0x12e20eb99a', '0x11058cec21', '0x1325b068ec', '0x11c0e4a80a', '0x103582fdac', '0x123b54b1b8', '0x104fd69d68', '0xff8a59fe2', '0x11c51151cc', '0x111a2f23a2', '0x133cc8ad97', '0x12796acdc9', '0x123b9b51ad', '0x109c22b827', '0x12af2f2c82', '0x10927ebfaa', '0xe802ee7b5', '0x104fa1c130', '0x125926df75', '0x11c22a6c3f', '0x13fa3d009e', '0x1679395944', '0x148fd9dd04', '0x121b85b804', '0x145e9a5880', '0x142d55ea3b', '0x129af0844c', '0x11be999312', '0x12220597ed', '0x13b97369bb', '0x11bb5f77cc', '0x11d6fb2d87', '0x105de8de53', '0x125f2c38ce', '0x142a9d4db9', '0x16af8aecc2', '0x1450ef4fa2', '0x138f8f0e11', '0x13065c2745', '0x1566dc4031', '0x17e71c903e', '0x162c39e9b2', '0x14ff8da151', '0x14c896563e', '0x1441d509d4', '0x124c2fe23d', '0x1495387539', '0x165dc560f3', '0x146511dff3', '0x1463a90449', '0x1370daa6bc', '0x134e4c39c5', '0x12cf39dc7e', '0x13a827b8f6', '0x1543aec11d', '0x1414dd6ddb', '0x1696e7e208', '0x142f8819af', '0x165aebf484', '0x1478e747c4', '0x13bb2c8943', '0x127e5c11a9', '0x129b2e2a2e', '0x13106a0a61', '0x146d32384b', '0x16d9cd66d7', '0x19b4c89bb1', '0x1779cb91f7', '0x16ed91a755', '0x14a3b7d623', '0x1736b377fc', '0x1548f6c758', '0x12d431f4a5', '0x152e9adf57', '0x17d37747bb', '0x16bdc9e60a', '0x199527b9df', '0x1cc44a81d1', '0x19ad2658ae', '0x17f6b46f20', '0x1a7ae6c447', '0x175bd659f3', '0x16885dc5f1', '0x1958a05f07', '0x1a3ffbb401', '0x18374ea5bd', '0x172e927fe5', '0x14a6f6719c', '0x1722851dd4', '0x19d39a1517', '0x18c6fd6aee', '0x1a8fcc8713', '0x185a1bb126', '0x154ed83b02', '0x14fc802044', '0x155de33bb2', '0x1809220c70', '0x172a60b9b8', '0x172e3d1025', '0x15353b2e60', '0x141243903a', '0x16645067a0', '0x17bc889b73', '0x1865527677', '0x179390e776', '0x14cac38001', '0x1535decbd3', '0x17dc1ac2d3', '0x16e13ab0b9', '0x19bd3419cd', '0x169937c23f', '0x196bc2fa9d', '0x1b94a17c60', '0x18c8e9ca3b', '0x1be1333ee4', '0x19bf123609', '0x16b6c0b472', '0x152d31700f', '0x17c8394634', '0x1596675759', '0x1848b80335', '0x1b50c7dfff', '0x1882926762', '0x1b86a93685', '0x1856e42196', '0x1619a7b2d0', '0x14f934448c', '0x14e69e84e7', '0x161d3780d8', '0x13c9ae4786', '0x16425a9d52', '0x15082092b6', '0x1518df1b2c', '0x15d1dee679', '0x14997246ae', '0x154018aec5', '0x1424fb1bee', '0x12a323b1aa', '0x128a42465e', '0x11baa7e021', '0x13f1563967', '0x165f6da34d', '0x14219ad0f8', '0x122ecd1ff5', '0xffe8885b7', '0x11fdc9c1f9', '0x1076f15c78', '0x101adf5fbf', '0x121ded5b2a', '0x14615ea1d5', '0x13adcbbece', '0x14a42e7a49', '0x17389f436c', '0x1a1f48cefb', '0x1bc7f992b9', '0x18e88e3ea3', '0x187e6ac42d', '0x16151576e4', '0x188f3f555a', '0x19ec1d4499', '0x173857f799', '0x19dd1e5ad7', '0x1d13881954', '0x1a94069ea6', '0x185175aad3', '0x16592b44cd', '0x14d7c5e357', '0x1587e7707e', '0x150d5ac0dc', '0x13da2f42ca', '0x165566f2d5', '0x16f19ffaa9', '0x1421b2d259', '0x16125338cf', '0x13e4f2c08a', '0x140e14e4d5', '0x11ccf27a6a', '0x1405fea0e4', '0x14444250e7', '0x1500b972d0', '0x1344245b39', '0x15ac5c92ef', '0x174de0d997', '0x14b58a0edd', '0x121ed8cd02', '0x1419189e6a', '0x169c02ea8b', '0x15e56fecf3', '0x13a07a464d', '0x12ab7ec844', '0x13dede944d', '0x1284745e3e', '0x11dc2936dd', '0x11968bc078', '0x1375ef82c0', '0x11f551e50a', '0x1010498b07', '0x11c14a08bb', '0x11e3220dca', '0x10350a6c99', '0x10030bb9bb', '0xf0e0034bd', '0x10efad87a1', '0x1219a86c25', '0x10e7bd72f7', '0x10e8e451c0', '0xecbc7c788', '0x10524713a9', '0x125bde9433', '0x12c00c2f50', '0x12748529bc', '0x113c812770', '0x1205ac462c', '0x10c159ffe5', '0xfba5fb76d', '0xf9ed74a4e', '0xdce736a71', '0xf8817acb8', '0x11786e0b3b', '0x1047b2dd45', '0x103b1b8ab0', '0xfbed90349', '0xe98398174', '0x106b0c4775', '0x12783e73f4', '0x136b43358d', '0x12ea92f3b4', '0x1260af6aff', '0x10bc67e6cd', '0x12d34e1caa', '0x128a3dcb7d', '0x10e11255a7', '0x12fce383c3', '0x127cd91b18', '0x13ba002afe', '0x11f8b6f28d', '0x108d91b9f3', '0x1287256903', '0x14d804a854', '0x15eea5eb2a', '0x1545893851', '0x145d1c3382', '0x1409a531f5', '0x147deeacb2', '0x11ee30d71c', '0x133ed8a80c', '0x11ad3b59b2', '0x13933a3ed1', '0x142e156c14', '0x11a852be92', '0x126bb67f75', '0x107040743c', '0x113a09559f', '0x1360ef79a2', '0x15c679b8b2', '0x150b7f7061', '0x135b8438b5', '0x143f20c5fc', '0x12feb9e94e', '0x111ec2a1cf', '0x103682a957', '0x123cdbd04b', '0x124372acbd', '0xffb045726', '0x11fa5c814f', '0x143911ed52', '0x12b7801cea', '0x1119a7b35c', '0x125546a201', '0x1279f97113', '0x11a272593b', '0x1015f2937b', '0x1218847fba', '0x114caa3360', '0xfd54cfa99', '0xefa02945d', '0x10d91baca5', '0x12f3da2ca1', '0x1517e7b7df', '0x17baaac2f0', '0x16030ba686', '0x172a7199ac', '0x16208f73c1', '0x164a4b7423', '0x139a0ebdb2', '0x159d33c1a6', '0x17a1d48041', '0x16aa090da7', '0x153146224f', '0x16ba077d3f', '0x1404fd2fb6', '0x15388b6388', '0x17df552762', '0x1ab4f99b8c', '0x1a26ddbc3a', '0x186f7b707f', '0x16ec4ba0c8', '0x1943df1fce', '0x16b9edaf6d', '0x145d0cc95d', '0x15959beead', '0x182480f34c', '0x164afe1e70', '0x141136c8ec', '0x14a911dcfc', '0x154a1feead', '0x12d6c6bedf', '0x15319f1045', '0x17d2e62c07', '0x17b3a5d299', '0x1809a91d54', '0x186297d807', '0x1594a058fd', '0x149f062782', '0x170cfaedcd', '0x18f5f9c2ac', '0x186b31ac9a', '0x15e1d133a6', '0x14c5657cc9', '0x127c787d84', '0x1354f63784', '0x12183a043a', '0x10bba0b91f', '0x12d2c32767', '0x1336c36bd4', '0x12ba668f6d', '0x10cc24191e', '0xf8ccc9f7a', '0x117dd2c1d5', '0x12c329dbb8', '0x151b8dd6d7', '0x17be9e2a8e', '0x162a60ea5e', '0x16e25cc0fa', '0x150bf375ef', '0x17acc962a2', '0x17b962a425', '0x1a81655448', '0x183a218082', '0x18c37998bb', '0x16ca4663bf', '0x1556d0e4ca', '0x1458f3dbdd', '0x16e3e7afa8', '0x19c01c7843', '0x17e5ffd801', '0x171c7d89df', '0x19ff1d148f', '0x16bf3971fe', '0x199658ffa9', '0x1a3953abb0', '0x17c6b6615a', '0x19e2fb53af', '0x172306f3f0', '0x155afd9a6f', '0x18058e8828', '0x1b05e0fc11', '0x1a14635a3a', '0x16fea534ac', '0x19ae5c5f34', '0x1988557a4b', '0x1985929359', '0x19ed7a6796', '0x1755c715c9', '0x1833236532', '0x1638710369', '0x1468f23da0', '0x141dd5da3f', '0x150da0a953', '0x137e0c1228', '0x126a17ffb1', '0x14b6ab3ca8', '0x13adafa95c', '0x1149cf6ba8', '0xf20957e33', '0x11042fa675', '0xee3a9b1a7', '0xfa5343cb5', '0xdfaca78b4', '0xd886c2f98', '0xf073292cb', '0xd54fa32a7', '0xeff2e3fd5', '0x10df0baf43', '0x12fab79be1', '0x155995d089', '0x1477ec3445', '0x145fcd4bc3', '0x124dff4c1d', '0x1497b0581b', '0x125a3f9b21', '0x101db5cb6f', '0xe270cc015', '0xc622b2813', '0xdee1fa365', '0xfab7bd8af', '0x11a0db4e95', '0x13d481dcd4', '0x11f00f540b', '0x1117e16fb8', '0x1316e95524', '0x118a27bb85', '0x12b6b5c723', '0x1093d7ba6e', '0xe815cc321', '0x1051287d18', '0xe47036d75', '0x100fbfcc10', '0xe0dc7d28e', '0xfcf655693', '0x106e23d5ad', '0x127bbf4450', '0x14c9525221', '0x128a7a381d', '0x1183de07cf', '0x137d4940ce', '0x1289ff26e4', '0x10b52837cc', '0x12cba89e71', '0x11b80908bd', '0x12f67ceee8', '0x1444c89759', '0x14e4075c67', '0x12b283f7a7', '0x1365e2ec30', '0x116756d97d', '0x13941b2557', '0x160601f1b4', '0x15088495f9', '0x177c22044f', '0x18a4d25551', '0x16637c98b7', '0x192f8483ad', '0x1c52f82ce7', '0x1bf5aa3427', '0x19f888d9f9', '0x184c24ddaf', '0x17657717a4', '0x16379622bc', '0x15995f11d5', '0x142ac97959', '0x1473c362da', '0x13ff25d1d3', '0x122a751747', '0x14592d04e4', '0x12426e7a5c', '0x133d738c79', '0x11475c44dd', '0x11f666e4d4', '0xfd560c510', '0xe2e7c7937', '0xff3d11772', '0x11a1bfd8c7', '0x10622158e2', '0x11cace63b1', '0x11d1d85938', '0xf979d4e11', '0x1149b89e0f', '0x1256681439', '0x12aba89644', '0x11a308d1b9', '0x109698bfd4', '0x11ae9c6bcc', '0x13ade52c80', '0x15156d9f12', '0x161c8a8f29', '0x15ee8ca411', '0x186a0bf138', '0x18aac4fd2e', '0x16c86c8be8', '0x186b011ce0', '0x18547165a4', '0x1aa8ee6c19', '0x1c0d6ab08d', '0x1c1b9bd6cb', '0x1bb633fb7a', '0x187736540c', '0x160b90e674', '0x16d31cad29', '0x16863ae622', '0x1956de2833', '0x188e8b298d', '0x15cbd4a9ff', '0x15f435025d', '0x1410c1ec61', '0x1692ca67d3', '0x16c9571530', '0x168294ade8', '0x1952caf0a3', '0x1890b694d5', '0x1983e21b7b', '0x1728e5ca2b', '0x164e000166', '0x191521ab80', '0x18cc54e692', '0x1894557648', '0x169207ba46', '0x174a91c5de', '0x183d53e3bb', '0x16c2ce612e', '0x199688cc5e', '0x183315daac', '0x166ed75af3', '0x17091a3f00', '0x1791670563', '0x149f3a24b7', '0x17324393aa', '0x1a17a803b8', '0x1bb71966e7', '0x1b0cab8b29', '0x18ad869660', '0x198fa283a8', '0x17713dc9c0', '0x1a5eabb4ee', '0x178bd6549c', '0x194b608075', '0x1727789f03', '0x16ee3358d4', '0x15c6a18792', '0x174a3611c5', '0x14d6d6bbf9', '0x12ed80dec6', '0x154a9fe4cd', '0x143c71acb3', '0x11f7c6fd9e', '0x1435fe1001', '0x15c1b4edd2', '0x14c1f8c00b', '0x16f7b83703', '0x1491d5b498', '0x12dc4e0389', '0x11294e4685', '0x1156c4ee20', '0x13813f8975', '0x15f095b3ed', '0x18adf0bb1c', '0x163d2f0182', '0x16d258e3f4', '0x14f36c5f7b', '0x130f6304ed', '0x1570980889', '0x181dce1a16', '0x15f82a1ec4', '0x1772c7bfcb', '0x1a60e82119'], 'gasUsedRatio': [0.6474610091847197, 0.2629510116945331, 0.7794250331593805, 0.17138024761952794, 0.4461169041215822, 0.9995680756721574, 0.35787882528688036, 0.11580112673308905, 0.5876549280036185, 0.06692491060190699, 0.5969673, 0.06603844679004285, 0.547992407768301, 0.3955629151908009, 0.0639350236077123, 0.9596955666666667, 0.7453891057951423, 0.3232584683745705, 0.6105821, 0.24434303430633347, 0.08891184965105968, 0.9886461431109856, 0.9745133666666667, 0.14180100201179785, 0.14025886424160663, 0.23048404945940995, 0.44805326969943676, 0.18866069166787744, 0.8563176333333333, 0.026454433333333333, 0.12210984025901292, 0.9996174329762708, 0.9499710667196474, 0.2667742434307536, 0.7649806767807116, 0.08596502302329784, 0.588164343264675, 0.04865656822299931, 0.9468507164300853, 0.6084155021423506, 0.9998672367711235, 0.9616041912118751, 0.13808493333333333, 0.7969341604589785, 0.1869439, 0.5126679, 0.036151866666666664, 0.1769209299547675, 0.9993601660694883, 0.9950172609940828, 0.47749386666666666, 0.0953073, 0.13466476681145806, 0.5770889719497072, 0.0707551, 0.999442977266033, 0.3468385, 0.9979712522611663, 0.35451246421163324, 0.18813966064230048, 0.7838878299239492, 0.09288153886824406, 0.7334146099201433, 0.28551861789979655, 0.24531485735262937, 0.891421263884277, 0, 0.1321516672158722, 0.9657600404482278, 0.9995013666666667, 0.9867308426678651, 0.11495804062750459, 0.121277, 0.9999857, 0.890724407615963, 0.27754796829636935, 0.2200682093390219, 0.16980713900271027, 0.9998061326147859, 0.9993855666783895, 0.9994141601476217, 0.20492734729415066, 0.0197148741000353, 0.09074980679730806, 0.9994493935738538, 0.9993685636778681, 0.6857429666666667, 0.18514779682359825, 0.5185709173328562, 0.053446707259899404, 0.13955678773978913, 0.2395915615890414, 0.9471965619379383, 0.9993514333493313, 0.9995692452161862, 0.44614822542754456, 0.2289099096689645, 0.6279428724298555, 0.1539271601553881, 0.9584863830560463, 0.19949992930971142, 0.05398606588616016, 0, 0.999476087403916, 0.710971013661661, 0.9994774882694282, 0.27114543035263533, 0.2202935, 0.6136094333333333, 0.8836595602272286, 0.4971037972968775, 0.028448473152608466, 0.9995756992079718, 0.9583182866677328, 0.7297049098404143, 0.09314738590168019, 0.9999241330500968, 0.20210307483739143, 0.24198019820498265, 0.8029983019338575, 0.8017152829960942, 0.526182846613651, 0.37491753566800684, 0.2993074583858629, 0.9646047287512298, 0.9998953347539568, 0.25175586666666666, 0.6000199471882374, 0.0346329, 0.34117986666666666, 0.13938380828879401, 0.3602179360924482, 0.98790214141316, 0.3524469406232686, 0.4792459598424723, 0.3959634165525271, 0.609924717009789, 0.1752756299476182, 0.23339633948179916, 0.47510942291215963, 0.116771, 0.8179782109436802, 0.1908967, 0.20576593333333335, 0.9379060986386539, 0.5322200300720281, 0.062162433333333336, 0.9997715333333334, 0.10463803333333334, 0, 0.9929108774718512, 0.9995740662691285, 0.6907971333333334, 0.40218223094852124, 0.9993234660352349, 0.6552551, 0.5072399666666667, 0.004982334750116511, 0.7838673333333334, 0.9992806, 0.1371026807677697, 0.9579757941107412, 0.2564806333333333, 0.6989102333333334, 0.1458099, 0, 0.39195043960427356, 0.9996324329902708, 0.8210691403467463, 0.5884191492651816, 0.1248871896263304, 0.6982955118372836, 0.27450786666666666, 0.15580741260507552, 0.6552210448729752, 0.3595133670153664, 0.3900256868330516, 0.4304964310414643, 0.9509387609931561, 0.999469680640574, 0.5016954230527602, 0.5309264666666667, 0.2643416296013057, 0.8954083300875529, 0.2140292923957449, 0.1602632132862207, 0.9993355621723178, 0.3542329906921543, 0.8468412978635466, 0.13229728822134026, 0.9998944574763254, 0.9997750553292947, 0.9474860411770025, 0.12542914392981333, 0.8752505669485424, 0.21305461833176995, 0.9517821490896691, 0.6724710025346168, 0.13518269608318112, 0.6506605102047789, 0.7683289835178585, 0.5456392219077358, 0.0464635, 0.40172613333333335, 0.10268423782490269, 0.9997750331233642, 0.9725987504386371, 0.49323405403690085, 0.06572039864735661, 0.9997602649069438, 0.999874877463329, 0.6538645397888332, 0.4298083411167968, 0.636111415781079, 0.05640638267997673, 0.48362685658424237, 0.1410035035871651, 0.9720234284223755, 0.0830143545778523, 0.2169707870188085, 0.41375849987630464, 0.21659219315195807, 0.9634062021516304, 0.2703306128335886, 0.5089104030596776, 0.18801154712792773, 0.9679301342187959, 0.26744977285776406, 0.480282522706618, 0.12555076022954348, 0.19281410538842736, 0.9998675034425415, 0.24333575990045553, 0.3409350020939652, 0.4179832, 0.23422043333333334, 0.6254754666666666, 0.0679774, 0.9612038488917761, 0.6456233665196708, 0.16635243729570864, 0.9993206987093275, 0.9148148548539892, 0.15021359227184478, 0.4439885461161631, 0.9997058249171304, 0.7162274549960777, 0.07539430989055448, 0.2997928663350326, 0.13796794525399764, 0.9987088149771847, 0.99989980383595, 0.5362808046204361, 0.2124344762375716, 0.9999247926500998, 0.5397276749913382, 0.5701511666666667, 0.2957476333333333, 0.19734309446825174, 0.8784099495722009, 0.9994659210118556, 0.24088823333333334, 0.9782171043309541, 0.18283856666666667, 0.1316463526633758, 0.999313499359266, 0.38313815651910516, 0.041323233333333334, 0.4293369475292623, 0.10553089849550526, 0.7167500625306639, 0.9932474, 0.31822824988601367, 0.9997060330589642, 0.958295436569551, 0.10723943862363196, 0.15506740867898192, 0.9998947610367485, 0.43845586110664375, 0.022147083420680884, 0.40120043895967594, 0.999986299935153, 0.31488346666666667, 0.13603723333333334, 0.7519963577767023, 0.7841937985744039, 0.14705882549595148, 0.2023111640066595, 0.9474362634644058, 0.47948196160434664, 0.23526168002773915, 0.09421873361974525, 0.9999172666666667, 0.29190059240485, 0.39535406666666667, 0, 0.9558904921644593, 0.19314836666666665, 0.17400308598653416, 0.9450526666666667, 0.9998764, 0.9993951572955675, 0.16414663333333335, 0.05760772060583827, 0.19589718283737065, 0.9997875, 0.9993500346911242, 0.999995109555765, 0.06333781185327673, 0.9994843071481396, 0.9997803439071923, 0.21569045784691895, 0.2737655194314309, 0.1865744, 0.7929589, 0.06859271920969173, 0.009157208851968556, 0.9200508857391138, 0.9993285987243375, 0.7802106914738713, 0.5301000352834333, 0.4603819747505845, 0.8623446102428522, 0.2535562278368151, 0.2576135911691814, 0.19476173601406785, 0.6650954313774802, 0.02097998767859452, 0.9994510607426204, 0.9997839550866816, 0.19710990911399098, 0.16372652899215337, 0.15903738080902313, 0.999940924076649, 0.5545849, 0.1321017359881409, 0.20008656008367476, 0.9999714333333334, 0.04385956219581755, 0.9995416662388885, 0.6876922333333333, 0.5372593666666666, 0.07534499228170358, 0.11957641559053507, 0.9998538571502358, 0.9074067289218086, 0.23470028303863333, 0.3706332849679789, 0.22652767561748002, 0.4505939477950094, 0.488325955545086, 0.8964980399739906, 0.06935976042090902, 0.18225793887025157, 0.48650749852043634, 0.4090094, 0.3967997416143531, 0.1261184249066461, 0.9999235252484795, 0.9999356665444331, 0.10091416775506488, 0.926573660713913, 0.9997467519773282, 0.37652536412971704, 0.7336522993490519, 0.027993799170649408, 0.3187008532338882, 0.2749850908257278, 0.5810433705363903, 0.18438483294441732, 0.7700176444596296, 0.9987755686830662, 0.9999796999424831, 0.5209421, 0.07730625622587123, 0.9269402825609111, 0.9335682096268412, 0.21255905617106063, 0.482417857115369, 0.24907463253001597, 0.3812736626944495, 0.3526248156569606, 0.7923148107962811, 0.2962531333333333, 0.9997742128521835, 0.9988756322839235, 0.05173907149311308, 0, 0.9999951285672859, 0.9998237328397853, 0.18863883401014614, 0.5572642804533137, 0.03200589906158952, 0.4572448157173005, 0.1100463, 0.9996392666666667, 0.18034616666666667, 0.9993143362173504, 0.9234949593784607, 0.2971706666666667, 0.0497184, 0, 0.9998754998837999, 0.069766458728977, 0.6130236109774072, 0.2925514029842714, 0.9996118, 0.39033833333333334, 0.11657893333333333, 0.34667133333333333, 0.5129339466655856, 0.9983004317470696, 0.34816164510442427, 0.17430843333333335, 0, 0.9997132666666667, 0.9333534196142533, 0.9719634071658467, 0.5149458333333333, 0.4806427142771583, 0.5673070961532898, 0.9998054333333334, 0.3587439666666667, 0.38880123333333333, 0.1437155, 0.8626892506134426, 0.5935566333333333, 0.9993438333333333, 0.9673267333333333, 0.22031727315056485, 0.2558364765246078, 0.2623381429650778, 0.20530262268877786, 0.7243725594454948, 0.03017295695211921, 0.6397588918667312, 0.46136568652294213, 0.5750944651041416, 0.15002382660165595, 0.8035691823196375, 0.05890830707222249, 0.46183713182545, 0.425590570603804, 0.9035207666666667, 0.08551627330755149, 0.37686941841145716, 0.43918386666666664, 0.12147658855539101, 0.9813958493027927, 0.32989772943841755, 0.9821034, 0.9993748437983643, 0.9361314382603904, 0.7262462892033392, 0.0795966, 0.09738806611322623, 0.9993044993508661, 0.5111916666666667, 0.5970297333333333, 0.3705402666666667, 0.9995231656287635, 0.8701114978036749, 0.06523186414213387, 0, 0.999322660112876, 0.973539, 0.749193787733722, 0.23210938330209108, 0.24980056666666667, 0.33018126666666664, 0.6089092333333334, 0.46435367469667466, 0.4361383070624199, 0.7430781333333333, 0.12916456666666667, 0.6616873666666667, 0.2700189666666667, 0.5717360663978291, 0.19095485125635622, 0.93861192853975, 0.10570841873206435, 0.9994903346597757, 0.2088383986700762, 0.1520213, 0.9991615333333334, 0.07878066265041146, 0.4164801303130464, 0.9504381883144711, 0.3497419311763359, 0.9993848994769697, 0.3413195784494582, 0.44772253333333334, 0.1439536373935815, 0.9995594662555018, 0.04784166203519527, 0, 0.999381169799208, 0.9995842321553244, 0.37142324716672526, 0.9998256326765498, 0.9997700078797243, 0.15975738419303903, 0.02253307612095655, 0.9996895649178824, 0.4622082, 0.18838726666666666, 0.3149549201461894, 0.587546296206615, 0.8510789012566817, 0.09593394894116966, 0.5243278023217917, 0.1697411142664904, 0.9899992058889673, 0.8907504280117201, 0.9996911305486101, 0.08219308904728816, 0.35127596666666666, 0.3904065987103073, 0.9997580331074976, 0.9674338354118593, 0.210490421125792, 0.28811769110931323, 0.4590992875753012, 0.39869157984171716, 0.11306488701717989, 0.9995816666666667, 0.8465791333333333, 0.14741783333333333, 0.49892006666666666, 0.31392955220773083, 0.4722263506515619, 0.3971557424729709, 0.6802026691461758, 0.8271182661255274, 0.27749057242127206, 0.9995586077801372, 0.07434952398627687, 0.9299073958024339, 0.1630963734383101, 0.3551933103751917, 0.24911627479048418, 0.524350212534631, 0.5984500956333654, 0.7858625540322564, 0.9747239277435648, 0.9998331440449307, 0.1529358990745773, 0.40666819594951364, 0.10075375048328043, 0.9988781948723753, 0.16766823735947073, 0.03843054022963396, 0.9999049323319539, 0.9992883873940569, 0.3179006, 0.9997546666666667, 0.9978570740995248, 0.07028246271939244, 0.23319033705310876, 0.9200343003857958, 0.02849934140584778, 0.35854397202479255, 0.9994552084647487, 0.6426229309801685, 0.19007302969759476, 0.32918415865885187, 0.06350040796821695, 0.9808486926400617, 0.9653977695494426, 0.33749052361812487, 0.7880717324064836, 0.16723088193120342, 0, 0.43961758157429776, 0.5725078666666666, 0.9996412163143977, 0.35519235916457986, 0.5026040120015979, 0.15959753263448623, 0.2856291173248508, 0.9624520429791189, 0.7401958691992128, 0.6111084106150667, 0.36565555191527205, 0.027598666863050205, 0.5804894842447184, 0.9996319656239026, 0.3357099, 0.9998774530004784, 0.011937544872960044, 0.9995793436975782, 0.8398214, 0.09453052427637745, 0.9994784661625173, 0.19392533333333334, 0.028866633333333332, 0.22926818037813926, 0.9921651725611843, 0.13088081117403602, 0.9996487139383216, 0.9993386304411461, 0.08917123464775273, 0.9922019297565415, 0.03693253911256399, 0.1320038, 0.29606327245221625, 0.4861544058104357, 0.7321956258650316, 0.07921694158236439, 0.9995760386701895, 0.2794263210328896, 0.5124397281223563, 0.6370143286017077, 0.2762752989922652, 0.6264069175787805, 0.2918305116559307, 0.20072298259573018, 0.47914079530656706, 0.3250385176857037, 0.999426298374512, 0.9874048333333333, 0.09924524631636127, 0.1128508053274183, 0.018546166666666666, 0.9994511026649143, 0.16056163333333334, 0.4126249, 0.9997045884693597, 0.9997426333333334, 0.3623262, 0.6956297157507639, 0.999937833275311, 0.9997204333333334, 0.7540286423025417, 0.08637691349360041, 0.43341948643400635, 0.10619320176708336, 0.9487204280668206, 0.7219520702802587, 0.08302664686371676, 0.9554076916767152, 0.9968423711378388, 0.15634281190073673, 0.1598683, 0.1759817538173973, 0.23054735619577765, 0.6320378959753861, 0.4110655246718683, 0.27201730397630397, 0.9999562812840144, 0.6092963355346871, 0.009722594214016939, 0.8854525532004343, 0.10541963041394123, 0.5323061333333333, 0.0503504, 0.9994988105885397, 0.5485871787453895, 0.6453014273018066, 0.16925409221723667, 0.9997581633789888, 0.8010017962051491, 0.0545742, 0, 0.9365302551274653, 0.9998275665057288, 0.3738259566175299, 0.08543139280526657, 0.30496886666666667, 0.7572440488136666, 0.22760072512215346, 0.35799372831152504, 0.4390965559203268, 0.9258832165886643, 0.19119176201996033, 0.07798662096209273, 0.9211786666666667, 0.5297836337183259, 0.12430241601558828, 0.4518009719967287, 0.2608760576071735, 0.9999241780235818, 0.7749097692580285, 0.23591674540377358, 0.5010646082794072, 0, 0.9123757837634251, 0.9993366641459904, 0.5852603666666667, 0.4370611, 0.2358329241837988, 0.6823621368713277, 0.2188171792048608, 0.25476230888964324, 0.4726474333333333, 0.035475266666666665, 0.9998135512661447, 0.9993217660336483, 0.22745806666666665, 0.4879155171641559, 0.3803786527917334, 0.20763164840592507, 0.9997808, 0.9998239333333333, 0.7055888666666666, 0.39645406666666666, 0.38610287054691095, 0.14267163791591667, 0.9993917721442119, 0.4393574347791261, 0.14167876666666668, 0.9997067, 0.3946359953828247, 0.7680437501741668, 0.14412993333333332, 0.18427044008474275, 0.9772329238161507, 0.999982115852175, 0.7088672747498289, 0.3795207691045175, 0.32927237724748143, 0.43595770371440684, 0.5906783976005241, 0, 0.7933695333333334, 0.17393788367674368, 0.9295874342816053, 0.6236073666666667, 0, 0.6728988190301163, 0.06955724705005818, 0.6917990652643403, 0.9996774894524643, 0.9946970433256149, 0.36583299767158856, 0.1792712746019447, 0.6837237601357596, 0.2527347853010246, 0.1051877787399061, 0.28803322042280266, 0.9995513333333333, 0.505645304027284, 0, 0.9999680020564101, 0.9994902377506684, 0.2020943628352311, 0.15451710523986678, 0.7883925966498956, 0.5312774719528373, 0.31773456666666666, 0.1486842, 0.9998315333333333, 0.32398103252174254, 0.16096856666666667, 0.2835930285924205, 0.9998401331841243, 0.9996342235060216, 0.9518298084766361, 0.9998324, 0.2105214, 0.7096864755100022, 0.32066543262107045, 0.5294704995629763, 0.01755933336273339, 0.9106326666666666, 0.8734747814574265, 0.3361641804199017, 0.2402557, 0.7895745333333334, 0.023522336227993303, 0.7400438148628666, 0.9997938968046483, 0.9749487165771825, 0.41685862489441877, 0.23748005830396962, 0.2524176383142945, 0.9086884615641778, 0.09804822150994225, 0.0841279143627015, 0.739828251241341, 0.9740795728833052, 0.19354532735766286, 0.10064525511329825, 0.6182397889745339, 0.6218021045123883, 0.03957135444086564, 0.9999982649674336, 0.9963691528694476, 0.47950358686106026, 0.5567025869489978, 0.5578078916237874, 0.03995606108288151, 0.3221763416027222, 0.9712659788244766, 0.8314672334665094, 0.41312543589546963, 0.08447820272800213, 0.29690821805149736, 0.059990850982448544, 0.6829835683614107, 0.24399870401066667, 0.19897948604902005, 0.9997021376816614, 0.583009714055047, 0.39886666310164076, 0.08763594462666546, 0.20294768793749984, 0.9994212367660815, 0.7906235634375939, 0.9999959293313233, 0.9997183149301203, 0.2339926388225319, 0.6296943733919863, 0.178810367505672, 0.9995113287072451, 0.5083148481631272, 0.9689381054271287, 0.15616451876356777, 0.5885786463548951, 0.18123541564980175, 0.24532638856386357, 0.31411534424081144, 0.9998720501138724, 0.9998075450353959, 0.21231563489429886, 0.3682517, 0.9993657473189236, 0, 0.9994643225890262, 0.599523972428881, 0.12664447562161485, 0.8550483359468289, 0.07509791506141399, 0.19202469636051284, 0.9994090333333333, 0.9997576633582693, 0.36036716967602506, 0.026844305185365014, 0.9673055389703394, 0.47686348066736894, 0.49831016193512007, 0.5636133333333333, 0.10002853333333334, 0.6482214882833086, 0.17284229465280834, 0.1740793, 0.4424982328577189, 0.6862523405021844, 0.20344486666666667, 0.2787969452170044, 0.9994174327896039, 0.3001137, 0.014161128341825794, 0, 0.9995136579664183, 0, 0.7031042, 0.07414089858747067, 0.3721710140262798, 0.9419494594666648, 0.048533485897958716, 0.9995091197227367, 0.9999659999036664, 0.9998063219112324, 0.9996116985244544, 0.33484838520535015, 0.48158695320220307, 0.0936926374620536, 0.9999503997172784, 0.06489056885005787, 0.012551683259498955, 0.0126557, 0, 0.9996012, 0.9995454333333333, 0.9999376, 0.9995954, 0.11828290325502853, 0.3116929909134582, 0.967134142482, 0.17524989638096536, 0.7677456355600725, 0.043393464873864175, 0, 0.9995966053186438, 0, 0.9998458500906284, 0, 0.9998807333333334, 0.6568852, 0.9998474844018518, 0.9983989318390031, 0.06789369489384574, 0.2786905202223044, 0.9508775735887468, 0.3049504871946975, 0.10485468419222944, 0.9998661995004782, 0.2708703729968278, 0.7808203031887583, 0.7754527666666666, 0.6227611, 0.08002225826480441, 0.6498968666666667, 0.08875647069363234, 0.9998647693540972, 0.9995118228230822, 0.32015654163076246, 0.9662366993199479, 0.6973933092810429, 0.13395071573427578, 0.9997173808411397, 0.9984564868941023, 0.4485284952662748, 0.2154768811509836, 0.2422646668948464, 0.3516569254999748, 0.2983935281828096, 0.3887295322094016, 0.2348093701005072, 0.5565401742432854, 0.4109085043089153, 0.1337747054944723, 0.9805707680517078, 0.08938279681265231, 0.7148024005461611, 0.09224777318487844, 0.6582882354070837, 0.02590144869817761, 0.08267718271112914, 0.999470882277642, 0.9211086157442836, 0.2167595107256284, 0.8439816349611196, 0.5061815167700373, 0, 0.9350186545957837, 0.7428398780430727, 0.5726413302933251, 0.2785414247358424, 0.2621831894678425, 0.7637541203923482, 0.9518030713984411, 0.7854628635323467, 0.6949913900096993, 0.46750000493110777, 0.9527502982246661, 0.541422289603832, 0.1944651871352191, 0.7870712666666667, 0.48556301438312155, 0.8830738333333333, 0.7089312619560333, 0.5079048243079969, 0.4436291250009241, 0.03145359414361534, 0.104263, 0.6414325411235928, 0.4473691657901936, 0.9999021666666666, 0.37647399352134026, 0.05033294697741718, 0.5289444793973825, 0.1559204629155462, 0.9999520666666667, 0.5377584333333333, 0.45147933333333334, 0.9999232, 0.38024943333333333, 0.6546707666666667, 0.1307431707061946, 0.35231818191230496, 0.998165673673827, 0.45464979716794796, 0.46471652061234453, 0.1730601627724666, 0.6277523330432381, 0.6628548036174184, 0.2560022341902512, 0.9968266515403723, 0.28294961569289223, 0.20799811764988788, 0.6074459536638871, 0.5924521163474423, 0, 0.9993434333333333, 0.9994000192145703, 0.7487809904882908, 0.4039172652438458, 0.14928618861996468, 0.6431630666666667, 0.1684451466476319, 0.9995162333333333, 0.07169677857094119, 0.7969819619218022, 0.16154508862604555, 0.4613524212787574, 0.2985965926946196, 0.7781028810986822, 0.07910085302709, 0.13310200720636425, 0.9995321191096697, 0.30172506613894096, 0.05164713336926135, 0.999341673297183, 0.8059257062376154, 0.31633857232583024, 0.9258568935080183, 0.08237137177580484, 0.16764620372224082, 0.13962590861154522, 0.541393426690149, 0.9996690752745978, 0.999343529591452, 0.999489, 0.10445543406469751, 0.6048015462717589, 0.17210172369819085, 0.1390092563780148, 0.9994127921229061, 0.9993710376742823, 0.14388862556215465, 0.7692778535852356, 0.9998527022418946], 'oldestBlock': '0xd0fb15'}}), + (('0x400', '0xd0fb13', []), {'jsonrpc': '2.0', 'id': 0, 'result': {'baseFeePerGas': ['0x16a9cf1687', '0x14a9e3c92c', '0x1712b5b3ac', '0x14f7232df2', '0x153af83f52', '0x14bc94d53e', '0x14b3d8321d', '0x13a29c2d8c', '0x11fc8a6e8e', '0x140e1636fe', '0x168ec18d7e', '0x1622335b71', '0x157c41ab48', '0x1427d73f77', '0x121c6a0df6', '0x1102458b85', '0x12ef0a3e76', '0x1207055580', '0x1059e5a8c5', '0x1236cd3d7d', '0x147d9c30b4', '0x14f0e62a99', '0x155ada5a88', '0x139686799a', '0x160910d77d', '0x15cdf76572', '0x135b9080f1', '0x114e34838b', '0xf246df31a', '0x1108caa9ec', '0x102d7c3139', '0x12330882da', '0x1431c68444', '0x158c7f7f4d', '0x132c784781', '0x140ae3dc51', '0x12ecf56f91', '0x1357899adb', '0x14eb955adb', '0x12b551cf44', '0x11b43d672c', '0x10ae11c593', '0xfc2bb40b8', '0x11ba9b9d1f', '0x11a5ed87b6', '0x1230391f44', '0x126be90c0f', '0x10fc2bbefd', '0x1086f135ce', '0xf1260c6ed', '0x10f3dc548c', '0x13121fa9f3', '0x1531003cb8', '0x138ccd0c90', '0x1169086ee9', '0x1395a27b96', '0x160505187c', '0x18c3bea821', '0x15eadc0199', '0x13d2692cf9', '0x154646250f', '0x13e019b2ba', '0x1164167c63', '0x13904dad5a', '0x1601c25414', '0x166a970e8f', '0x153bba525b', '0x1517d32ade', '0x12c0757341', '0x15186da0ad', '0x1429b5a403', '0x16ae93792e', '0x14750827bb', '0x1702ecda6a', '0x164d13566d', '0x1690ab271b', '0x16546082b2', '0x191ceffe48', '0x15f951fe7f', '0x15ceab47cc', '0x156fdf589a', '0x1584d6e0a7', '0x134ffcc253', '0x158fce7525', '0x1667b6dfac', '0x153243fd3d', '0x147c7df1d5', '0x14cc265738', '0x1764d7b921', '0x1a515cf187', '0x175fb57079', '0x189805af7d', '0x1697873d68', '0x155e61c5ac', '0x16a998d715', '0x1506b773b6', '0x170cae3688', '0x18ccf5d268', '0x167a08df5f', '0x1578d5d20d', '0x1714e3260d', '0x1515556dfd', '0x136ec413e6', '0x134f5ddb86', '0x15091bd0d1', '0x15cebfc078', '0x143b665591', '0x1533c66e61', '0x12f6d8f286', '0x125422b93e', '0x1388ceb8fc', '0x15f91f0434', '0x1873ec474a', '0x16b4656243', '0x19441bf03f', '0x161b987238', '0x1899844d0d', '0x16d86caaa7', '0x14fd07b027', '0x15edc237fc', '0x149f91c00c', '0x1732b73d6b', '0x1a18ebddcd', '0x1907a8d506', '0x1687dd5c98', '0x1957f2121f', '0x1c822291ef', '0x1a8a438254', '0x1d98c3863e', '0x1d66e01e95', '0x19ba041ac3', '0x1cf06d452c', '0x1e98e795c9', '0x1ac5caa310', '0x1bd97ccefc', '0x1bd6afdc04', '0x18a0f0b2d9', '0x1bb4a47b7a', '0x1a657e3c15', '0x17b5e41005', '0x16907f75a7', '0x150dcf9b43', '0x134889a83e', '0x1424cc2bd0', '0x12d9e2a989', '0x14db56c8f3', '0x12afe679b7', '0x1505b2f8a8', '0x162c536c8c', '0x1429f47557', '0x168c78f7ae', '0x1586af07b7', '0x13a5b7d7c0', '0x13b41146d8', '0x15ea057825', '0x14a5e51b3e', '0x173a86c755', '0x19db53f43a', '0x19651af7a6', '0x17fbd2b6b8', '0x17e6875c3f', '0x15b90941df', '0x16b294f1fd', '0x18929fb7d4', '0x1705959199', '0x14921b60a8', '0x1364efa8bf', '0x114c8dc318', '0x1375a3ad64', '0x15e3bd030a', '0x1378738bf3', '0x11c4daea08', '0x126a664b7b', '0x146a2ba3da', '0x16f714327a', '0x19d57f1593', '0x1829808bc1', '0x1818f4aecd', '0x19086e5f85', '0x18c29034cb', '0x16a7ddec24', '0x185f3f99e5', '0x1585f381f7', '0x183667b2d7', '0x199a3d6750', '0x18197f2eab', '0x15ddc5544b', '0x13f09499a7', '0x166e263aa4', '0x15ce5c1f1a', '0x1887a46791', '0x1835f45325', '0x16eb024d90', '0x16d48d3b31', '0x13f9fb93cb', '0x12dccab65c', '0x152f93efe8', '0x17d4f26036', '0x19f5c62704', '0x16b70d6224', '0x198da68ebd', '0x1cbed4381f', '0x1fe93dd9ac', '0x1bec161e77', '0x1f5ddb2656', '0x1d571acfee', '0x1d150bf5ff', '0x1af88da67e', '0x1e56d0cfd7', '0x1b87beac51', '0x1de3b8e713', '0x1e040b03c8', '0x1b0ce1a08f', '0x1cb9176858', '0x1a9c2a1b18', '0x1def403937', '0x1b077b24eb', '0x1acfd992ca', '0x1a217cf3fe', '0x1d64c3454b', '0x1ab5b323aa', '0x1b8e299814', '0x19e1c33e22', '0x182fa7a480', '0x185727b429', '0x185f264638', '0x16726aca34', '0x190fe669c6', '0x1bce77902a', '0x18a851ecf3', '0x1a973fa9fb', '0x17b05ba0f6', '0x15c088540a', '0x1308774989', '0x156957d787', '0x18167219b3', '0x1ae46ae25b', '0x182da281f6', '0x15df27eaed', '0x189a4ddc77', '0x16acd3ebcb', '0x172ec55e08', '0x15d7e21c38', '0x187b20dd5f', '0x173c383883', '0x16127b2503', '0x141cb4f8e2', '0x1538dbc8e1', '0x1781486338', '0x1935094a5d', '0x1a5d2986f8', '0x17a09b3f33', '0x153736c076', '0x17ddb68579', '0x16fb4300fa', '0x19d9b3dfb9', '0x17ef773118', '0x15d9f3a9d8', '0x16544c4aa1', '0x1791009834', '0x1736311f4a', '0x192b01a95e', '0x1770663deb', '0x1a0f66e92e', '0x1ac8fbe145', '0x17f9c5e6e1', '0x16b6b095c0', '0x14f50a31e7', '0x159d53a982', '0x1476fa8d78', '0x134da3455b', '0x1387896c11', '0x133b208e5c', '0x13e9136e1f', '0x11ef1e8b15', '0x13697b686f', '0x1243a754ea', '0x12a5b173ce', '0x124203631c', '0x143faab674', '0x167b84a05d', '0x194a84e866', '0x193a9fbae3', '0x16134bc387', '0x167e9b733f', '0x154670829c', '0x16cac59bdc', '0x147c320d0f', '0x1339ae56ae', '0x14bcb55d68', '0x133f6f6591', '0x116fef03ac', '0x10b957de96', '0x12d071b66b', '0x121d39bf66', '0x112c01c607', '0x1309e3a26c', '0x156918d8ad', '0x154ecea949', '0x13d0ca284f', '0x13fdb768b7', '0x167c99edd8', '0x14cc449fdb', '0x15ed68af20', '0x1437b49de2', '0x1259651023', '0x13484d5007', '0x11baaa2c07', '0x109625a1a8', '0x11d40380b0', '0x1058833dd0', '0xffa394222', '0x11f95a177f', '0x10d2d13bde', '0x12ea104037', '0x12cc2a17ae', '0x10e1adc294', '0x12cb5e21ec', '0x15248211dc', '0x132b933c1e', '0x10f65f734b', '0x13150ee54c', '0x1577306d72', '0x12c84a5fc4', '0x151e2583ea', '0x176c2d0263', '0x14cff001e4', '0x175241f3c1', '0x14a445c83d', '0x12e208c5ad', '0x149d696d02', '0x173047475c', '0x15e14e840c', '0x1605da5a2c', '0x162428e44e', '0x17c9a3d4fc', '0x14d06f5a5d', '0x162e9dbee4', '0x150d2d78fe', '0x13c44fe050', '0x15f135d246', '0x1469814a0a', '0x1249ea9674', '0x144bd270d6', '0x12e4cd1420', '0x126880cbbe', '0x14b55a8a97', '0x171a071e58', '0x171ac601fa', '0x19b05f747c', '0x1868bea016', '0x1872d6903b', '0x1aa3f02d29', '0x1c51b11d72', '0x192fa798ad', '0x19c33732ee', '0x1c54b68804', '0x1bd9abcccf', '0x189cbd080a', '0x17b35aecc2', '0x1aa8df5933', '0x1dfddebadc', '0x1b5ea0fd84', '0x17f2ccddd4', '0x182d8c3b87', '0x176ff551d2', '0x1807a5c84c', '0x16006c78e2', '0x18bfbf91c8', '0x18050f82b5', '0x16d065e441', '0x16ae6cf8bd', '0x145f7e6cab', '0x16eb4193cd', '0x199a0c4838', '0x16aefe918a', '0x14e6ff01b1', '0x169cb6e18c', '0x186564b9c4', '0x15bc2bed88', '0x170432adf5', '0x19e459e653', '0x1bf13c920f', '0x18f86e91a0', '0x1ac43bed7e', '0x17f84f9ebf', '0x15abe4652c', '0x14d382ff88', '0x14f4dd754f', '0x160414bf1e', '0x13ed8bf825', '0x129bbb25b6', '0x10f87affbc', '0x1317334edc', '0x136224ed26', '0x1118aad2b0', '0xef595785a', '0x10d3ec3e78', '0x12dba042ed', '0x15366bc09f', '0x145db90fdf', '0x156b46ea3f', '0x1478bc7fb7', '0x12fbb402c5', '0x14cd41a3a5', '0x145eecd29f', '0x12939fd7fb', '0x12df5b854e', '0x153b09ea3a', '0x17e2561036', '0x1754f4638d', '0x15c5d068f1', '0x1779db667d', '0x148a9ff9ae', '0x133b5e6af3', '0x130b3e3196', '0x156637b4ed', '0x1300458fcf', '0x12bd8db02e', '0x1125a6f666', '0x134a163c1e', '0x15b348e824', '0x1821f5effb', '0x17c4e50f08', '0x152da2e83e', '0x178d234e9f', '0x16fd02ecdd', '0x1990faefc2', '0x182a3bfedd', '0x163508bde9', '0x1662445e04', '0x15e38caec5', '0x179e72d424', '0x15cd84f312', '0x14820a325f', '0x17122e278d', '0x18888fb172', '0x19b29a3e34', '0x17921aafd7', '0x16234136dc', '0x150a306e25', '0x1336339c6d', '0x159cd26b75', '0x14bf29cddb', '0x1722a49d91', '0x1480978cbb', '0x16a008a63a', '0x15498e7534', '0x12f78135f4', '0x1554380db3', '0x13f5821573', '0x13550675bb', '0x11b394b408', '0x13e9afe652', '0x12ef8e9af4', '0x1149c89614', '0x1372914b3a', '0x15e07a58cb', '0x15711fb452', '0x13529dc657', '0x1443045484', '0x16cb3236b0', '0x18d9de98d3', '0x15bea2c5b9', '0x157439a990', '0x17a667266c', '0x159fb8dc7b', '0x134761c7c2', '0x15858951e6', '0x14fbc5ab6b', '0x129b27f344', '0x1047c2f4dc', '0x125063b318', '0x131333e18a', '0x10efc9ab1d', '0x11466bc25b', '0x136ea71189', '0x1206509ef0', '0x1026498b68', '0xe218059fb', '0xfca399d6c', '0x11c379e230', '0x10e1e80ec7', '0x108ac43cae', '0x11bbf80ef9', '0xfcec428fc', '0x10d9d34d25', '0x12f3a9af81', '0x1177f579a7', '0x11ecd4e24e', '0x121a56ebd8', '0x101dc2cf56', '0x10d5b20ec4', '0x1057efe1f9', '0x113031cde0', '0x12746fbd99', '0x111ed9f6c5', '0xfe71085a1', '0x1172848cda', '0xfe9760676', '0x11184e8de9', '0xfa2955d9b', '0x1196774a90', '0x118bbd9520', '0x112d124732', '0x1018e5b984', '0x1219f376e8', '0x10be12a2f3', '0x126f39d560', '0x11f6430640', '0x14347caa1e', '0x1348770ef4', '0x14521706b2', '0x1568ee3cde', '0x1504d5f224', '0x16cd844ef4', '0x17cd780b28', '0x1667beab44', '0x175f52a222', '0x166604d4a0', '0x19325de04b', '0x1a90b4c6df', '0x1980086839', '0x16e2f41c76', '0x171eefb9c2', '0x159e84f846', '0x14670a980c', '0x14e0dbb615', '0x12c14bdcd2', '0x14f60fb0a0', '0x12d16b1171', '0x1274ef1d5d', '0x1206355c68', '0x117008724f', '0x11d34e1b92', '0x107106a2a2', '0x1032c2b030', '0x1235da2d85', '0x147bea489d', '0x12daa5cea6', '0x131a7d8657', '0x11f72f7fa5', '0x1070cf6234', '0x1249191587', '0x1377bdc0e2', '0x12756e661b', '0x14c375b111', '0x15923e2ea5', '0x1843f97320', '0x15cc1ad357', '0x1458f04bde', '0x13f1aa7279', '0x12dc7b8e61', '0x1134e45df6', '0x1357f6cdae', '0x139bfd71fa', '0x1396dab410', '0x11d1b87b0f', '0x10b59d50b3', '0x112d962169', '0x101e1b70eb', '0x11bcf69bf6', '0x1020897ab5', '0xf9fe3fcf8', '0x11936f243a', '0xfc1379110', '0x11b95512dc', '0x10a6cdec55', '0x1232eb9ea6', '0x12049cb659', '0x14415c2280', '0x1305f46bad', '0x1115bf6b2b', '0x13045f703d', '0x130fd8b07c', '0x113fee0ca8', '0xf97c0c94e', '0xf7bfd71de', '0xe073e2e0b', '0xfc81e3106', '0x11c0b36fb2', '0x113d69cb8a', '0x13639cc5a7', '0x128a4bfcd1', '0x14db0c8257', '0x12c741ed63', '0x10be8b94ad', '0x12c199bd03', '0x111515c4ba', '0x1334cfcd0b', '0x125c4f685e', '0x10a5fb12b0', '0x12b9fbda0f', '0x15111d4e6a', '0x138ff0e340', '0x15935140fa', '0x1359870f30', '0x1152cf88b2', '0x120237f3be', '0x11d5f581b6', '0x10175428e7', '0x10e8284406', '0xef17e2814', '0x1051148208', '0xf08ec76b1', '0xe432d6d60', '0x100b477717', '0x112b4b0e11', '0xf05e1ac4f', '0x10d31d1dda', '0x10f6583e43', '0x131446a66b', '0x1576620383', '0x13c2880b40', '0x145c1819e7', '0x11d2a782d7', '0x133b7b7da2', '0x119ce8af13', '0xfd1d7117f', '0x11cc01cde9', '0x10863817d5', '0xfbf1703d8', '0x10c9b2a945', '0x12dd2a9391', '0x11008b8499', '0x1142af6753', '0x1001695875', '0x11d7b1c4e7', '0x117eee1d94', '0x13aec5962c', '0x152c0c3f60', '0x1411a715a7', '0x12a86a3b56', '0x11eafebe0c', '0x116d44af97', '0x10d3c29660', '0x10122f53f1', '0xfba7f363a', '0xed7464854', '0xf9cbbd57a', '0xf09ff5c38', '0xdc90d71f7', '0xf81f9a652', '0x10d81a24a8', '0xfc77321a0', '0xe799693f1', '0xe1ec737c9', '0xfe28167e5', '0x11aa0ac846', '0x11d0c0cff2', '0x107d3ae357', '0x128ca3d034', '0x13a3a67592', '0x13f4b67c88', '0x120e745ba7', '0x115b4e84d8', '0x1028af0872', '0x10bdbe3177', '0xf00138d6e', '0x10dfde4fe7', '0x10ed7dba23', '0x101a34734f', '0x11b63eeadc', '0xfbda3dd78', '0x1152a29b6d', '0x10c266566e', '0x12da1a5504', '0x11d7c603cb', '0x1148ddc12c', '0x12cefa9a61', '0x109ff96fd2', '0x12b35af174', '0x14c58545f1', '0x13ef211ee6', '0x166c7952cd', '0x1526f8b3b6', '0x17c9502a38', '0x152b15a663', '0x155b139ba8', '0x12afb12833', '0x13c40d54de', '0x12386468a3', '0x13b00835dd', '0x15b87d7333', '0x133741490c', '0x110058bc4c', '0x11ccd7aba8', '0xf933cb633', '0x10c213a3bf', '0xee7dbcb6b', '0x10c4c1d491', '0x12da36ba9e', '0x114cbdade1', '0x105fb0b91e', '0x12321b8c6b', '0x1141f8eb8a', '0x11762dbde5', '0x101aed3535', '0xf58c6a78c', '0x1081b83bb1', '0xe99c4ce07', '0xe91ba6766', '0xe0ebaa045', '0xf84f7784f', '0xee1bba161', '0x10a748ba7c', '0xfa2352ce4', '0xdf938d3d4', '0xfb83906b7', '0x10667f7473', '0x1197e04be8', '0x101fb21ba1', '0xe8efdeb98', '0xff238771e', '0xe54f5c950', '0xed5272817', '0xd2b813411', '0xed0e1cdb4', '0x10aad23323', '0x11b0503d64', '0xfb1952024', '0xf08f140ea', '0x10e9b4b00e', '0x1073541c75', '0x12811eaf65', '0x1239c7951e', '0x10fc9cfddb', '0xfbc243492', '0x1012dc0003', '0xf6ab80045', '0x1157deb983', '0x13828cbec0', '0x15f29d7084', '0x14922d1e68', '0x12f8222682', '0x1556bb3f08', '0x131ecd892a', '0x1206701d25', '0x128cdbe8eb', '0x123b879b8f', '0x100182a5f5', '0x1123620b9d', '0xf5c5c570a', '0x1147674740', '0x102ce61948', '0xf52d10bf8', '0x10cc42746f', '0xec10cf084', '0x10988fd72b', '0x12ab64bc4f', '0x150013dd3a', '0x12ca994e23', '0x132c60249e', '0x1253f91dcb', '0x149dc6071a', '0x13082498f2', '0x150a3dde25', '0x158172ef47', '0x13eedb190e', '0x13e6f35d65', '0x124f954653', '0x116af193b8', '0x139812a5bb', '0x15dc1090a9', '0x13f11bd432', '0x1214493602', '0x13d440d3a1', '0x132135df22', '0x1584993d50', '0x16603b6bc4', '0x13fdbd8cc7', '0x1234d4356a', '0x1400d1cf73', '0x1646fb9b70', '0x1649ce88ac', '0x168cb11e6a', '0x176279ab4a', '0x15d261103f', '0x188c8127e3', '0x1720b1fd93', '0x14995c3a0b', '0x172be713e4', '0x19f9f15580', '0x1854f2a9bb', '0x162c6f84be', '0x14337f0076', '0x1688627c25', '0x13b7562ca1', '0x158a65902d', '0x13b6268bab', '0x11778de105', '0x13a607e787', '0x12bbc85e24', '0x137637cbff', '0x1181541423', '0xff2524339', '0x11c5480c12', '0xf8c9f0a90', '0x117e2dbff2', '0x100918ea34', '0x120a33ce4d', '0x144b253cda', '0x1488677f99', '0x14a8c44d78', '0x12a50e8ba4', '0x1327cfd0d9', '0x11db22a78b', '0x14168620cc', '0x1208c4f202', '0x119fc836aa', '0x104d654690', '0xf2b6cd745', '0x111033d62b', '0x10a0850bdd', '0xecb86c720', '0x10a47abf0d', '0x1279f8c744', '0x127277a656', '0x127656b878', '0x1251bfab8b', '0x11d2b3d944', '0x12ce22ae3b', '0x10aa37d78b', '0x100739a97e', '0xec3214905', '0xffcf70ab5', '0xedfeccf04', '0xe13fc2fbd', '0xfd60bc7d4', '0xe9d4caa70', '0xd81555246', '0xf31147aaa', '0x1102cd8f27', '0x10acda8950', '0x12c1ff1bd4', '0x10a65e3de5', '0x126a242e63', '0x11be102bd3', '0x118d742c50', '0x103aa10d6e', '0x1241a8429e', '0x106594245b', '0xf19b228e0', '0xf39e793bd', '0xe4abc6c5c', '0x1013749b90', '0xf793f40a4', '0xeecac874f', '0x103f5ca1e2', '0x10b8844323', '0x12cf7ae75c', '0x1275f619ec', '0x107ee4687d', '0x127380b861', '0x10c3eb1f80', '0xf57a4ba32', '0xf398e3a4e', '0xd525c7305', '0xefc7da707', '0xfc3e4d3de', '0xdfd0b0f09', '0xd295c776b', '0xc0dbf34e3', '0xd83f5d4ae', '0xf34713b47', '0x10dd00add7', '0xf30e682bf', '0x1116960a6e', '0x11680550d1', '0xf5fade01f', '0x10f0d3407b', '0xf46585b87', '0xe0d422f3b', '0xc4b99e954', '0xdb0a33553', '0xf666f97f2', '0xe94765454', '0xde3a2a0a1', '0xf9d7b032f', '0xef01aa3ba', '0xd754d7e0e', '0xf23dc8d87', '0x11080e9422', '0x11f62591ff', '0xff53f890c', '0xf5fbbcdb5', '0xe060eff83', '0xfc6824732', '0xfc150e62b', '0xf4cd28411', '0xe0a83b6b7', '0xd97904079', '0xf4a78508d', '0x1031b01853', '0x1234b5f574', '0x11761544d0', '0xf47529c36', '0x10f283c439', '0x10bc06229e', '0x12d2d90bd0', '0x12b19717c8', '0x12ebcf9e7f', '0x10d4272d2a', '0x11a6bc6491', '0x13485434c9', '0x11256ab12f', '0x11abbd2098', '0xfb6366693', '0x11ac3a98d4', '0xfc8b5cd00', '0xe4d263301', '0xe7c1eedb1', '0xed2fb4253', '0xd5af3d3e2', '0xecdc47121', '0xff98edf32', '0xf028ca9ce', '0xdf0f8ece0', '0xf72d0845a', '0x1160855bc1', '0x107540f61e', '0xff9a9c6a7', '0x11ef06f63b', '0x1022c00b5e', '0x107281f0cb', '0xf3e3adc22', '0xea2127bb2', '0x102978e748', '0xe7ab659aa', '0xec27ef98c', '0xd2d88a6f8', '0xed2b128a1', '0x106e551643', '0x10f86a849d', '0xf3a2c2bee', '0x11211241e9', '0x1267b8ce19', '0x1099d46e7b', '0x12ad0c4e43', '0x12fe5fd256', '0x122012ef86', '0x110a245be3', '0x120710b99b', '0x1099e7ce38', '0x11331bda01', '0x1023281e87', '0x1082bc3fd1', '0xf008e0d8e', '0x10deeb5cdc', '0x118ff6fbbf', '0x128a3d6791', '0x11ef657c72', '0x11babb205f', '0x10b38ae82b', '0x10dea8f43d', '0xf0b789c71', '0x104aec6658', '0xff3a40b90', '0x11f20872a8', '0x10fc949051', '0xf6aaa2e21', '0xf827d0b07', '0xe20da606c', '0xfaabda376', '0xeaf6c5cfb', '0xd5ce8c415', '0xf084b39ea', '0x10e934626e', '0x12bf962901', '0x11187ecd4a', '0x10525f4ee8', '0x125c478c64', '0x14626f1497', '0x16a9745c25', '0x15d78d3157', '0x1505ca0506', '0x12b8544f40', '0x14d5fb1664', '0x16694bd049', '0x14e469c294', '0x12b2545b8f', '0x15080854ee', '0x12bea927de', '0x11fcad1734', '0x113909cf90', '0x100da48a23', '0x120f585ca0', '0x11beeb8230', '0xfff8a0ca3', '0x11e40c40c2', '0x10c7349e68', '0xf301c24a1', '0xf025fbc50', '0x10dc15c78d', '0x1276016008', '0x12b317f618', '0x14e180bcd1', '0x177d2b67f0', '0x14ead6e080', '0x127c3ad01f', '0x14cb4b35d0', '0x1340406d6e', '0x113af131f0', '0x12b3df8568', '0x1455c2f8ca', '0x1302eb30f5', '0x153441fec8', '0x140c8da5bf', '0x168d97eb6f', '0x180837397e', '0x17ec3d547f', '0x16b7788f66', '0x14cd5563d7', '0x13930ad4c2', '0x14ef268784', '0x15d1d81585', '0x16f30d1b94', '0x14a1e57ce2', '0x17353df64a', '0x1a1b06dc94', '0x197e3fe37d', '0x18245a8d50', '0x1aec01d13a', '0x1c9de2e318', '0x1ba1126078'], 'gasUsedRatio': [0.1470623871780353, 0.9664142423601025, 0.13460378195227266, 0.5505537804922442, 0.406981386090455, 0.49341678285708446, 0.2937792650969992, 0.16413203750962987, 0.960020710902771, 0.9991495264838801, 0.4248068867784998, 0.38285335759020905, 0.2524364862335572, 0.09423047670436747, 0.25658549161400535, 0.9526758033501291, 0.3085271080725826, 0.12806345217759363, 0.9557251178312544, 0.9999640943716256, 0.5879127245739196, 0.5790567811320085, 0.16903981994486458, 0.9997804710477449, 0.4580934535072646, 0.051124546238804386, 0.07594390002838979, 0, 0.9998023731240795, 0.298837864808581, 0.9998671779407733, 0.938496299168901, 0.7682689671772721, 0.059120158330045934, 0.6812542374014616, 0.2770902572724531, 0.5879914908746717, 0.8264003253557343, 0.07706654307006472, 0.2852891546113215, 0.2686173345269479, 0.2795464649307581, 0.9995389475692497, 0.4817741344111581, 0.6224413367103393, 0.5512751935437967, 0.18808613333333332, 0.3921581757919942, 0.14777189392172815, 0.999155474504479, 0.9997975996154392, 0.9447877803643084, 0.19017519599379867, 0.062205940911689274, 0.999526714852134, 0.9973519166092765, 0.9986498965813567, 0.040116908819812655, 0.11756407084734657, 0.793128145935679, 0.2369404334797219, 0, 0.9997346067582186, 0.9995349315815756, 0.5744305666666667, 0.2888943052891148, 0.4735800264502994, 0.05601072472101684, 0.9999267522950501, 0.32318535580799806, 0.9997309745933809, 0.10765573036659067, 0.9994380984079455, 0.37652216666666666, 0.5473583, 0.45825166666666667, 0.9986098241733614, 0, 0.46967196666666666, 0.4320779092549459, 0.5152823666666667, 0.08985768730168324, 0.965874247250015, 0.6564604675985087, 0.28419513333333335, 0.36600463333333333, 0.560755377626252, 0.999379566087595, 0.9999432666666667, 0.05255235070379559, 0.7087758443665932, 0.17440144823851136, 0.28342192301564956, 0.7421879233308536, 0.211196465056651, 0.8849089208031065, 0.8038833782828718, 0.12518234959063704, 0.32120412036616974, 0.799846736279195, 0.15370563766528011, 0.1868322, 0.4747531297645484, 0.8574422511036377, 0.6468051163070586, 0.21100310241306222, 0.6918178869999776, 0.07778083410141816, 0.36593867015956544, 0.7631397682130032, 0.999370235540124, 0.9514048621864013, 0.21403677977409094, 0.951251466313796, 0, 0.9508599696335084, 0.21474958401392116, 0.1748564, 0.6792125510561063, 0.2618783777531526, 0.9993941, 0.9999097785654358, 0.33639271396653303, 0.10060623588849861, 0.99937433216542, 0.9995044666666667, 0.22383556666666668, 0.9606827400289716, 0.4736624754183104, 0, 0.999489065594114, 0.7291864666666666, 0, 0.6609012722045632, 0.49842873282350625, 0.038777708303569386, 0.9997365234421374, 0.31098756666666666, 0.09298383333333334, 0.3066568333333333, 0.23223434350309743, 0.1636073193668314, 0.6784730955526964, 0.24331965419668783, 0.925582892782869, 0.0838895348906977, 0.9998422, 0.7189842, 0.13753246666666666, 0.9730902333333333, 0.31859500802533675, 0.15088500749267367, 0.5114116374481631, 0.9488075377740706, 0.2688947, 0.9999202554627927, 0.9525677090058267, 0.4285591497783513, 0.2777102681537042, 0.4861270600488852, 0.13553813700176354, 0.6794957755126779, 0.8304605950993796, 0.24753560073391948, 0.07412855334610428, 0.2712383905246755, 0.06786359775019751, 0.9995631527447276, 0.9995134474273734, 0.057947257872318116, 0.15043596896146944, 0.6455701940883323, 0.9342193486269816, 0.9997222575690323, 0.9996820357946591, 0.241138869274638, 0.4892999210560209, 0.6552777015460092, 0.45639005062028803, 0.16005140053087163, 0.803028691853403, 0.03244545593483996, 0.9997894504583414, 0.7296299005290666, 0.2651944022840179, 0.12932083024814128, 0.1475808931458539, 0.9996052655482524, 0.38869012386130153, 0.9996326485312804, 0.44796658219723057, 0.2864163711729007, 0.48468909007027233, 0, 0.2769324566912913, 0.9926996676941181, 0.9995734669810139, 0.8572083297116226, 0, 0.9998051965418793, 0.9996771695120571, 0.9405117300099751, 0, 0.9934297666666667, 0.24158873333333333, 0.4648211311679188, 0.20960912896852038, 0.9995325560227627, 0.12967017970667477, 0.8427919, 0.5168959178029321, 0.10481133465095684, 0.7473458, 0.20574174014258256, 0.9997450664287286, 0.1117732, 0.4678408465866919, 0.3983883384957826, 0.9994550316529538, 0.13477226666666667, 0.6266289666666667, 0.25707969501115496, 0.23792733125896437, 0.5255183726435405, 0.5051319, 0.18410286666666667, 0.9660175828363063, 0.9380161700984435, 0.047010884906299746, 0.8136270792247838, 0.06347076666666666, 0.17295769318739748, 0, 0.9998513117219944, 0.9999523333333333, 0.9657281333333333, 0.09631575233215235, 0.11840794384741425, 0.9994668666666666, 0.18659733333333334, 0.5895414128103906, 0.26889573333333333, 0.983018017093692, 0.29645621002579603, 0.2997797, 0.14479193333333334, 0.7207556845926714, 0.9302885682693304, 0.7896679477744196, 0.6835575759741418, 0.0848043, 0.09171252394630022, 0.9997034663899019, 0.35174343909548655, 0.9993426654396421, 0.20368143333333333, 0.15172303333333334, 0.587484612057007, 0.7216149738699925, 0.43979088092640956, 0.8371244653182487, 0.22521702651264086, 0.9473053012252608, 0.6112701112803213, 0.08045060839399884, 0.28944593333333335, 0.19068, 0.6254693041087955, 0.287218001403468, 0.2729779333333333, 0.5468662482247247, 0.43886663025336325, 0.641331898021543, 0.10294364894639231, 0.8296475016882744, 0.26349372496840756, 0.5838723664591705, 0.4164756186438978, 0.9361593262949566, 0.9412715881814109, 0.9996951379377257, 0.49017982629161344, 0, 0.5759551621077688, 0.28316442011247966, 0.7852009406002833, 0.09513316954398038, 0.2540026866311074, 0.8145489617653551, 0.2127185897393037, 0.12373812722914519, 0.33638608995660635, 0.9999374444957669, 0.35116105911666995, 0.29192847544578937, 0.9348330447108537, 0.9983353823350336, 0.48081421627295884, 0.21986721137194856, 0.5354256863654717, 0.9993514988397982, 0.19959133217544117, 0.7172248688882645, 0.18810154184914096, 0.1303416, 0.7034380405799596, 0.1777852992662793, 0.2421993, 0.7994400865778767, 0.16739712290398137, 0.4098685858847967, 0.9998535997267195, 0.24395819687605136, 0.9971152666666667, 0.47530056666666665, 0.09229516666666666, 0.9532395384092567, 0.9997667331156176, 0.1268399442561808, 0.03932256363344278, 0.9998975000167156, 0.9995895323727646, 0, 0.9973543236538938, 0.9365618052055664, 0.05422368578750783, 0.9822279163124296, 0.040398366666666664, 0.159186145270857, 0.8668799424212796, 0.9993861322022946, 0.2742883878146035, 0.5260983645339252, 0.5215023666666667, 0.7974370639596232, 0, 0.7628773283966859, 0.2961203527579918, 0.2559066371902724, 0.9402086049334664, 0.22106779906455054, 0.08389577451626852, 0.939055836748885, 0.2236079730380099, 0.39720645756580925, 0.9998197813663418, 0.9622774988131932, 0.5005043337363497, 0.9474216030658557, 0.3007240380796063, 0.5064611429450191, 0.8585969398234753, 0.75205722079954, 0.05747791870875429, 0.5915439520049323, 0.8987723403828538, 0.43214019697648454, 0.03493916953142821, 0.35183753784702954, 0.9994052316481563, 0.9999346666666666, 0.15029823289108482, 0, 0.538329414447328, 0.3774776379582575, 0.6011268883637044, 0.16238386666666665, 0.9994827333333334, 0.3821368900064246, 0.2992131840828754, 0.4767328571434291, 0.09291180986577208, 0.9998662333333334, 0.9682200668953233, 0.044065852815753204, 0.18589720832456366, 0.8272050383562396, 0.815565115575746, 0.06369642736251878, 0.7358132448083041, 0.999747740190632, 0.8167517074603384, 0.07456757508226507, 0.7877165670861772, 0.08207903178118009, 0.11643479170458586, 0.34399087033974424, 0.5250235666666667, 0.7022164333333333, 0.12063406666666666, 0.23512683333333334, 0.14796452068778496, 0.9996868663744086, 0.5613388379581816, 0.02804518568434661, 0, 0.9996250006095243, 0.9825557130535367, 0.9994545013077206, 0.34038216324184917, 0.7068035359433519, 0.3230688053398674, 0.2091758615349405, 0.8831947624923379, 0.41712600772976993, 0.14770293103936685, 0.5636998276323566, 0.9998025393941082, 0.999939366266484, 0.40750816666666667, 0.23270143294927498, 0.8129224788735931, 0, 0.24498573213955774, 0.4609000446036402, 0.9947237517172965, 0.05171851633366277, 0.44513606315653137, 0.15990892538622278, 0.9997522654940567, 0.9999490333333333, 0.9483485, 0.4397432666666667, 0.06399679286823583, 0.9482053183249638, 0.40438003333333333, 0.9485760178147294, 0.28075052870049344, 0.17592548877024033, 0.5318259560922481, 0.41154512241443697, 0.8161560124420353, 0.19242823333333334, 0.26244496666666667, 0.999912714765969, 0.7535520366485675, 0.6898182, 0.1689277, 0.25681593333333336, 0.30162136666666667, 0.15245366666666665, 0.9998740230165244, 0.3397500064790069, 0.9605241433473599, 0.04476335320914954, 0.9141619666666667, 0.2634839, 0.06396323333333333, 0.9981679666666666, 0.2430793, 0.37436526768389333, 0.16260478204153053, 0.9996986721287168, 0.3037305437546998, 0.15197025436353595, 0.9996032655425857, 0.9996701211919994, 0.4204681644456916, 0.1046673, 0.6943959776721969, 0.9998474021187627, 0.861032163572153, 0, 0.4465310192825994, 0.9094352433998563, 0.15731992283513285, 0.06620643333333333, 0.9653374, 0.39998123333333335, 0.046804237671419474, 0, 0.9996714538520037, 0.6662090666666667, 0.051593547766060226, 0.5799238079288874, 0.9994835618828364, 0.21026102582058154, 0.08387959833635901, 0, 0.969632060677021, 0.9999731998999463, 0.3015869666666667, 0.4193504623931936, 0.7882826469456811, 0.06545718221370783, 0.7639728644700722, 0.9987104048838185, 0.1869494359217163, 0.6045382312590875, 0.539668449173571, 0.0610347010185652, 0.6783278666961646, 0.38327853333333334, 0.706750225071884, 0.7947523666666667, 0.21079296666666666, 0.21544836666666667, 0.8885502, 0.14799715255280113, 0.797384277558659, 0.15841207057151227, 0.9995598737667999, 0.49047151065936245, 0.4156948872865951, 0.2487654659384913, 0.9980018924071912, 0.1997135, 0.9042423926964681, 0.3974712376398218, 0.9995149398751558, 0.3174789698767094, 0.7152348858122788, 0.7144066267350861, 0.4269504416258249, 0.8394871183421222, 0.675384224497028, 0.2651753875318497, 0.6726562071663067, 0.33333413489879066, 0.9997178074498031, 0.7172524273238969, 0.3396205847801489, 0.09002700977620237, 0.5409512506602657, 0.24021210089972383, 0.2748834125975521, 0.5932918809936628, 0.0932076146572877, 0.970510355589006, 0.09102736666666666, 0.4232085, 0.40626273333333335, 0.3698147574439774, 0.5889528496893264, 0.18945386666666666, 0.44082676666666665, 0.9968618333333333, 0.9994262730890048, 0.1817130159212794, 0.5529084788146642, 0.2617377645275791, 0.16048296862170253, 0.9488564532197565, 0.758608762913971, 0.2926778560143244, 0.9994493984399623, 0.6556088666666666, 0.9996024117550788, 0.09312799204901248, 0.23393608627917706, 0.42069566932555946, 0.2828426862617928, 0.14909010631095865, 0.9967858552808068, 0.5549486390211439, 0.49590779236465576, 0.13856681760506948, 0.2508781024705185, 0.6121858310129334, 0.2530652160254714, 0.902176779522169, 0.13670590587408285, 0.37535878987997284, 0.9995572333333334, 0.08553268933780503, 0.9999634332992045, 0.2579829537630739, 0.8716951895541935, 0.46024123333333333, 0.9966797333333334, 0.25669566666666666, 0.09243396176366221, 0.9523581222009141, 0.5094270643269087, 0.11972855682663941, 0.11577577115530598, 0.4721795887695152, 0.12386673333333334, 0.9999662003279536, 0.9995725329343641, 0.3844477, 0.9986608410220753, 0.3248730473772791, 0.9995490666666667, 0.1015834629182063, 0.06672819121112353, 0.9806250950095353, 0.1430227717432663, 0.9973392333333333, 0.32386834256348673, 0.12697828865657468, 0.9993012150213728, 0.9999021333333333, 0.2143220145527892, 0.9116473381561542, 0.08735681384952933, 0.08113333333333334, 0.6582100087402015, 0.46159873817683705, 0.10873038032241915, 0.7027791686137537, 0.0354471147904443, 0.8676256115240643, 0.18575519647656138, 0.2944919129987096, 0.9996763011494783, 0.7804913045513202, 0, 0.979715453599802, 0.5327188427033877, 0.9992061333333333, 0.9996497753277258, 0.18269306666666665, 0.6214287, 0.0015901194182786158, 0.8163316952429156, 0.1631868, 0.09274509892243109, 0.9999376999418533, 0.21397064203788257, 0.31170789885980654, 0.7645517707858702, 0.9946540181863849, 0.1052144066422383, 0.5607829746371181, 0.20916808080294447, 0.9591024397515482, 0.42226776666666666, 0.9999780118619165, 0.8026737727159263, 0.2915921215791062, 0.2187527156301597, 0.34137066666666666, 0.3903624, 0.36236361473645684, 0.3202543989041056, 0.4147457196245517, 0.2742728882841523, 0.7078914623464674, 0.3531438566186429, 0.16655045296317916, 0.9997631993290648, 0.8447144236589033, 0.2470816866559103, 0.1693989876677059, 0.4019750628938432, 0.9998672030285184, 0.9480865724905775, 0.5342421, 0.20222186666666667, 0.9997688590424784, 0.7350233438558991, 0.5644934333333333, 0.11927136666666667, 0.3449760333333333, 0.2239686387090327, 0.6441340258941471, 0.08404732012050713, 0.9997733907579299, 0.5126139919501904, 0.30497365184904635, 0.899825722646093, 0.05484929521049334, 0.9020161065236322, 0.36990097552468254, 0.9994435333333334, 0.2858898714594802, 0.374856083199011, 0.8526549, 0.035612041825509276, 0.9994211327930572, 0.9429713583046523, 0.3387284322930736, 0.9995715333333334, 0.27318776666666666, 0.9981312666666666, 0.05973453076929622, 0.5354244508897669, 0, 0.7310851336354945, 0.18722862406006785, 0.822134016534976, 0.9130592502296749, 0.03872049728150209, 0.039029062792192704, 0.6879407662761183, 0, 0.803808901964668, 0.057846466666666665, 0.9999121809113266, 0.9970759972709308, 0.1705717, 0.28589796666666667, 0.9450875112881062, 0.293791567392321, 0.547267235480441, 0.18927229295068995, 0.31163807335763977, 0.8023268732594743, 0.03811333333333333, 0.49139524745914387, 0.3595081171452086, 0.9159664933817309, 0.33565554647077567, 0.9762025491141383, 0.2550466978005337, 0.07524869606463584, 0.9998300677938659, 0.673226108410615, 0.7909405192530138, 0.16590517948219538, 0.11169244655637743, 0.8812497326025143, 0.09506306826695839, 0.6397593310854581, 0.05161326244628516, 0.9999279333333333, 0.999819409679781, 0.7451402, 0.04885550740297901, 0.33209791059467486, 0.9996317066722152, 0.3906371273309149, 0.9994065526846985, 0.43976065899434164, 0.2280914260760322, 0.20521928667393224, 0.5861121185802481, 0.3365527301515701, 0.9998088739711556, 0.9997261318124377, 0.9997969701493684, 0.24909207835613031, 0.1885460460223929, 0.9996551289114182, 0.08414316093675396, 0.2708876645649601, 0.6165221677937011, 0.4314957087347594, 0.011502308460655171, 0.7829743856808563, 0.08515380334194661, 0.9994889990487341, 0.2445364221213605, 0.28933826331730866, 0.8848693832387987, 0.013323292837036394, 0.9993434176947579, 0.9997753468660404, 0.9993805649116005, 0.07926295819038778, 0.5813010520934041, 0.32364637053703743, 0.9994064724726268, 0.1925744663879343, 0.9220719437127906, 0.5885272514663903, 0.20749479305601864, 0.4938032909355381, 0.18017940269679383, 0.3048978, 0.9997858, 0.9625067333333334, 0.14907053333333334, 0.12639563333333334, 0.8871560666666667, 0.3589173666666667, 0.9993766666666667, 0.6594841137629105, 0.07369626666666666, 0.14288028926913798, 0.8947715203257772, 0.9547422620697644, 0.5019806537632422, 0.546889143004182, 0.6481342660847875, 0.23266664645191085, 0.9998767858563281, 0.26844046269293054, 0.06266283747855252, 0.9995238784790761, 0.9841887039252848, 0.24676785016824487, 0.14519704334686181, 0.14418550486413842, 0.9616757339345245, 0, 0.8701437898229596, 0.1603464093163554, 0.04452698313490048, 0.9995816980200373, 0.31372026611578835, 0.6554993478296377, 0.0978582, 0.14384926881099394, 0.9575436937074474, 0, 0.9999797, 0.16675613736814, 0.9999686999707866, 0.9997122666666667, 0.5471661922133038, 0.524627096141709, 0.10995823207933221, 0.609577545183254, 0.22863850753705783, 0.9999970666582577, 0.09105324117596637, 0.40903835434574654, 0.1999975, 0.2220772, 0.9993296120328167, 0.39773113788239534, 0.059270699824364996, 0.9994848272008566, 0.9407882402497978, 0.4936537390857678, 0.5032791082795407, 0.4690330622603431, 0.39163924536763, 0.7204245469324602, 0.0447429, 0.3471781, 0.1840580672972842, 0.8321769666666666, 0.22143423613508076, 0.2857731666666667, 0.9995147333333333, 0.1914228, 0.19639833333333334, 0.9995141333333334, 0.9790057675346691, 0.42105330701819677, 0.9995653666666666, 0.05049664330552117, 0.9239645069819292, 0.3539898132427844, 0.4571918019977571, 0.19838373333333334, 0.9997107, 0.0925430015743707, 0.1837388705245219, 0.5333276723209928, 0.2545670360881468, 0.9993194007683784, 0.3501177517496604, 0.3580516311070399, 0.8545844642721495, 0.6165128569236917, 0.9999054900675979, 0.4256408432335017, 0.07420801545857543, 0.974187422342945, 0.13452176373289657, 0.1605014812109034, 0.4693578205548238, 0, 0.9998059543622028, 0.7079014774722255, 0.04919462465675849, 0.2635526975615301, 0.16330199717840882, 0.9850862858632933, 0.9999849706476749, 0.936291981198307, 0.10333383640659786, 0.9995608810875012, 0.5744615787762094, 0.03290921014920262, 0.9077018997772078, 0.10664307540067264, 0.17973505997893785, 0, 0.9537249687631366, 0.9996788929499301, 0.2869604456418519, 0.3104983250981205, 0.9970647674909098, 0.3265142698430592, 0.10377505415962447, 0.9998792129336905, 0.9997034870134293, 0.7184281664337628, 0.05382148421045593, 0.35360539132926605, 0.14868046897084108, 0.9996578990307139, 0.494856629592581, 0.3844685642629443, 0.1708476474481984, 0.3720817258509906, 0.9999552356563542, 0.7362699351834132, 0.9969239570662602, 0.33639601978872274, 0, 0.9368772606450199, 0.44976091977685845, 0.9993659, 0.4723936924406683, 0.5486634275882141, 0.05765575658019859, 0.6955203076782391, 0.8696546967453482, 0.05682680434813611, 0.6224053396273093, 0.056538252540545016, 0.9992440270227056, 0.07250727210393763, 0.12426313333333333, 0.5513189666666667, 0.5936977541430792, 0.10365653333333333, 0.9338344893788785, 0.8164212619931779, 0.25840066666666667, 0.21521292208508275, 0.9324406195854722, 0.9993472228722728, 0.28845357412694483, 0.38266496613421946, 0.990371929712061, 0.09897687230519674, 0.577232835493034, 0.2071349207991026, 0.339929747068714, 0.9179311644253246, 0.0835525225372146, 0.5774634402775196, 0.071298, 0.9993674333333333, 0.9339116981065344, 0.631310322556301, 0.0891337, 0.9996174666666666, 0.7979660333333334, 0.10787830983622174, 0.9999901474338007, 0.5680405073278961, 0.317126091160239, 0.260407310455667, 0.7319257619751939, 0.18350624276054825, 0.6441945307041983, 0.2529453919225965, 0.5925441653011981, 0.13453547704802254, 0.9982243164537052, 0.6639719136944355, 0.7226663844981035, 0.3695022283343677, 0.4541181114193779, 0.26805114033060873, 0.5403386196041255, 0.0672835164247364, 0.8317717185629944, 0.4162941860904816, 0.9999383528530912, 0.28628565930208766, 0.13030181325250573, 0.52414563644287, 0.1437361092991496, 0.9356137335681526, 0.2493555472349075, 0.13982342463053396, 0.9997321491642984, 0.999869044116569, 0.9346128001283757, 0.14739359302050237, 0.31892084166326784, 0.9996272720623377, 0.9409562653365516, 0.9468931740226396, 0.35527560660867474, 0.34994333415796897, 0.06188561857703546, 0.9520987088880123, 0.8024497844289898, 0.22887366332553102, 0.07962588632768809, 0.9995084614304531, 0.06510531735145406, 0.3383010270582071, 0.33005291238904444, 0.22838013455778142, 0.9999971666559, 0.43041816666666666, 0.10608533333333334, 0.9732061666666667, 0.25123200528017725, 0.1208837, 0.45294786666666664, 0.9931442, 0.8799000775742487, 0.5517039, 0.9665956666666666, 0.99961, 0.06207441766448397, 0.03491816708756152, 0.9996072333333333, 0.20315963333333334, 0.08012736666666667, 0.8418144666666667, 0.8491224333333334, 0.2396401, 0.9613506589184339, 0.2820998966265702, 0.9995877, 0.7623130653750053, 0.48181068302330415, 0.29833013114785495, 0.1628734706971453, 0.26392746666666667, 0.7778728595139821, 0.6692011245877163, 0.7071000333333334, 0.09615346666666667, 0.9993249, 0.9994139333333333, 0.4061639190669689, 0.28799716879735754, 0.9605906800170047, 0.7518158630471978, 0.3619610058772006], 'oldestBlock': '0xd0f714'}}), + (('0x400', '0xd0f712', []), {'jsonrpc': '2.0', 'id': 0, 'result': {'baseFeePerGas': ['0x1503951062', '0x1504b837ff', '0x157a2a8830', '0x13f9d54e7f', '0x14199adf2e', '0x12184ca84b', '0x145aa84eec', '0x16e5e9da35', '0x16803653bf', '0x19062fbf1f', '0x19639bb9a7', '0x1644ba97d6', '0x14a96b34b3', '0x1645ce9d83', '0x1504d7bfe4', '0x12757cefd2', '0x14c410a11f', '0x175c46cf24', '0x1a475b0a35', '0x1ad7cf48e7', '0x1846df4434', '0x1b4f4a3678', '0x189d272bc3', '0x1bb00802f4', '0x19cd6da643', '0x1cdbbc1b31', '0x1a83b4fda6', '0x17851afc1c', '0x1784e9f401', '0x15ca16ff33', '0x1845b0f0c9', '0x16b22c1c55', '0x1548480d25', '0x162f34ba34', '0x15c3e2a18c', '0x15178c057d', '0x147e67b290', '0x16bd5161c1', '0x1994d56769', '0x1829ad4102', '0x185c64c308', '0x16721b343b', '0x159f6a9449', '0x16030b5eb7', '0x166ab2cec9', '0x1472fc4838', '0x1407f4edea', '0x13d07e2c93', '0x121d7cce0c', '0x13eef57c16', '0x124126cf96', '0x124757695d', '0x10713ea734', '0x127d5a31d9', '0x148a444528', '0x171b36b563', '0x1834b6710a', '0x18059bdebd', '0x1677c3e785', '0x1945cd4a6f', '0x179fb16c81', '0x15b84d36ad', '0x16932d9bf7', '0x1480f474fb', '0x142a41ac2c', '0x16ae498187', '0x168f8efe7f', '0x15f2862242', '0x18b026d6c1', '0x192c4bf845', '0x170cc74b27', '0x17fd6ecb6f', '0x14fdc0f202', '0x1795f02ce7', '0x16820623fe', '0x158c4907b6', '0x14f00f8ab3', '0x148fccb81f', '0x1569156956', '0x1556b5909e', '0x12e3851c33', '0x1396d4aa1d', '0x14139a6a1f', '0x1509c51975', '0x14baad288b', '0x1282b7da75', '0x14d1e14b83', '0x176acbad11', '0x15bd01e070', '0x159e05cc3b', '0x13a6033be3', '0x1263838ef2', '0x12af954967', '0x11b2409b6a', '0x13e82f3532', '0x1664631ea5', '0x19303d83b9', '0x169680035d', '0x140a97eaaa', '0x15d3697413', '0x1470d48825', '0x121eeb143c', '0x1405d8ae0f', '0x12d3b27c7f', '0x11f2fa097f', '0x10e4a78663', '0x13011da6a5', '0x1560ced2dc', '0x149fd63dd0', '0x12aa94ea40', '0x141e57ba5a', '0x122422d917', '0x120b754667', '0x1070e11630', '0x10ca1789d6', '0xf66d41197', '0x113a517d59', '0x1102383b81', '0xee1f13411', '0x10bd9b2881', '0xf86d653f4', '0x117757294d', '0x12f46cec64', '0x1199f82732', '0x113533ced6', '0xfc9f1a873', '0x117cafae20', '0x13ac153633', '0x125756ffeb', '0x14a219b824', '0x16b790276d', '0x150f793c66', '0x150731b32f', '0x14b274a318', '0x12ac34ad1e', '0x12bfad22e7', '0x15175e738f', '0x17b9996c62', '0x164dc2d2ea', '0x181773d9d0', '0x157132d308', '0x12d8d3014e', '0x1533b770ec', '0x15f95b342c', '0x1877e9d273', '0x1668f1d603', '0x155a102075', '0x16183b35ce', '0x185c882984', '0x17419ae59f', '0x1797380d0a', '0x16d556ce42', '0x18db8549f2', '0x19a910fb40', '0x19247fede9', '0x1876d17b94', '0x18b438e5d8', '0x15dfa62356', '0x189b854260', '0x178ceb7532', '0x16f554fba5', '0x19d37b25af', '0x19e6bf6262', '0x16e771591a', '0x1935f453d9', '0x1c5bab233c', '0x1a7b415f3d', '0x1dc98ebf00', '0x1c137d87ae', '0x1b7cc269ae', '0x1c6aa3b816', '0x1daf855d06', '0x1bb663279b', '0x1a0803a378', '0x1b4da96393', '0x1eaa1064ea', '0x206d22e95d', '0x24781fcba0', '0x263bf237dd', '0x282a936682', '0x2d0433d4de', '0x2985043108', '0x251a74868f', '0x24b7c9c2cd', '0x214f3ad717', '0x1f282bbbb7', '0x230cb84019', '0x20e672eefb', '0x21994224bc', '0x22ec10d449', '0x1ed37d7674', '0x2263f52d87', '0x2576b8a675', '0x21ec48563a', '0x1e5222355c', '0x1d87c3bf5a', '0x21379f0eaa', '0x1f4598bd76', '0x232dd1280e', '0x1ff032280a', '0x23ed889c3f', '0x284b34fab3', '0x24b6f563ae', '0x23a6640c68', '0x23e6232a84', '0x202c706d91', '0x2431f25fee', '0x2299458dcc', '0x2116b4fa53', '0x2334cfdcdd', '0x1f37e61821', '0x1e7c72aa9a', '0x1f2bf70bcc', '0x2167bf8ba0', '0x1f7235de99', '0x235fa670a7', '0x25531b788a', '0x20e40559bf', '0x24f5f890e2', '0x2057397ec6', '0x1d0738e689', '0x200ec289e6', '0x1ec30f45aa', '0x1d2aaf0017', '0x1d9e6f2ecb', '0x1c5ce628b6', '0x1ab909db62', '0x1dd4042e89', '0x1eda1c296c', '0x1f9eb5d695', '0x215ed0203d', '0x20f4d833c9', '0x24cefe84a2', '0x267b7cce82', '0x2294475e4d', '0x214bcd3885', '0x1e30e2430f', '0x1e3283bece', '0x1bc6915e23', '0x1cc2384914', '0x1d41a47529', '0x20e96ce465', '0x1fa5f263bd', '0x1fdfa60a29', '0x1c26492129', '0x19ff5d003a', '0x1892d23798', '0x1a55bb95d4', '0x1d9fbb29a1', '0x21528ae5bd', '0x1dab6d146b', '0x1a07702b23', '0x1cb5853e14', '0x1990da35ee', '0x18d08586c9', '0x16492f98cc', '0x1822251bbd', '0x1adde650aa', '0x1993915529', '0x1cc5213869', '0x1a028ca8b3', '0x193e68df1d', '0x167cec580b', '0x194c3380a4', '0x1a3733700d', '0x18712e131b', '0x1969c82db5', '0x1b6f1f5574', '0x18abb4524f', '0x17f7f72dac', '0x15fe5aa338', '0x18bc83a4bc', '0x1664345d46', '0x193037bb8b', '0x190a835dc5', '0x186dbb0468', '0x1605aea3a3', '0x14cfbf770b', '0x15ea665772', '0x185916c42f', '0x154df3ebaa', '0x16155b9c81', '0x18d73047a1', '0x1aefa14a17', '0x17ce837e77', '0x1850aa2cbe', '0x168b6180e6', '0x18454fe0de', '0x178597fe93', '0x1a7613af06', '0x1dc3fefa06', '0x1ae33b3e29', '0x1e3e790e88', '0x1dcca21335', '0x1eee87c378', '0x1e30f1c7a3', '0x1d830f3fd3', '0x1aaa668edc', '0x1c3a00bb48', '0x18b2c0a3df', '0x1b509202fc', '0x1aa9cf6d15', '0x18f9b862b5', '0x171ed34769', '0x192cda642f', '0x1709856ac2', '0x15033bccd8', '0x1262d4533d', '0x14aea7692e', '0x1744748b21', '0x1a2c9fcaec', '0x17cfbfc33b', '0x188d109d18', '0x16c9fa0e4f', '0x19a2288e29', '0x1773c727b6', '0x15b62e562d', '0x16ecbbf5fd', '0x183e6c8bcc', '0x162197caca', '0x14042feb57', '0x1683d67785', '0x16869a5fec', '0x195718c325', '0x1c81214280', '0x1bb896939b', '0x1a6661d7ec', '0x1db31d433a', '0x1e23fe472d', '0x21e7bd0b12', '0x22305c64fa', '0x20cebb9cab', '0x241468f272', '0x2009941717', '0x1d454dde28', '0x1f15c74ab0', '0x1c0fd406ff', '0x1f9159e758', '0x1dae531f41', '0x1ae4c9fec3', '0x1dc3373a11', '0x217a9df624', '0x220eb637ed', '0x1f6ee466b7', '0x235beef7f6', '0x27c68a8e10', '0x272f080705', '0x225d8308a8', '0x26a7587fca', '0x23a1f517ad', '0x230330e673', '0x1f1c0ac050', '0x212faf4f7f', '0x1e0c3459d7', '0x1b7807955b', '0x1a647414c8', '0x17d8540cba', '0x1ad252a10d', '0x18afccf88f', '0x1bc58a65d6', '0x1e9acc75ee', '0x1b6c5e8697', '0x1d29c02910', '0x20ce12b3d7', '0x1f024e2e97', '0x1ca1348c90', '0x1b9fb88b71', '0x19bd77be3e', '0x188dadbd02', '0x1b9f0b975a', '0x1943d7a197', '0x16844911a7', '0x161fb34894', '0x135bbcdf82', '0x15c68efa10', '0x183b9f0785', '0x1acb685a63', '0x1823dcdd36', '0x1648f627e8', '0x1912112525', '0x1c33d8271e', '0x1a1f99b091', '0x1cf476999f', '0x1a3ccb39b6', '0x1b97686737', '0x1a07e296e3', '0x18a9f81025', '0x16b31ebc05', '0x19879c7a78', '0x1b2a10dec0', '0x1dcfa543e1', '0x1d0624cb50', '0x1dfa4a0861', '0x21b85a8be0', '0x1e0dc05198', '0x203e4cc10e', '0x1e97d34519', '0x1b6f44aad2', '0x1edc0465a5', '0x1b13e117ad', '0x1b652fb00c', '0x1871bf5f00', '0x16edf7dd2d', '0x15a68c831c', '0x17baf7c0a5', '0x180fe18c85', '0x1b11ae5e71', '0x1b4c442678', '0x1a7dc100d5', '0x191f5ec8c7', '0x1b9f0c12f7', '0x18b8ac662f', '0x15a196d96a', '0x185531d49a', '0x16772d1a56', '0x171b716bf3', '0x1438033e75', '0x16beb68195', '0x19966dd992', '0x1cc917d5d4', '0x1c6aeb115e', '0x1b537ee658', '0x1d41b62c8d', '0x19997f66fc', '0x1885ac5ea9', '0x15ef865a14', '0x186570afef', '0x1b71193ece', '0x189aaedfe1', '0x1949925130', '0x185bdab2ba', '0x1b5fc2f9e9', '0x1aec7ede2b', '0x1bc28e98c9', '0x18ca9ff75e', '0x16d9e5bf8d', '0x18f53f3552', '0x16b8929d29', '0x15d48bf615', '0x15abbaa16e', '0x1728f237b4', '0x1979563cf6', '0x1c308cf6ec', '0x19d7118aee', '0x1a361a51e1', '0x17ea288f93', '0x1701d10780', '0x150ca771dc', '0x1730f39fa2', '0x1478035d9e', '0x146c7cbda3', '0x13d96c73ac', '0x144f1a20a5', '0x134c3200c7', '0x15b56bb246', '0x12febe3bfe', '0x1536c61e79', '0x17dd5652ae', '0x1ad8875bb8', '0x1915118932', '0x1760ed6b68', '0x1474cfbdfb', '0x1299ea0bcd', '0x1483fb2476', '0x1713a2d6bd', '0x14cba309bb', '0x1764989e90', '0x199febb0a7', '0x1a845276e3', '0x1965fb6216', '0x178bb2ffd8', '0x1713556f68', '0x1591be120a', '0x15ea95a481', '0x13f11c5ebf', '0x162edc5aad', '0x18ed6f3d61', '0x18b3ad496b', '0x1b80993e59', '0x1a16625439', '0x17a65108e4', '0x17d6eae0be', '0x168f341ab4', '0x1960831ff0', '0x1bac62b105', '0x1912e44987', '0x17f3ac4cb2', '0x15a6aef27b', '0x164eb18821', '0x17ca896c27', '0x15c06642b6', '0x15a5a6cf6e', '0x140fde6a8c', '0x1691193efa', '0x151ce90d40', '0x15b33e684a', '0x1530181510', '0x13dc616acf', '0x13e08a7c14', '0x11a8e7bf80', '0x139cd21606', '0x152386feb9', '0x1678944a8e', '0x1422651075', '0x16a6512683', '0x184cce5558', '0x162dedf1b2', '0x182729915a', '0x17dd7b5e1e', '0x1521b9bf21', '0x128a301df3', '0x127a0529f2', '0x12a7feeff7', '0x14fcb9b7db', '0x154d6ef106', '0x17f718577b', '0x18dc0e752e', '0x1bf6bfe76f', '0x1f7468932a', '0x1ba52f71b7', '0x1a16cc104b', '0x19cf7c911d', '0x18fe6e34ef', '0x1c1db94525', '0x1bbe027ea3', '0x18e37751c1', '0x1bafe1aa99', '0x1f24fbc905', '0x1be4026bdb', '0x19e41aa813', '0x1942a3abfc', '0x170802e5ea', '0x1712ea6d9c', '0x19f4d15975', '0x1782b37772', '0x1943432573', '0x161adac0c5', '0x17dc4c77b2', '0x17a5c6fa48', '0x1a99c68fdf', '0x1b7b154cdd', '0x1aa4d560ae', '0x181e39c20d', '0x1b21b32214', '0x1e854c12f6', '0x1aec9f78e8', '0x17fa0e8472', '0x16b8efcd7b', '0x13e1d1d3cc', '0x165e066fbf', '0x18deb47fbd', '0x17b947002a', '0x1a2bdde25e', '0x1a8732e946', '0x1a6f1149fe', '0x17635253ee', '0x179a497f91', '0x1a482c16f6', '0x1d90e5413d', '0x1be6f9181b', '0x1f50e6c017', '0x1e442b7d27', '0x1cf48e31bf', '0x1aff88858e', '0x193c388ba7', '0x17d1c37f2a', '0x15f8f3e24b', '0x1735ea054c', '0x14beeb5116', '0x175696cad4', '0x1a3b04a2c4', '0x19a4ff071f', '0x16ecdde9f3', '0x1660bb5556', '0x158b92dd78', '0x13b71dd04a', '0x121739c44a', '0x1456d8d122', '0x142633d92a', '0x1535b9c2c7', '0x13c1aba9a1', '0x114976346d', '0x132876f98e', '0x158d3cae0a', '0x136a6dccc1', '0x15d7467746', '0x17cc97f372', '0x164bc4132d', '0x13af5bc0bf', '0x1624d18e50', '0x168ef456e3', '0x1507ebf786', '0x15424fc732', '0x1471e60c67', '0x16ffd3f107', '0x1546f62668', '0x1797230827', '0x198edc62a3', '0x16ab572234', '0x168edd327c', '0x13eefe5165', '0x166cccc138', '0x1630e130d0', '0x14627a33a9', '0x12d5ee17fa', '0x153073a5f8', '0x17d5e6814a', '0x1ad09fffac', '0x18761f15cd', '0x1b846a27a7', '0x1a52986235', '0x1ab37cf5bb', '0x18efacdfce', '0x18dc728f86', '0x1931d195a8', '0x177736b4c2', '0x1a6618c05b', '0x19d9751809', '0x16fcb9fc69', '0x19dbdc91e8', '0x1d174615f0', '0x20b8e40268', '0x1cc96761da', '0x1d12881a2b', '0x19ab0be0e8', '0x167a0d7895', '0x19486e0a4b', '0x1c70d984bb', '0x1ac2d24b26', '0x1e1a8aff94', '0x21ac0c64f6', '0x1f651bf5ce', '0x20fc61dce7', '0x217d352f82', '0x2010eaa5d0', '0x1dbe73e545', '0x217573a2af', '0x2017338fc7', '0x23e135ffdf', '0x22ad0e54bf', '0x20548f3224', '0x245b7f45d0', '0x20c9fc23a5', '0x24e2423549', '0x296cb0ef40', '0x277d5098c0', '0x2c21d88895', '0x2feb14f679', '0x334b3538ce', '0x2ed9abb7c7', '0x30b3f06fb4', '0x3196f86622', '0x31d0df2422', '0x380aea47ba', '0x3c2321ec7c', '0x34bbbf2b20', '0x2e49734911', '0x33beaa8dde', '0x2eb55f026c', '0x2b04894013', '0x2dfcf87ba1', '0x29553a4b5b', '0x29af6bb10b', '0x29f2447098', '0x2972569326', '0x2a153a0386', '0x28c57f3eee', '0x29172b1aad', '0x2b5b81287c', '0x30c5cc5845', '0x36dd74c8e0', '0x310de08b3a', '0x372d8c7158', '0x35d57faa58', '0x31b6dead63', '0x37eb425e34', '0x30edda126e', '0x2cbecbefcc', '0x2b01867eed', '0x306050af44', '0x366c3ad9a8', '0x3d3795ac54', '0x4114f9c8c0', '0x4051adeb07', '0x4859dd65b4', '0x4882d6a64f', '0x3fd6ccfd69', '0x3db6420498', '0x364f91189f', '0x3ca384d078', '0x43b3ad8e91', '0x4c293a4c2a', '0x497aad833d', '0x4c5acf4472', '0x5060245522', '0x5054be23cf', '0x47eec1292d', '0x45968cc6b9', '0x3ce3bb2de2', '0x447f6e6b66', '0x4449bb3fea', '0x4985f87bcf', '0x42806cb7be', '0x4acf7a8dbe', '0x53d1f95a4e', '0x5d5882e556', '0x5237ce1548', '0x4fd6c2534c', '0x497d974718', '0x45afeaf1cc', '0x4e659672d8', '0x5832489ca0', '0x4e61993de3', '0x5675aff565', '0x4f6f53d93e', '0x4581695e17', '0x43bc88435d', '0x49f9d11209', '0x46036ed1d2', '0x4451cb3625', '0x3f889db51e', '0x475e2af6ec', '0x5040e9e3dc', '0x4dd94ed239', '0x4a58c8bd4e', '0x51f8b79080', '0x4866198ae0', '0x516fff1d10', '0x5b9daa025a', '0x5c31d03f67', '0x5289488a2c', '0x5cd9a166ed', '0x57b3de707e', '0x4ffed724bc', '0x59fe76aa03', '0x5077f1982a', '0x53c15af3a8', '0x4e2583adbb', '0x4d2ac0b42b', '0x4974a335d5', '0x52a0697bfe', '0x5cf4277cf4', '0x54132f160b', '0x5e375ce429', '0x5a0a8ee37b', '0x558861dee0', '0x587ade4e29', '0x500b5fca7e', '0x464a6e0297', '0x4f12e9a300', '0x527b1df4c9', '0x5150f15b33', '0x5668bae2d6', '0x4e54a8169f', '0x517a843d48', '0x5ba389ab96', '0x5dff8d5864', '0x699892b8ec', '0x606e74c850', '0x5ba3012ce0', '0x6716471ce4', '0x705b98715b', '0x77b59bbee1', '0x726ee263ee', '0x7b8292f983', '0x8a51452d81', '0x80c63dbacc', '0x895a56ae1b', '0x79e13d59bb', '0x88f3ca76b4', '0x884e49eb07', '0x793a8c3c5d', '0x76b661d3f1', '0x706bc7da8d', '0x6b896a12cc', '0x6614297ad2', '0x5bb08e8727', '0x572f75bb25', '0x504c6ff2f5', '0x476a88c507', '0x42b842e0e6', '0x40a552f37d', '0x3b650bacd8', '0x3814385265', '0x3294585928', '0x36e41709e0', '0x3953c8dd9b', '0x3624cf1440', '0x39c515e42f', '0x40fbb39635', '0x3f4951073f', '0x448fa439fa', '0x3dddb5b12b', '0x3e42753d84', '0x40ee03dbe1', '0x3becc19478', '0x41593fc9d0', '0x3a10f6bba3', '0x350d55de3a', '0x37447a2340', '0x37d544325c', '0x3350f25634', '0x2faa282550', '0x359e03f067', '0x32c43162d4', '0x3120115328', '0x2ff966c066', '0x2be76f396a', '0x2a66ed36c6', '0x2757fa699c', '0x291718ec66', '0x2a1c7ee3b3', '0x260bc82496', '0x269440cc22', '0x24a5f33f43', '0x21292bc31d', '0x213e521774', '0x1f80987abe', '0x1d79d2f6ba', '0x1fa46ec102', '0x1d5b97b5be', '0x1ab806e90e', '0x1e0ec37553', '0x1d4d208090', '0x1a863cd025', '0x19633d472c', '0x1c2a7cfb0a', '0x1faf23265b', '0x1fe2c9b253', '0x1d6505a674', '0x211145bb29', '0x24c2367a85', '0x2508e44c85', '0x23350b0a29', '0x228158067d', '0x1ed593b03d', '0x2086bfde61', '0x1ebbd58842', '0x1f811fd227', '0x214deb1b8d', '0x1db9ef3f3b', '0x1f3952cd4a', '0x1bdf1d3728', '0x1a57726e88', '0x1a8f8a1609', '0x1aa3d8e8a2', '0x1c04164fb3', '0x18b0b6f489', '0x1bc60970db', '0x1a5e66ea26', '0x18b2082736', '0x181b15cf3d', '0x1517b31556', '0x178dec001e', '0x1a7f2bb480', '0x1a953e287c', '0x1784a5d44b', '0x190525f486', '0x16cdb6a508', '0x190732657a', '0x1bbfb82645', '0x1950d4895c', '0x18bdb282bc', '0x17bb8b4da4', '0x157d377479', '0x1803d0aa1d', '0x16f2c30985', '0x18b8d8b281', '0x16ae7faab6', '0x1692c8045a', '0x16a272ba0f', '0x176346a7d9', '0x1a4f19f665', '0x1b1f19d53a', '0x1844c50021', '0x1b4ca55799', '0x1b172479d6', '0x1a4478c6b2', '0x180f17bf04', '0x19c47475df', '0x17d71a3c93', '0x1aad2e683e', '0x1b17e03e77', '0x1aa5addb29', '0x1804115e8c', '0x15dcc6495a', '0x18983a7a19', '0x1a1bda6612', '0x1d3efd7257', '0x20e67c1c9d', '0x1feca3c092', '0x1cf66b1e2b', '0x20702373c4', '0x247df769f6', '0x24015e17f4', '0x253be05e7d', '0x253dfa8bde', '0x22d63dfbbb', '0x272fae9c27', '0x2c1421c2ec', '0x30916764b4', '0x2b53fdfb74', '0x2c93dcbc3e', '0x2b097e429e', '0x274642f7b8', '0x28b6a61347', '0x25e626cbe8', '0x26ad0d6971', '0x243748a49b', '0x25c5a1327b', '0x2524a33569', '0x2264aa88db', '0x2008527b7d', '0x23e12dca99', '0x20ec25b1a2', '0x2036572f91', '0x1ce0968b78', '0x2058db514d', '0x1d525eac50', '0x1ebdfa86e6', '0x229560ca17', '0x22ae5ac1c8', '0x21253c4a8a', '0x1db57b631e', '0x1cb804bdb6', '0x204ebe6b1e', '0x1f954a4f97', '0x1c5cd801dc', '0x1fe7088d2f', '0x1c5d5c2bb7', '0x1a953a815b', '0x19db026240', '0x1b73b0f0cd', '0x1eb384e42e', '0x2288bab7e7', '0x26d8fc1bc3', '0x232a495e50', '0x252ccca432', '0x215b6af47e', '0x1edd497143', '0x22b86961a1', '0x2325c81595', '0x20a24bae8b', '0x24923487dd', '0x26a12d7bd1', '0x2432b10722', '0x1fac5ae63e', '0x212d962469', '0x1f213f3901', '0x1f2f0bbc40', '0x1d2bc692a3', '0x1c36d19175', '0x1baed5d8f6', '0x1b682bb16a', '0x1ead3d112d', '0x1b6dc7e0ca', '0x19cec5b4be', '0x17b6f2b90f', '0x1aadab5ca2', '0x1c3ea9b6f2', '0x1bc6bfc6dc', '0x19aa13cdff', '0x1b6c747226', '0x1c419aafa4', '0x191dd550af', '0x16ec0509c8', '0x198d7e6ddf', '0x173bea6c25', '0x16d771d545', '0x162cf434ee', '0x17548becf8', '0x182840426f', '0x15864633b7', '0x1836f8aa70', '0x15a507a6c8', '0x1743b06549', '0x16c3fa9c99', '0x16e184f28d', '0x1727019977', '0x16307adf96', '0x1839b26aac', '0x17d7454d1e', '0x15b1556860', '0x140a6e700d', '0x12757610d3', '0x14c377ab94', '0x172f2304b5', '0x1a14e6f820', '0x1aa2513fdf', '0x1801ac055f', '0x19551bab40', '0x169a74c610', '0x14dc535c22', '0x1415abbd10', '0x168f8f3e02', '0x193d39b6a9', '0x17d2a68c58', '0x1acce7e0c6', '0x1e26520263', '0x1b1940b496', '0x18c32bbdb5', '0x18c5eb2e14', '0x166d5dfaf1', '0x17175b65ec', '0x160ff9e2ea', '0x149473545d', '0x1448a0e60c', '0x12a82ef4f3', '0x14d8c11cf5', '0x12f2dd624c', '0x155126ffb2', '0x12c4f2a770', '0x12f0416b4e', '0x154e234f98', '0x16433a4646', '0x14796f5f22', '0x130e3dc5be', '0x1318926230', '0x1475e48929', '0x122da3ee6d', '0x137f217fb1', '0x15ee588bff', '0x18ab3374c4', '0x16fe0af875', '0x1757f1dbf2'], 'gasUsedRatio': [0.5008456424365059, 0.5873091666472399, 0.2203919257610339, 0.524851585975797, 0.10097556452484993, 0.9994133202945221, 0.9999415427469663, 0.4306019839742719, 0.9485767333333334, 0.5583322333333334, 0.008352266666666667, 0.21139823333333332, 0.81185905296811, 0.2748332666666667, 0.012823722364889314, 0.9999076665804888, 0.9997768843308763, 0.9996952660876722, 0.5858905577291039, 0.11760432851045902, 0.9997159656958616, 0.10514474857622796, 0.9995138062539901, 0.22765188514065252, 0.9737355, 0.1751221734690592, 0.04824120337840821, 0.4998727609470383, 0.2058094124491799, 0.955784228508769, 0.24023886574708647, 0.2508570571659785, 0.669539343960798, 0.4244114691658293, 0.3762800666666667, 0.3865520319408098, 0.9383289365356405, 0.999897599894716, 0.27818533333333334, 0.5327963, 0.1855315, 0.35333376666666666, 0.5719931846781716, 0.5735781628123539, 0.14890088325164982, 0.41822042511082436, 0.45673607221570395, 0.15696917864438567, 0.9014858208764925, 0.16309168779291186, 0.505298203289899, 0.09815139153640616, 0.9980538, 0.9435877865264569, 0.9997441666666667, 0.6903559, 0.46959433333333334, 0.24122346666666666, 0.9993504666666667, 0.23902826666666666, 0.17763479370939056, 0.6574565991119063, 0.13301131310970105, 0.4339309419840518, 0.9990302609596609, 0.4788308194601979, 0.39124194478476515, 0.9995103427690792, 0.5785709063928702, 0.16263610314422156, 0.6631339333333334, 0, 0.9943914666666667, 0.31721295845393027, 0.3294080598266523, 0.3867175600591063, 0.42816422730524667, 0.665115670905278, 0.48659068032162667, 0.04074855465083591, 0.6483280066327451, 0.5995227699734557, 0.6915842365322511, 0.44125740905321426, 0.07189157204742454, 0.9990056971828087, 0.9990097666666666, 0.21322573333333333, 0.47772890227306963, 0.13570079332074042, 0.24354041118257022, 0.5646364539880474, 0.28816649916389864, 0.9996913970103317, 0.9993561694753061, 0.9995147981724064, 0.08702516666666667, 0.04904859595394903, 0.8561525657423947, 0.2461567243715939, 0.04601093333333333, 0.9198634800215744, 0.2610937436874941, 0.3134982282451317, 0.26468013622559217, 0.9998886666666666, 0.9996321258957295, 0.3589601333333333, 0.1202494902939387, 0.8111893957798554, 0.1068560148593245, 0.4787447762817416, 0.14447876666666667, 0.5847852333333333, 0.16937556666666667, 0.9742686, 0.44912053333333335, 0, 0.9993922333333334, 0.20994173333333332, 0.9996463453437718, 0.8409134333333333, 0.2144058005976169, 0.41054801709924554, 0.1701550872219362, 0.9302308756962042, 0.9998309698841839, 0.22935868976538, 0.9998663723585496, 0.903977651734457, 0.2083071568702778, 0.4938573843317222, 0.43703474616421056, 0.10875403333333333, 0.5162926264163622, 0.999777566459062, 0.9994882331153213, 0.2603804527101784, 0.8206379181178225, 0.060107512739391925, 0.015867906740393553, 0.999825318684643, 0.6456521661366539, 0.9540562607983913, 0.1634891491563788, 0.3111317489673127, 0.6391629, 0.9103796476074446, 0.3185358, 0.5575207, 0.37158613333333335, 0.8545946783700951, 0.6292024872556548, 0.4192782498706986, 0.3920646689651556, 0.5392181043266064, 0.04171548486054044, 0.9999396, 0.3281769, 0.3994262333333333, 0.9996478227655973, 0.5116564207771184, 0.03712318667753774, 0.9028429154015393, 0.9993615086333802, 0.2352974666761556, 0.999348201301333, 0.27021103333333335, 0.41611483613748823, 0.6352213928733, 0.6786377898637391, 0.2341234370304158, 0.2573444438924229, 0.6954662473054924, 0.9923857, 0.7298439, 0.9987210333333333, 0.6935801, 0.7021382666666667, 0.983002168283996, 0.18928484333252044, 0.07453778905294665, 0.4584492224385486, 0.12869023333333332, 0.2415062, 0.999763031399838, 0.2546916410231621, 0.5849203906615633, 0.6575617666666667, 0.030842083961655224, 0.962507144780421, 0.8574590376273128, 0.12195179837508358, 0.07525613333333334, 0.3957147487855224, 0.9994106161500994, 0.2657352518370431, 0.999760565718181, 0.13151767689507415, 0.9996639767551136, 0.9860751958443034, 0.14469994541328662, 0.38400087670166005, 0.527939436082936, 0.08490361676353919, 0.9999770327826104, 0.32357978465276016, 0.3254249102372945, 0.7559904493475759, 0.04690582148297355, 0.406179547757682, 0.5899574755450954, 0.7866093767760312, 0.2654104011072405, 0.9995843215132487, 0.7206168051831694, 0.02482526012289935, 0.9949868901190756, 0, 0.09029867411959, 0.9174482318251416, 0.3383282740821471, 0.29257246068237935, 0.5620091697717047, 0.33037886940679667, 0.26870051403674666, 0.9648287103124565, 0.6372933843026479, 0.5995682555798716, 0.7214298576906947, 0.4503824082965547, 0.96754431302278, 0.6818926363187304, 0.09429122119748629, 0.3515739627928946, 0.1269656, 0.500844, 0.1792209425837664, 0.6415650778028764, 0.5692305038431565, 0.9997743995713592, 0.3464274446118082, 0.5284878307155204, 0.032645103771627014, 0.19419897290546623, 0.28090323610902435, 0.7867108014328291, 0.9995738511851029, 0.9993908413316511, 0.061520750730471176, 0.009184647067082996, 0.9118488407860552, 0.06205681962543711, 0.3824536987403065, 0.09239136539605913, 0.8315993802563072, 0.9530516645382152, 0.3078878852107167, 0.9994600120702398, 0.11625641895881048, 0.3821726586476421, 0.06332917672387856, 0.9997655421037286, 0.6451466625657758, 0.22939510864718796, 0.6589226899598567, 0.8180803845610896, 0.09709201878372886, 0.3861638545505188, 0.17039483237434883, 0.9988390612102543, 0.120808, 0.9996424333333334, 0.4766108666666667, 0.4021715538556734, 0.10596424927887566, 0.2800980870681528, 0.7122111379303429, 0.9439535039214768, 0, 0.6462462540015819, 0.9994063400081646, 0.8374276047900188, 0.03529038879598523, 0.5854218100322689, 0.20871756048927737, 0.8062914216086094, 0.37657578054591523, 0.9998564799646967, 0.9995036973876648, 0.11324673393781809, 0.9993244314192223, 0.4411868666666667, 0.6520047826702775, 0.4042317873977863, 0.41000846961209686, 0.11421405034002897, 0.7341510630406273, 0, 0.9237508, 0.4046072666666667, 0.24679049091437788, 0.20289913931321535, 0.855494717569934, 0.16029826786040696, 0.1484709022130887, 0, 0.9995503045051902, 0.999977, 0.9997394666666667, 0.13891416666666667, 0.6242280746184684, 0.21291426666666666, 0.9992694467186126, 0.15963608764821807, 0.2031223, 0.7234927, 0.7301618969076696, 0.15143787972328374, 0.11775880530689398, 0.9993186320387342, 0.5019190442595702, 0.9997698993480482, 0.9994734793222999, 0.3900709, 0.3093697996093185, 0.9999611332970577, 0.5593856288264693, 0.9996091326037142, 0.5334675647291628, 0.3383850666666667, 0.8989540047476972, 0.05184688345198734, 0.15456683333333332, 0.7479409643516894, 0.11097170357359, 0.9997463333333333, 0.2609179469581287, 0.1243721143675962, 0.9266952445657513, 0.9994746656510203, 0.5691174101112999, 0.19178033878197998, 0.9995922673332929, 0.9996093651692332, 0.44048249069738166, 0.008118572302480385, 0.9991564863089203, 0.1873729, 0.4303805666666667, 0.05411012812655109, 0.7670215747875223, 0.12169956666666666, 0.1567044552338692, 0.34324515369547676, 0.11392459229857325, 0.9993141653635809, 0.1816216653040001, 0.999851142470683, 0.9080477450244873, 0.08419892217891027, 0.7537652195425278, 0.9995197277365089, 0.2810127846350589, 0.1930830457853297, 0.35947485184541356, 0.22722162571211407, 0.3155911157388245, 0.9997815525226046, 0.15877578487204838, 0.06488927609779736, 0.4302011666666667, 0, 0.9994781429267654, 0.9513811530017813, 0.9228410463614501, 0.10372969708642446, 0.19261375329622502, 0.999989613037555, 0.9997002226516271, 0.20512162261552142, 0.9335563689218377, 0.12459473682384178, 0.7064163015128543, 0.27375073333333333, 0.2899626847716538, 0.18143717538926954, 0.9986929750464097, 0.7561074333333333, 0.8897459, 0.3943861514101854, 0.6314351226727811, 0.9993632212201516, 0.06507692364615493, 0.7914305690020449, 0.2952705488100232, 0.08704030333099169, 0.9993395422043887, 0.009804656073300066, 0.5469177132274541, 0.06913236831753879, 0.25212849539480725, 0.2768850907244217, 0.8842412, 0.5559102666666667, 0.9998798333333333, 0.5338169, 0.38179483333333336, 0.29333743333333334, 0.8978479485217314, 0.08004877471218973, 0, 0.9995714658667363, 0.19304637013365977, 0.6142492353893351, 0, 0.9997671250433775, 0.9999155193382654, 0.9999147005546071, 0.4488811600319362, 0.34636389165624726, 0.7825909334263149, 0, 0.33164753966802907, 0.07809304578950986, 0.9486956067534521, 0.9993457031230488, 0.08638843333333333, 0.6110635, 0.35311523333333333, 0.9951413221677635, 0.4342066385928627, 0.6242287, 0.07226423268988834, 0.18693444182607394, 0.8687924156265278, 0.14147624114817042, 0.34318875398318893, 0.4707847495829488, 0.7748635337014704, 0.8996600333333333, 0.9264240530878403, 0.16660963311114182, 0.5574653371181885, 0.14951691741547643, 0.348196075039819, 0.1596413856505927, 0.9070015, 0.030440166666666667, 0.49120162505353143, 0.38749049499112864, 0.5926341937487765, 0.30080657524144655, 0.9997578630932504, 0, 0.9672513333333334, 0.9997912333333333, 0.9996885707773027, 0.23723776266317056, 0.2283062283947149, 0, 0.13726228698010587, 0.9116552777796351, 0.9993582885912772, 0.10458009723926555, 0.9996278103652189, 0.8816082664991304, 0.639270847294358, 0.3312748425229815, 0.20822265400105056, 0.420125088592086, 0.2389067232404009, 0.5643580024057743, 0.13962847934956304, 0.9495494480512968, 0.9948695181230401, 0.46379646079592435, 0.9534840516925368, 0.2942137990518919, 0.12621643402899196, 0.5321099497081277, 0.2852083208853994, 0.9995900985561893, 0.861962412385386, 0.12424757070181135, 0.3210166301792705, 0.1157723, 0.6212482, 0.7660575552026554, 0.15708286956691928, 0.48078596692988146, 0.20710335582137054, 0.9994129151316186, 0.2423009136844257, 0.6112569204376228, 0.4055668975322147, 0.24947813056513782, 0.5032730986897318, 0.05379296741797661, 0.9423144068306577, 0.8112691753661567, 0.7520929252946958, 0.08405824379350231, 0.9997073284123894, 0.7914562941715508, 0.15092849429740052, 0.8559275666666667, 0.45233476666666667, 0.041855533333333333, 0.009374287324906104, 0.48637408728248144, 0.5388799, 0.9997739459248622, 0.5600871227479812, 0.9999872, 0.6492797666666666, 0.9994884333333334, 0.9993379666666666, 0.015562, 0.2748323928350632, 0.45729137538166287, 0.37344289464808866, 0.9996807660601221, 0.44680875768852246, 0.08854257590857283, 0.9497648785445404, 0.9995015932783393, 0.08210169425342967, 0.21321868175623956, 0.4025574849058244, 0.1470327215718966, 0.5073978245377835, 0.9996868548018257, 0.12309471742659979, 0.7981116395538423, 0, 0.8176926768989918, 0.46429680498311404, 0.9995217658754177, 0.63234358810569, 0.37818212599814743, 0.1208041796386483, 0.999803, 0.9996458, 0.028662889311412594, 0.06210212749300818, 0.2907350846811669, 0, 0.9999827497890603, 0.9475564604050829, 0.31564860238622366, 0.9126861682074392, 0.5545277333333334, 0.4857867, 0.03909374170544203, 0.5367212676065164, 0.9540565933829256, 0.9998226996690394, 0.27490903333333333, 0.9893919333333333, 0.365917514880053, 0.3267387333333333, 0.22963593333333332, 0.23880619424868385, 0.27557595720422673, 0.18984629543069714, 0.7253967207405454, 0.07522446666666667, 0.9998530435030193, 0.9957188333333333, 0.4106349816071273, 0.07585391730737863, 0.4044891739944626, 0.35116560690305165, 0.16026581028349138, 0.17039333333333334, 0.9971653680181303, 0.46263041387606674, 0.7105563666666667, 0.22591243333333333, 0, 0.9329518608254294, 0.9997668997824398, 0.10356379337043338, 0.9996320146579604, 0.8586432632354162, 0.24734723415049675, 0.03158029430155265, 0.999635131958997, 0.574891, 0.2291527, 0.5433809333333334, 0.34682023333333334, 0.9997645666666667, 0.20048963333333333, 0.9348665028599572, 0.8336397290906811, 0.04789164676885542, 0.48037246666666666, 0.034624110443848416, 0.9999468666170755, 0.4582496, 0.174415, 0.19604366997706593, 0.9998178664966754, 0.9995518, 0.9999915, 0.14892265630721732, 0.999698544872828, 0.3263478608223585, 0.5575151592788026, 0.23560756666666666, 0.48795188501571785, 0.5536550500780467, 0.22550856666666666, 0.9999875333333333, 0.4167580357780627, 0.057092188522448906, 0.9996902355189101, 0.9999573832305507, 0.9993058431687758, 0.018920866666666668, 0.5396926431994176, 0.03161892224414873, 0.002670515709309245, 0.9993887061430975, 0.9996082500451775, 0.26374832209643234, 0.9996314390436848, 0.974145389293042, 0.22949609189561448, 0.7026962911454189, 0.5610230446729129, 0.33003273736356986, 0.21033259594235518, 0.9995757511856611, 0.33643580057484884, 0.972299813096785, 0.3658038513659633, 0.22941631093149634, 0.9982446233861992, 0.1074079925500162, 0.9995356636020465, 0.9924383333333333, 0.31314822257267555, 0.970271634916132, 0.8431578253356714, 0.7817706574864263, 0.1534859090629575, 0.6581729031861591, 0.5728367696655438, 0.5182438494508815, 0.999979473258403, 0.792248848296013, 0.0075363564030729935, 0.011014110557919617, 0.9716559348333076, 0.11068088026249408, 0.1839322, 0.7762068326387384, 0.09509185541906506, 0.5340954426888656, 0.5250563350222985, 0.4523464424259362, 0.5614074239877013, 0.3753467, 0.5312991803162455, 0.7206775773428117, 0.9995875968897064, 0.9996581993505788, 0.07635293704694006, 0.999342798137928, 0.402573720530306, 0.19390008861656988, 0.9992238724955407, 0, 0.1579697, 0.34451184915403227, 0.9994910328582973, 0.9999596939368437, 0.9993758476972193, 0.7525312098690692, 0.4531128504864097, 0.9995082, 0.508848690746514, 0.02161675350896994, 0.36671980704690527, 0.020278471862429873, 0.966053653561311, 0.9659147318555547, 0.9997899853571452, 0.3591492184235813, 0.6565348921175975, 0.7106394455037355, 0.4977839985308292, 0.08181082228638686, 0.36962526533068935, 0, 0.9998033405480726, 0.48775054201923224, 0.8066604888269867, 0.11798984920358825, 0.9997652694476514, 0.9817372455237287, 0.9545699, 0.023159466666666666, 0.38425472473870737, 0.18194386981427849, 0.29298514010878035, 0.9999282998661597, 0.9999994661443601, 0.05484923842192722, 0.9122655453907861, 0.17500040829818211, 0, 0.3981916847739746, 0.8684510666666667, 0.2857443, 0.40322408501431684, 0.2197959458027476, 0.9932306498525425, 0.9980240295789895, 0.3801443999475754, 0.32005921837740214, 0.9102253777274336, 0.032875803337137216, 0.9993815270236589, 0.9999362663628697, 0.5252667333333333, 0.0809593, 0.9998460333333333, 0.2782445, 0.14848743131000755, 0.9999546999577199, 0.07661763333333334, 0.663381308152589, 0.23213615773161914, 0.4498615, 0.30761788886848007, 0.9994032994430795, 0.9999414761301522, 0.11792644367783615, 0.982489753344789, 0.3227474408435354, 0.299714029727001, 0.6378284435392844, 0.11864698821091922, 0.01258623571653038, 0.9998175436627734, 0.6723476039876706, 0.4435145505839571, 0.7505242462558701, 0.12603884236334992, 0.6607487467547879, 0.9987931345738528, 0.602988279029961, 0.9935299640197305, 0.1528459290857911, 0.3011133584290022, 0.9998120329002542, 0.8597260649500873, 0.7617215087733009, 0.3236975390054963, 0.8172826430417488, 0.9795530415971723, 0.2240237848978897, 0.766466225723284, 0.04939300210664337, 0.9946664, 0.48111771144522625, 0.05755040890153639, 0.41697437834729645, 0.288011686824368, 0.3262160030707377, 0.2969804414445841, 0.09289931272693057, 0.3034987096274507, 0.184038479588207, 0.05752973897409781, 0.23695703333333334, 0.3756606333333333, 0.1750856, 0.27669896666666666, 0.10773103333333334, 0.8409686333333334, 0.6775379, 0.2778719753172306, 0.7678852632261683, 0.999453734596586, 0.3955535494153415, 0.833386485337254, 0.10939680995762821, 0.5254451526194653, 0.6715490961682622, 0.19167182283219497, 0.8620402737687795, 0.054245295555606, 0.15458956645974883, 0.667035614868091, 0.5409342229906303, 0.176401535159567, 0.21537075241279552, 0.9995374474385739, 0.28731700785611725, 0.3706928276756641, 0.40627712589353676, 0.16063582752188071, 0.36315758008724375, 0.21148641691350017, 0.6775695600173806, 0.5993995191562091, 0.11385305591699177, 0.5560469666666666, 0.29980142275598787, 0.11936304473884175, 0.5099654906026981, 0.2905014089359633, 0.2426918416081013, 0.7939949565192116, 0.21120553357903396, 0.1404458529163377, 0.9998439428357392, 0.3993411313847623, 0.12091594272299981, 0.3285784847596949, 0.9377427863733497, 0.999632797576464, 0.5254714333333333, 0.18747647077371052, 0.9997993664794087, 0.9465020426465508, 0.5300435227479091, 0.3026140666666667, 0.42024923333333336, 0.07444566285644598, 0.7195063577106751, 0.27954644733405415, 0.6003021405740671, 0.7285366333333333, 0.07025915859829543, 0.7015201781361722, 0.07053692221448236, 0.28042839002095576, 0.5332722239995642, 0.5119466333333333, 0.706596891864906, 0.025174490162857485, 0.9995145333333333, 0.2976748127880208, 0.24616613270211002, 0.4044948468963463, 0, 0.9668573333333333, 0.9996740333333334, 0.5130157734305784, 0.03882907086810184, 0.7554545666666667, 0.1456383, 0.8902098767220475, 0.9348375666666666, 0.1492602860026149, 0.40918884857625865, 0.33696526107835334, 0.12187582348326281, 0.9701494373533207, 0.3223412854955503, 0.8091765217469719, 0.16986225540559208, 0.4809059581818902, 0.5108443869362729, 0.6331121180556447, 0.9996097841510772, 0.6235315972651738, 0.07924772453397941, 0.9995364973889352, 0.4693769666666667, 0.37849090363260274, 0.16368865781891045, 0.7840432396849127, 0.20083783333333333, 0.9758751754421526, 0.5624933916604988, 0.43414136666666664, 0.1050173160758147, 0.1413225710802534, 0.9998978334689548, 0.746258317890804, 0.9806430611710497, 0.9997974994262484, 0.3813437316532803, 0.12889775647814128, 0.9799944885971718, 0.9999087995683179, 0.4466498010064075, 0.6364853411822922, 0.5008821998300064, 0.24166646972091582, 0.9993988423151748, 0.9993976954425622, 0.9073940333333333, 0.06844906666666667, 0.6153517333333334, 0.3617687333333333, 0.1502901, 0.6465596, 0.22348786923764388, 0.5820027765359248, 0.2455750665892532, 0.6718622469683292, 0.43340297480388146, 0.2038602442706921, 0.22544378461306439, 0.9803989819698529, 0.17032470263933067, 0.41371452491541794, 0.0858757, 0.9806265818571835, 0.12589045083108744, 0.6937601333333333, 0.9998231606497078, 0.5112844771988454, 0.32288653599170436, 0.08527796666666666, 0.36669433333333334, 0.9998492527953546, 0.41030864983839455, 0.0921252198099772, 0.9992200100128885, 0.05642480325753371, 0.24873494601623639, 0.390543441036043, 0.7469746164280798, 0.9734573058548672, 0.9993741643093522, 0.9996218678217742, 0.12083473333333333, 0.7286142415264827, 0.08919735289077446, 0.20108926666666666, 0.999728568280259, 0.5492191126045051, 0.21393573333333332, 0.9825826666666667, 0.7251488666666667, 0.2482152, 0, 0.6900417107055966, 0.2530656666666667, 0.5069260466178557, 0.24181775902990843, 0.3687924850113724, 0.4246924, 0.4601149666666667, 0.9772220666666667, 0.07650196666666667, 0.2635879, 0.17559096666666665, 0.9999029666666667, 0.7348538666666666, 0.4336637059421859, 0.19585664946620618, 0.77419918374964, 0.6214447666666667, 0.05553499659083762, 0.15049570712932667, 0.9590810666666667, 0.13703816666666666, 0.4324327666666667, 0.3833742, 0.7082755333333334, 0.6417850333333334, 0.06406892997678901, 0.9999367332742843, 0.0754512, 0.7993372194614707, 0.4142264866113875, 0.5202748666666667, 0.5474514333333333, 0.3336250848954004, 0.8670231870626922, 0.436516580406795, 0.13957876519965387, 0.19538856817510253, 0.18426030516094097, 0.9994274576928477, 0.9663140792051403, 0.9999146332787935, 0.5847190224248738, 0.10538919363806232, 0.7209269158682479, 0.06907306426666825, 0.19160362661389, 0.35120400141476305, 0.9931382847132608, 0.9748740957757166, 0.27553801973183895, 0.9999500357047659, 0.9998841532101823, 0.09521369514537488, 0.1551477, 0.501733843097785, 0.1212177464698967, 0.6184316423683055, 0.3217797339888368, 0.23121301110296277, 0.44243317214621536, 0.17920286666666665, 0.9694718225680711, 0.13581642676199832, 0.9999418333333333, 0.021945196150707832, 0.5360525669823959, 0.9998765793645569, 0.6797458770311752, 0.17869850528423675, 0.22282876468149992, 0.5084706857090147, 0.7858265528075673, 0.0538263993526187, 0.7900873054244362, 0.9994579782901132, 0.9993316254580296, 0.22817451300667516, 0.5610949552632033], 'oldestBlock': '0xd0f313'}}), + (('0x1', 'latest', [55]), {'jsonrpc': '2.0', 'id': 0, 'result': {'baseFeePerGas': ['0x110aed4e24', '0x1257071f07'], 'gasUsedRatio': [0.8044752714346831], 'oldestBlock': '0xd1b5d8', 'reward': [['0x77359400']]}}), + (('0x1', 'latest', [0]), {'jsonrpc': '2.0', 'id': 0, 'result': {'baseFeePerGas': ['0xe737dc7c7', '0xf5d01f66d'], 'gasUsedRatio': [0.7524847799812623], 'oldestBlock': '0xd1b7c4', 'reward': [['0x0']]}}), + (('0x1', 'latest', [100]), {'jsonrpc': '2.0', 'id': 0, 'result': {'baseFeePerGas': ['0xe737dc7c7', '0xf5d01f66d'], 'gasUsedRatio': [0.7524847799812623], 'oldestBlock': '0xd1b7c4', 'reward': [['0xd5f895760']]}}), + ) +} diff --git a/tests/fixtures/pause_bot_fixtures.py b/tests/fixtures/pause_bot_fixtures.py new file mode 100644 index 00000000..0b0c7164 --- /dev/null +++ b/tests/fixtures/pause_bot_fixtures.py @@ -0,0 +1,24 @@ +from fixtures.common_fixtures import COMMON_FIXTURES, LIDO_LOCATOR_CALLS + + +PAUSE_BOT_FIXTURES = { + 'eth_call': ( + *LIDO_LOCATOR_CALLS, + (({'to': '0x710B3303fB508a84F10793c1106e32bE873C24cd', 'data': '0xc7062e98'}, 'latest'), {'jsonrpc': '2.0', 'id': 11, 'result': '0x00000000000000000000000000000000000000000000000000000000000019f6'}), + (({'to': '0x0000000000000000000000000000000000000000', 'data': '0x6608b11b0000000000000000000000000000000000000000000000000000000000000001'}, '0xd17320'), {'jsonrpc': '2.0', 'id': 16, 'result': '0x0000000000000000000000000000000000000000000000000000000000000001'}), + (({'to': '0x710B3303fB508a84F10793c1106e32bE873C24cd', 'data': '0xa50833d6'}, 'latest'), {'jsonrpc': '2.0', 'id': 0, 'result': '0xd225b544f236c424d88abf1dd1a58e20df146bb6c02d916809b75d7a72bccb10'}), + (({'to': '0x710B3303fB508a84F10793c1106e32bE873C24cd', 'data': '0x4acd54c30000000000000000000000000000000000000000000000000000000000d1731f0000000000000000000000000000000000000000000000000000000000000001baa668505cd496caaf7117dd074338197200175057909ab73a04463656bdb0fad4933925f5f97a9632b4b1bc621a1c2771d58eaf6eee27dcf915eac8af010537'}, 'latest'), {'jsonrpc': '2.0', 'id': 0, 'error': {'code': 3, 'data': '0x08c379a000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000011696e76616c6964207369676e6174757265000000000000000000000000000000', 'message': 'execution reverted: invalid signature'}}), + ), + **COMMON_FIXTURES, +} + + +PAUSED_PROTOCOL_FIXTURES = { + 'eth_call': ( + *LIDO_LOCATOR_CALLS, + (({'to': '0x710B3303fB508a84F10793c1106e32bE873C24cd', 'data': '0xc7062e98'}, 'latest'), {'jsonrpc': '2.0', 'id': 15, 'result': '0x00000000000000000000000000000000000000000000000000000000000019f6'}), + (({'to': '0x0000000000000000000000000000000000000000', 'data': '0x6608b11b0000000000000000000000000000000000000000000000000000000000000001'}, '0xd17320'), {'jsonrpc': '2.0', 'id': 14, 'result': '0x0000000000000000000000000000000000000000000000000000000000000000'}), + (({'to': '0x710B3303fB508a84F10793c1106e32bE873C24cd', 'data': '0xa50833d6'}, 'latest'), {'jsonrpc': '2.0', 'id': 0, 'result': '0xd225b544f236c424d88abf1dd1a58e20df146bb6c02d916809b75d7a72bccb10'}) + ), + **COMMON_FIXTURES, +} diff --git a/tests/fixtures/provider.py b/tests/fixtures/provider.py deleted file mode 100644 index 80ae4eb3..00000000 --- a/tests/fixtures/provider.py +++ /dev/null @@ -1,33 +0,0 @@ -from unittest.mock import Mock - -import pytest -from web3 import Web3 -from web3_multi_provider import FallbackProvider - -import variables -from blockchain.web3_extentions.lido_contracts import LidoContracts -from blockchain.web3_extentions.transaction import TransactionUtils - - -# -- Unit fixtures -- -@pytest.fixture -def web3_lido_unit(): - web3 = Web3() - web3.lido = Mock() - web3.transaction = Mock() - yield web3 - - -# -- Integration fixtures -- -@pytest.fixture -def web3_provider_integration(): - yield Web3(FallbackProvider(variables.WEB3_RPC_ENDPOINTS)) - - -@pytest.fixture -def web3_lido_integration(web3_provider_integration): - web3_provider_integration.attach_modules({ - 'lido': LidoContracts, - 'transaction': TransactionUtils, - }) - yield web3_provider_integration diff --git a/tests/fixtures/pytest_mocks.py b/tests/fixtures/pytest_mocks.py new file mode 100644 index 00000000..3e047b9d --- /dev/null +++ b/tests/fixtures/pytest_mocks.py @@ -0,0 +1,210 @@ +import json +from unittest.mock import Mock + +import pytest +from eth_account import Account +from web3 import Web3 + +from fixtures.depositor_fixtures import ( + DEPOSITOR_BASE_FIXTURES_SMALL_BALANCE, + DEPOSITOR_FIXTURES_WITH_DEPOSIT_PROHIBIT, + DEPOSITOR_FIXTURES_WITH_HIGH_GAS, + DEPOSITOR_FIXTURES_NOT_ENOUGH_BUFFERED_ETHER, + DEPOSITOR_BASE_FIXTURES, DEPOSITOR_FIXTURES_NO_FREE_KEYS, +) +from fixtures.pause_bot_fixtures import PAUSE_BOT_FIXTURES, PAUSED_PROTOCOL_FIXTURES +from metrics import healthcheck_pulse +from tests.utils.mock_provider import MockProvider + +from tests.fixtures.gas_fee_fixtures import GAS_FEE_FIXTURES +from transport.msg_providers.kafka import KafkaMessageProvider +from transport.msg_providers.rabbit import RabbitProvider +from transport.msg_storage import MessageStorage + + +class Message: + def __init__(self, result): + self._result = result + + def value(self): + return self._result + + def error(self): + pass + + +def send_message_to_store(monkeypatch, msgs): + monkeypatch.setattr(MessageStorage, 'messages', msgs) + + +@pytest.fixture(scope='function') +def web3_gas_fee(): + return Web3(MockProvider(GAS_FEE_FIXTURES)) + + +@pytest.fixture(scope='function') +def setup_web3_fixtures_for_pause(): + return Web3(MockProvider(PAUSE_BOT_FIXTURES)) + + +@pytest.fixture(scope='function') +def setup_web3_fixtures_paused(): + return Web3(MockProvider(PAUSED_PROTOCOL_FIXTURES)) + + +@pytest.fixture() +def setup_web3_deposit_fixtures_small_balance(): + return Web3(MockProvider(DEPOSITOR_BASE_FIXTURES_SMALL_BALANCE)) + + +@pytest.fixture() +def setup_web3_deposit_fixtures_prohibits_the_deposit(): + return Web3(MockProvider(DEPOSITOR_FIXTURES_WITH_DEPOSIT_PROHIBIT)) + + +@pytest.fixture() +def setup_web3_deposit_fixtures_with_high_gas(): + return Web3(MockProvider(DEPOSITOR_FIXTURES_WITH_HIGH_GAS)) + + +@pytest.fixture() +def setup_web3_deposit_fixtures_not_enough_buffered_ether(): + return Web3(MockProvider(DEPOSITOR_FIXTURES_NOT_ENOUGH_BUFFERED_ETHER)) + + +@pytest.fixture() +def setup_web3_deposit_fixtures(): + return Web3(MockProvider(DEPOSITOR_BASE_FIXTURES)) + + +@pytest.fixture() +def setup_web3_deposit_fixtures_no_free_keys(): + return Web3(MockProvider(DEPOSITOR_FIXTURES_NO_FREE_KEYS)) + + +@pytest.fixture() +def setup_pause_message_to_kafka(monkeypatch): + send_message_to_store(monkeypatch, [{ + "blockHash": "0xe41c0212516a899c455203e833903c802338daa3048bc637b623f6fba0a1685c", + "blockNumber": 13726495, + "guardianAddress": "0x3dc4cF780F2599B528F37dedB34449Fb65Ef7d4A", + "guardianIndex": 0, + "stakingModuleId": 1, + "signature": { + "_vs": "0xd4933925f5f97a9632b4b1bc621a1c2771d58eaf6eee27dcf915eac8af010537", + "r": "0xbaa668505cd496caaf7117dd074338197200175057909ab73a04463656bdb0fa", + "recoveryParam": 1, + "s": "0x54933925f5f97a9632b4b1bc621a1c2771d58eaf6eee27dcf915eac8af010537", + "v": 28 + }, + "type": "pause" + }]) + + +@pytest.fixture() +def setup_ping_message_to_kafka(monkeypatch): + send_message_to_store(monkeypatch, [{ + "type": "ping", + "blockNumber": 13726495, + "guardianIndex": 0, + "guardianAddress": "0x3dc4cF780F2599B528F37dedB34449Fb65Ef7d4A", + "app": { + "version": "1.1.1", + "name": "lido-council-daemon" + } + }]) + + +@pytest.fixture() +def remove_sleep(monkeypatch): + import time + monkeypatch.setattr(time, 'sleep', lambda x: x) + + monkeypatch.setattr(healthcheck_pulse, 'pulse', lambda: None) + + +@pytest.fixture() +def remove_transport(monkeypatch): + monkeypatch.setattr(KafkaMessageProvider, '__init__', lambda _, client, message_schema: None) + monkeypatch.setattr(KafkaMessageProvider, '_receive_message', lambda _: None) + monkeypatch.setattr(KafkaMessageProvider, '__del__', lambda _: None) + + monkeypatch.setattr(RabbitProvider, '__init__', lambda _, client, message_schema, routing_keys: None) + monkeypatch.setattr(RabbitProvider, '_receive_message', lambda _: None) + monkeypatch.setattr(RabbitProvider, '__del__', lambda _: None) + + +@pytest.fixture() +def setup_pause_message_to_store(monkeypatch): + send_message_to_store(monkeypatch, [{ + "blockHash": "0xe41c0212516a899c455203e833903c802338daa3048bc637b623f6fba0a1685c", + "blockNumber": 13726495, + "guardianAddress": "0x3dc4cF780F2599B528F37dedB34449Fb65Ef7d4A", + "guardianIndex": 0, + "stakingModuleId": 1, + "signature": { + "_vs": "0xd4933925f5f97a9632b4b1bc621a1c2771d58eaf6eee27dcf915eac8af010537", + "r": "0xbaa668505cd496caaf7117dd074338197200175057909ab73a04463656bdb0fa", + "recoveryParam": 1, + "s": "0x54933925f5f97a9632b4b1bc621a1c2771d58eaf6eee27dcf915eac8af010537", + "v": 28 + }, + "type": "pause" + }]) + + +@pytest.fixture(scope='function') +def setup_account(monkeypatch): + import variables + + monkeypatch.setenv('WALLET_PRIVATE_KEY', '0000000000000000000000000000000000000000000000000000000000000000') + monkeypatch.setattr(variables, 'WALLET_PRIVATE_KEY', '0000000000000000000000000000000000000000000000000000000000000000') + monkeypatch.setattr(variables, 'ACCOUNT', Account.from_key(variables.WALLET_PRIVATE_KEY)) + yield + monkeypatch.setenv('WALLET_PRIVATE_KEY', '') + monkeypatch.setattr(variables, 'WALLET_PRIVATE_KEY', None) + monkeypatch.setattr(variables, 'ACCOUNT', None) + + +@pytest.fixture +def setup_flashbots(monkeypatch): + import variables + monkeypatch.setattr(variables, 'FLASHBOT_SIGNATURE', '0000000000000000000000000000000000000000000000000000000000000000') + yield + monkeypatch.setattr(variables, 'FLASHBOT_SIGNATURE', None) + + +@pytest.fixture(scope='function') +def setup_create_txs(monkeypatch): + import variables + monkeypatch.setenv('CREATE_TRANSACTIONS', 'true') + monkeypatch.setattr(variables, 'CREATE_TRANSACTIONS', True) + yield + monkeypatch.setenv('CREATE_TRANSACTIONS', 'false') + monkeypatch.setattr(variables, 'CREATE_TRANSACTIONS', False) + + +@pytest.fixture() +def setup_deposit_message_to_kafka(monkeypatch): + send_message_to_store(monkeypatch, [{ + "type": "deposit", + "depositRoot": "0x4eff65af4dac60f23b625a5d9c80f9cc36b0754cd1db072cd47bd6d053e2f94e", + "nonce": 1, + "blockNumber": 13726495, + "blockHash": "0x432e218931e9b94f0702ecb1b0d084c467a86b384767ce38c4fe164463070532", + "guardianAddress": "0x43464Fe06c18848a2E2e913194D64c1970f4326a", + "guardianIndex": 8, + "stakingModuleId": 1, + "signature": { + "r": "0xc2235eb6983f80d19158f807d5d90d93abec52034ea7184bbf164ba211f00116", + "s": "0x75354ffc9fb6e7a4b4c01c622661a1d0382ace8c4ff8024626e39ac1a6a613d0", + "_vs": "0x75354ffc9fb6e7a4b4c01c622661a1d0382ace8c4ff8024626e39ac1a6a613d0", + "recoveryParam": 0, + "v": 27 + }, + "app": { + "version": "1.0.3", + "name": "lido-council-daemon" + } + }]) + diff --git a/tests/test_depositor_bot.py b/tests/test_depositor_bot.py new file mode 100644 index 00000000..3c6c0604 --- /dev/null +++ b/tests/test_depositor_bot.py @@ -0,0 +1,236 @@ +import logging +from unittest.mock import Mock + +from blockchain.contracts import contracts +from bots.depositor_bot import DepositorBot +from utils.logs import find_log_message +from fixtures.pytest_mocks import * + + +ISSUES_FOUND_LOG = 'Issues found.' +ISSUES_NOT_FOUND_LOG = 'No issues found.' + + +def test_deposit_issues__account_balance( + caplog, + setup_web3_deposit_fixtures_small_balance, + remove_sleep, + remove_transport, + setup_ping_message_to_kafka, + setup_deposit_message_to_kafka, + setup_account, +): + caplog.set_level(logging.INFO) + contracts.initialize(setup_web3_deposit_fixtures_small_balance) + depositor_bot = DepositorBot(setup_web3_deposit_fixtures_small_balance) + depositor_bot._get_nonce = Mock(return_value=1) + depositor_bot.run_cycle() + + assert find_log_message(caplog, depositor_bot.NOT_ENOUGH_BALANCE_ON_ACCOUNT) + record = find_log_message(caplog, ISSUES_FOUND_LOG) + assert record + assert record.msg['value'] == [depositor_bot.NOT_ENOUGH_BALANCE_ON_ACCOUNT] + assert not find_log_message(caplog, ISSUES_NOT_FOUND_LOG) + + +def test_deposit_issues__gas_strategy( + caplog, + setup_web3_deposit_fixtures_with_high_gas, + remove_sleep, + remove_transport, + setup_ping_message_to_kafka, + setup_deposit_message_to_kafka, +): + caplog.set_level(logging.INFO) + contracts.initialize(setup_web3_deposit_fixtures_with_high_gas) + depositor_bot = DepositorBot(setup_web3_deposit_fixtures_with_high_gas) + depositor_bot._get_nonce = Mock(return_value=1) + depositor_bot.run_cycle() + + assert find_log_message(caplog, depositor_bot.GAS_FEE_HIGHER_THAN_RECOMMENDED) + record = find_log_message(caplog, ISSUES_FOUND_LOG) + assert record + assert record.msg['value'] == [depositor_bot.GAS_FEE_HIGHER_THAN_RECOMMENDED] + assert not find_log_message(caplog, ISSUES_NOT_FOUND_LOG) + + +def test_deposit_issues__security_check( + caplog, + setup_web3_deposit_fixtures_prohibits_the_deposit, + remove_sleep, + remove_transport, + setup_ping_message_to_kafka, + setup_deposit_message_to_kafka, +): + caplog.set_level(logging.INFO) + contracts.initialize(setup_web3_deposit_fixtures_prohibits_the_deposit) + depositor_bot = DepositorBot(setup_web3_deposit_fixtures_prohibits_the_deposit) + depositor_bot._get_nonce = Mock(return_value=1) + depositor_bot.run_cycle() + + assert find_log_message(caplog, depositor_bot.DEPOSIT_SECURITY_ISSUE) + record = find_log_message(caplog, ISSUES_FOUND_LOG) + assert record + assert record.msg['value'] == [depositor_bot.DEPOSIT_SECURITY_ISSUE] + assert not find_log_message(caplog, ISSUES_NOT_FOUND_LOG) + + +def test_deposit_issues__buffered_ether( + caplog, + setup_web3_deposit_fixtures_not_enough_buffered_ether, + remove_sleep, + remove_transport, + setup_ping_message_to_kafka, + setup_deposit_message_to_kafka, +): + caplog.set_level(logging.INFO) + contracts.initialize(setup_web3_deposit_fixtures_not_enough_buffered_ether) + depositor_bot = DepositorBot(setup_web3_deposit_fixtures_not_enough_buffered_ether) + depositor_bot._get_nonce = Mock(return_value=1) + depositor_bot.run_cycle() + + assert find_log_message(caplog, depositor_bot.LIDO_CONTRACT_HAS_NOT_ENOUGH_BUFFERED_ETHER) + record = find_log_message(caplog, ISSUES_FOUND_LOG) + assert record + assert record.msg['value'] == [depositor_bot.LIDO_CONTRACT_HAS_NOT_ENOUGH_BUFFERED_ETHER] + assert not find_log_message(caplog, ISSUES_NOT_FOUND_LOG) + + +def test_deposit_issues__enough_signs( + caplog, + setup_web3_deposit_fixtures, + remove_sleep, + remove_transport, + setup_ping_message_to_kafka, +): + caplog.set_level(logging.INFO) + contracts.initialize(setup_web3_deposit_fixtures) + depositor_bot = DepositorBot(setup_web3_deposit_fixtures) + depositor_bot._get_nonce = Mock(return_value=1) + depositor_bot.run_cycle() + + assert find_log_message(caplog, depositor_bot.QUORUM_IS_NOT_READY) + record = find_log_message(caplog, ISSUES_FOUND_LOG) + assert record + assert record.msg['value'] == [depositor_bot.QUORUM_IS_NOT_READY] + assert not find_log_message(caplog, ISSUES_NOT_FOUND_LOG) + + +def test_deposit_issues__no_free_keys( + caplog, + setup_web3_deposit_fixtures_no_free_keys, + remove_sleep, + remove_transport, + setup_ping_message_to_kafka, + setup_deposit_message_to_kafka, +): + caplog.set_level(logging.INFO) + contracts.initialize(setup_web3_deposit_fixtures_no_free_keys) + depositor_bot = DepositorBot(setup_web3_deposit_fixtures_no_free_keys) + depositor_bot._get_nonce = Mock(return_value=1) + depositor_bot.run_cycle() + + assert find_log_message(caplog, depositor_bot.DEPOSITOR_CAN_DEPOSIT_KEYS) + record = find_log_message(caplog, ISSUES_FOUND_LOG) + assert record + assert record.msg['value'] == [depositor_bot.DEPOSITOR_CAN_DEPOSIT_KEYS] + assert not find_log_message(caplog, ISSUES_NOT_FOUND_LOG) + + +def test_depositor_bot__no_account( + caplog, + setup_web3_deposit_fixtures, + setup_deposit_message_to_kafka, + remove_sleep, + remove_transport, +): + caplog.set_level(logging.INFO) + contracts.initialize(setup_web3_deposit_fixtures) + contracts.deposit_security_module.functions.depositBufferedEther = Mock() + depositor_bot = DepositorBot(setup_web3_deposit_fixtures) + depositor_bot._get_nonce = Mock(return_value=1) + depositor_bot.run_cycle() + + assert not find_log_message(caplog, ISSUES_FOUND_LOG) + assert find_log_message(caplog, ISSUES_NOT_FOUND_LOG) + assert find_log_message(caplog, 'Deposit local call succeed.') + assert find_log_message(caplog, 'Account was not provided.') + + +def test_depositor_bot__no_create_tx( + caplog, + setup_web3_deposit_fixtures, + setup_deposit_message_to_kafka, + setup_account, + remove_sleep, + remove_transport, +): + caplog.set_level(logging.INFO) + contracts.initialize(setup_web3_deposit_fixtures) + contracts.deposit_security_module.functions.depositBufferedEther = Mock() + depositor_bot = DepositorBot(setup_web3_deposit_fixtures) + depositor_bot._get_nonce = Mock(return_value=1) + depositor_bot.run_cycle() + + assert not find_log_message(caplog, ISSUES_FOUND_LOG) + assert find_log_message(caplog, ISSUES_NOT_FOUND_LOG) + assert find_log_message(caplog, 'Deposit local call succeed.') + assert find_log_message(caplog, 'Run in dry mode.') + + +def test_depositor_bot__deposit( + caplog, + setup_web3_deposit_fixtures, + setup_ping_message_to_kafka, + setup_deposit_message_to_kafka, + setup_account, + setup_flashbots, + setup_create_txs, + remove_sleep, + remove_transport, +): + caplog.set_level(logging.INFO) + contracts.initialize(setup_web3_deposit_fixtures) + depositor_bot = DepositorBot(setup_web3_deposit_fixtures) + depositor_bot.w3.eth.get_transaction_count = Mock(return_value=1) + depositor_bot.w3.flashbots = Mock(return_value=True) + depositor_bot._check_transaction = Mock(return_value=True) + depositor_bot._get_nonce = Mock(return_value=1) + + try: + depositor_bot.run_cycle() + except TypeError: + # Mining transaction error expected. Can't mock it correctly. Just check logs. + pass + + assert not find_log_message(caplog, ISSUES_FOUND_LOG) + assert find_log_message(caplog, ISSUES_NOT_FOUND_LOG) + assert find_log_message(caplog, 'Sending deposit transaction.') + assert find_log_message(caplog, 'Try to deposit. Flashbots mode.') + + +def test_depositor_bot__deposit_classic( + caplog, + setup_web3_deposit_fixtures, + setup_ping_message_to_kafka, + setup_deposit_message_to_kafka, + setup_account, + setup_flashbots, + setup_create_txs, + remove_sleep, + remove_transport, +): + caplog.set_level(logging.INFO) + contracts.initialize(setup_web3_deposit_fixtures) + depositor_bot = DepositorBot(setup_web3_deposit_fixtures) + depositor_bot.last_fb_deposit_failed = True + depositor_bot.w3.eth.get_transaction_count = Mock(return_value=1) + depositor_bot._check_transaction = Mock(return_value=True) + depositor_bot._get_nonce = Mock(return_value=1) + + depositor_bot.run_cycle() + + assert not find_log_message(caplog, ISSUES_FOUND_LOG) + assert find_log_message(caplog, ISSUES_NOT_FOUND_LOG) + assert find_log_message(caplog, 'Sending deposit transaction.') + assert find_log_message(caplog, 'Try to deposit. Classic mode.') diff --git a/tests/test_gas_srategy.py b/tests/test_gas_srategy.py new file mode 100644 index 00000000..92031d46 --- /dev/null +++ b/tests/test_gas_srategy.py @@ -0,0 +1,40 @@ +import logging + +from blockchain.gas_strategy import GasFeeStrategy +from utils.logs import find_log_message +from fixtures.pytest_mocks import * + + +def test_percentile_calculate(caplog, web3_gas_fee): + caplog.set_level(logging.INFO) + + gas_fee_strategy = GasFeeStrategy(web3_gas_fee) + percentile = gas_fee_strategy.get_gas_fee_percentile(1, 30) + + assert percentile == 83720913390 + + # Make sure cache works + caplog.clear() + + percentile = gas_fee_strategy.get_gas_fee_percentile(1, 20) + + record = find_log_message(caplog, 'Use cached gas history') + assert record + + assert percentile == 74903359976 + + percentile = gas_fee_strategy.get_gas_fee_percentile(1, 50) + + assert percentile == 101522350803 + + +def test_get_recommended_gas_fee(web3_gas_fee): + gas_fee_strategy = GasFeeStrategy(web3_gas_fee) + + fee = gas_fee_strategy.get_recommended_gas_fee([(1, 20), (2, 20)]) + + assert fee == gas_fee_strategy.get_gas_fee_percentile(1, 20) + + fee = gas_fee_strategy.get_recommended_gas_fee([(1, 99), (2, 99)]) + + assert fee == gas_fee_strategy.max_gas_fee diff --git a/tests/test_pause_bot.py b/tests/test_pause_bot.py new file mode 100644 index 00000000..5ef97cc2 --- /dev/null +++ b/tests/test_pause_bot.py @@ -0,0 +1,96 @@ +import logging + +from blockchain.contracts import contracts +from bots.pause_bot import PauserBot +from utils.logs import find_log_message +from fixtures.pytest_mocks import * + + +def test_no_pause_messages( + caplog, + setup_web3_fixtures_for_pause, + remove_sleep, + remove_transport, +): + """Just cycle with no pause msg and no pause tx""" + caplog.set_level(logging.INFO) + contracts.initialize(setup_web3_fixtures_for_pause) + pause_bot = PauserBot(setup_web3_fixtures_for_pause) + pause_bot.run_cycle() + + assert find_log_message(caplog, 'Fetch `latest` block.') + assert not find_log_message(caplog, 'Message pause protocol initiate.') + + +def test_no_pause_if_protocol_was_paused( + caplog, + setup_web3_fixtures_paused, + setup_pause_message_to_kafka, + remove_sleep, + remove_transport, +): + """Test no pause tx if protocol already paused""" + caplog.set_level(logging.INFO) + contracts.initialize(setup_web3_fixtures_paused) + pause_bot = PauserBot(setup_web3_fixtures_paused) + pause_bot.run_cycle() + + assert find_log_message(caplog, 'Fetch `latest` block.') + is_paused_log = find_log_message(caplog, 'Call `getStakingModuleIsActive()`.') + assert not is_paused_log.msg['value'] + assert not find_log_message(caplog, 'Message pause protocol initiate.') + + +def test_pause_msg_receive( + caplog, + setup_web3_fixtures_for_pause, + setup_pause_message_to_kafka, + remove_sleep, + remove_transport, +): + """Retry each time pause tx falls locally or in blockchain""" + caplog.set_level(logging.INFO) + contracts.initialize(setup_web3_fixtures_for_pause) + pause_bot = PauserBot(setup_web3_fixtures_for_pause) + pause_bot.run_cycle() + + assert find_log_message(caplog, 'Fetch `latest` block.') + assert find_log_message(caplog, 'Message pause protocol initiate.') + assert find_log_message(caplog, 'No account provided. Skip creating tx.') + + +def test_pause_with_account( + caplog, + setup_account, + setup_web3_fixtures_for_pause, + setup_pause_message_to_kafka, + remove_sleep, + remove_transport, +): + caplog.set_level(logging.INFO) + contracts.initialize(setup_web3_fixtures_for_pause) + pause_bot = PauserBot(setup_web3_fixtures_for_pause) + pause_bot.run_cycle() + + assert find_log_message(caplog, 'Fetch `latest` block.') + assert find_log_message(caplog, 'Message pause protocol initiate.') + assert find_log_message(caplog, 'Running in DRY mode.') + + +def test_pause_with_account_in_prod( + caplog, + setup_account, + setup_create_txs, + setup_web3_fixtures_for_pause, + setup_pause_message_to_kafka, + remove_sleep, + remove_transport, +): + caplog.set_level(logging.INFO) + contracts.initialize(setup_web3_fixtures_for_pause) + pause_bot = PauserBot(setup_web3_fixtures_for_pause) + pause_bot.run_cycle() + + assert find_log_message(caplog, 'Fetch `latest` block.') + assert find_log_message(caplog, 'Message pause protocol initiate.') + assert find_log_message(caplog, 'Send pause transaction.') diff --git a/tests/test_reccomended_buffered_eth.py b/tests/test_reccomended_buffered_eth.py new file mode 100644 index 00000000..19d1bdc5 --- /dev/null +++ b/tests/test_reccomended_buffered_eth.py @@ -0,0 +1,15 @@ +from blockchain.buffered_eth import get_recommended_buffered_ether_to_deposit + + +def test_recommended_buffered_ether(): + buffered_ether = get_recommended_buffered_ether_to_deposit(10**9) + assert 1 < buffered_ether / 10**18 < 100 + + buffered_ether = get_recommended_buffered_ether_to_deposit(50 * 10**9) + assert 250 < buffered_ether / 10**18 < 300 + + buffered_ether = get_recommended_buffered_ether_to_deposit(70 * 10**9) + assert 300 < buffered_ether / 10**18 < 400 + + buffered_ether = get_recommended_buffered_ether_to_deposit(150 * 10**9) + assert 400 < buffered_ether / 10**18 < 500 diff --git a/tests/cryptography/test_verify_signature.py b/tests/test_signature_check.py similarity index 94% rename from tests/cryptography/test_verify_signature.py rename to tests/test_signature_check.py index 43e2eb99..96d5b38d 100644 --- a/tests/cryptography/test_verify_signature.py +++ b/tests/test_signature_check.py @@ -1,5 +1,5 @@ from cryptography.verify_signature import compute_vs, verify_message_with_signature -from tests.fixtures.signature_fixtures import ( +from fixtures.signature_fixtures import ( deposit_messages, deposit_prefix, ) diff --git a/tests/utils/contract_utils.py b/tests/utils/contract_utils.py deleted file mode 100644 index a1724154..00000000 --- a/tests/utils/contract_utils.py +++ /dev/null @@ -1,25 +0,0 @@ -import logging -from typing import Callable, Any, Optional - -from blockchain.contracts.base_interface import ContractInterface - - -def check_contract( - contract: ContractInterface, - functions_spec: list[tuple[str, Optional[tuple], Callable[[Any], None]]], - caplog, -): - caplog.set_level(logging.INFO) - - for function in functions_spec: - # get method - method = contract.__getattribute__(function[0]) - # call method with args - if function[1] is not None: - response = method(*function[1]) - else: - response = method() - # check response - function[2](response) - - assert len(functions_spec) == len(caplog.messages) diff --git a/tests/utils/logs.py b/tests/utils/logs.py new file mode 100644 index 00000000..47c0352e --- /dev/null +++ b/tests/utils/logs.py @@ -0,0 +1,2 @@ +def find_log_message(caplog, msg): + return next((log for log in caplog.records if msg in log.msg['msg']), None) diff --git a/tests/utils/mock_provider.py b/tests/utils/mock_provider.py new file mode 100644 index 00000000..1591446c --- /dev/null +++ b/tests/utils/mock_provider.py @@ -0,0 +1,24 @@ +from typing import Any + +from web3.providers import JSONBaseProvider +from web3.types import RPCEndpoint, RPCResponse + + +class MockProvider(JSONBaseProvider): + _current_provider_index = 0 + + def __init__(self, mock_object: dict): + self._mock_object = mock_object + super().__init__() + + def make_request(self, method: RPCEndpoint, params: Any) -> RPCResponse: + if method in self._mock_object: + result = next((x for x in self._mock_object[method] if x[0] == params), None) + if result is not None: + return result[1] + + result = next((x for x in self._mock_object[method] if x[0] == 'default'), None) + if result is not None: + return result[1] + + raise Exception('There is no mock for response') diff --git a/tests/utils/regrex.py b/tests/utils/regrex.py deleted file mode 100644 index d216ba46..00000000 --- a/tests/utils/regrex.py +++ /dev/null @@ -1,12 +0,0 @@ -import re - -HASH_REGREX = re.compile(r'^0x[0-9,A-F]{64}$', flags=re.IGNORECASE) -ADDRESS_REGREX = re.compile('^0x[0-9,A-F]{40}$', flags=re.IGNORECASE) - - -def check_value_re(regrex, value) -> None: - assert regrex.findall(value) - - -def check_value_type(value, _type) -> None: - assert isinstance(value, _type) From 46abb8b555288ef6ff07475a6b17e81b0006791e Mon Sep 17 00:00:00 2001 From: Raman Siamionau Date: Fri, 8 Sep 2023 08:27:19 +0200 Subject: [PATCH 07/42] Revert "Revert "Merge pull request #164 from lidofinance/feat/depositor-rework"" This reverts commit 0e52d3fba4d495d2ef19c94c03ff818a6eba76ad. --- .env.example | 33 + .github/workflows/tests_and_checks.yml | 20 +- .gitignore | 2 + README.md | 197 +- docker-compose.yml | 24 +- hardhat.config.js | 15 + package-lock.json | 4256 +++++++++++++++++ package.json | 5 + poetry.lock | 13 +- pyproject.toml | 5 +- src/blockchain/buffered_eth.py | 16 - src/blockchain/constants.py | 41 +- src/blockchain/contracts.py | 63 - src/blockchain/contracts/__init__.py | 0 src/blockchain/contracts/base_interface.py | 22 + src/blockchain/contracts/deposit.py | 24 + .../contracts/deposit_security_module.py | 129 + src/blockchain/contracts/lido.py | 21 + src/blockchain/contracts/lido_locator.py | 28 + src/blockchain/contracts/staking_router.py | 102 + src/blockchain/deposit_strategy/__init__.py | 0 .../deposit_strategy/curated_module.py | 112 + src/blockchain/deposit_strategy/interface.py | 17 + src/blockchain/executer.py | 97 + src/blockchain/fetch_latest_block.py | 25 - src/blockchain/gas_strategy.py | 90 - src/blockchain/typings.py | 9 + src/blockchain/web3_extentions/__init__.py | 0 .../web3_extentions/lido_contracts.py | 44 + .../requests_metric_middleware.py | 1 + src/blockchain/web3_extentions/transaction.py | 121 + src/bots/depositor.py | 243 + src/bots/depositor_bot.py | 516 -- src/bots/pause.py | 98 + src/bots/pause_bot.py | 207 - src/depositor.py | 58 +- src/metrics/healthcheck_pulse.py | 1 + src/metrics/logging.py | 2 + src/metrics/metrics.py | 34 +- src/metrics/transport_message_metrics.py | 13 +- src/pauser.py | 50 +- src/transport/msg_providers/kafka.py | 5 +- src/transport/msg_providers/rabbit.py | 2 +- src/transport/msg_schemas.py | 30 +- src/transport/msg_storage.py | 9 +- .../types.py} | 0 src/utils/__init__.py | 0 src/utils/timeout.py | 27 + src/variables.py | 81 +- static/img.png | Bin 0 -> 39855 bytes static/img1.png | Bin 0 -> 36369 bytes static/img2.png | Bin 0 -> 51833 bytes static/img3.png | Bin 0 -> 65415 bytes tests/blockchain/__init__.py | 0 tests/blockchain/contracts/__init__.py | 0 tests/blockchain/contracts/test_deposit.py | 15 + .../contracts/test_deposit_security_module.py | 21 + tests/blockchain/contracts/test_lido.py | 12 + .../blockchain/contracts/test_lido_locator.py | 14 + .../contracts/test_staking_router.py | 21 + tests/blockchain/deposit_strategy/__init__.py | 0 .../deposit_strategy/test_curated_module.py | 108 + tests/blockchain/web3_extentions/__init__.py | 0 .../blockchain/web3_extentions/transaction.py | 37 + tests/bots/__init__.py | 0 tests/bots/test_depositor.py | 337 ++ tests/bots/test_executor.py | 88 + tests/bots/test_pauser.py | 167 + tests/bots/test_timeout.py | 18 + tests/conftest.py | 48 + tests/cryptography/__init__.py | 0 .../test_verify_signature.py} | 2 +- tests/fixtures/common_fixtures.py | 36 - tests/fixtures/contracts.py | 51 + tests/fixtures/depositor_fixtures.py | 139 - tests/fixtures/gas_fee_fixtures.py | 27 - tests/fixtures/pause_bot_fixtures.py | 24 - tests/fixtures/provider.py | 33 + tests/fixtures/pytest_mocks.py | 210 - tests/test_depositor_bot.py | 236 - tests/test_gas_srategy.py | 40 - tests/test_pause_bot.py | 96 - tests/test_reccomended_buffered_eth.py | 15 - tests/utils/contract_utils.py | 25 + tests/utils/logs.py | 2 - tests/utils/mock_provider.py | 24 - tests/utils/regrex.py | 12 + 87 files changed, 6773 insertions(+), 1993 deletions(-) create mode 100644 .env.example create mode 100644 hardhat.config.js create mode 100644 package-lock.json create mode 100644 package.json delete mode 100644 src/blockchain/buffered_eth.py delete mode 100644 src/blockchain/contracts.py create mode 100644 src/blockchain/contracts/__init__.py create mode 100644 src/blockchain/contracts/base_interface.py create mode 100644 src/blockchain/contracts/deposit.py create mode 100644 src/blockchain/contracts/deposit_security_module.py create mode 100644 src/blockchain/contracts/lido.py create mode 100644 src/blockchain/contracts/lido_locator.py create mode 100644 src/blockchain/contracts/staking_router.py create mode 100644 src/blockchain/deposit_strategy/__init__.py create mode 100644 src/blockchain/deposit_strategy/curated_module.py create mode 100644 src/blockchain/deposit_strategy/interface.py create mode 100644 src/blockchain/executer.py delete mode 100644 src/blockchain/fetch_latest_block.py delete mode 100644 src/blockchain/gas_strategy.py create mode 100644 src/blockchain/typings.py create mode 100644 src/blockchain/web3_extentions/__init__.py create mode 100644 src/blockchain/web3_extentions/lido_contracts.py rename src/blockchain/{ => web3_extentions}/requests_metric_middleware.py (99%) create mode 100644 src/blockchain/web3_extentions/transaction.py create mode 100644 src/bots/depositor.py delete mode 100644 src/bots/depositor_bot.py create mode 100644 src/bots/pause.py delete mode 100644 src/bots/pause_bot.py rename src/{variables_types.py => transport/types.py} (100%) create mode 100644 src/utils/__init__.py create mode 100644 src/utils/timeout.py create mode 100644 static/img.png create mode 100644 static/img1.png create mode 100644 static/img2.png create mode 100644 static/img3.png create mode 100644 tests/blockchain/__init__.py create mode 100644 tests/blockchain/contracts/__init__.py create mode 100644 tests/blockchain/contracts/test_deposit.py create mode 100644 tests/blockchain/contracts/test_deposit_security_module.py create mode 100644 tests/blockchain/contracts/test_lido.py create mode 100644 tests/blockchain/contracts/test_lido_locator.py create mode 100644 tests/blockchain/contracts/test_staking_router.py create mode 100644 tests/blockchain/deposit_strategy/__init__.py create mode 100644 tests/blockchain/deposit_strategy/test_curated_module.py create mode 100644 tests/blockchain/web3_extentions/__init__.py create mode 100644 tests/blockchain/web3_extentions/transaction.py create mode 100644 tests/bots/__init__.py create mode 100644 tests/bots/test_depositor.py create mode 100644 tests/bots/test_executor.py create mode 100644 tests/bots/test_pauser.py create mode 100644 tests/bots/test_timeout.py create mode 100644 tests/conftest.py create mode 100644 tests/cryptography/__init__.py rename tests/{test_signature_check.py => cryptography/test_verify_signature.py} (94%) delete mode 100644 tests/fixtures/common_fixtures.py create mode 100644 tests/fixtures/contracts.py delete mode 100644 tests/fixtures/depositor_fixtures.py delete mode 100644 tests/fixtures/gas_fee_fixtures.py delete mode 100644 tests/fixtures/pause_bot_fixtures.py create mode 100644 tests/fixtures/provider.py delete mode 100644 tests/fixtures/pytest_mocks.py delete mode 100644 tests/test_depositor_bot.py delete mode 100644 tests/test_gas_srategy.py delete mode 100644 tests/test_pause_bot.py delete mode 100644 tests/test_reccomended_buffered_eth.py create mode 100644 tests/utils/contract_utils.py delete mode 100644 tests/utils/logs.py delete mode 100644 tests/utils/mock_provider.py create mode 100644 tests/utils/regrex.py diff --git a/.env.example b/.env.example new file mode 100644 index 00000000..3db16308 --- /dev/null +++ b/.env.example @@ -0,0 +1,33 @@ +WEB3_RPC_ENDPOINTS=https://goerli.infura.io/v3/ + +# Account private key +# Publicity known private key. Generated with `test test ... test` mnemonic. +WALLET_PRIVATE_KEY=0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80 + +# App specific +# LIDO_LOCATOR ADDRESS +# Mainnet: 0xC1d0b3DE6792Bf6b4b37EccdcC24e45978Cfd2Eb +# Görli: 0x1eDf09b5023DC86737b59dE68a8130De878984f5 +LIDO_LOCATOR=0x1eDf09b5023DC86737b59dE68a8130De878984f5 + +# DEPOSIT_CONTRACT ADDRESS +# Mainnet: 0x00000000219ab540356cBB839Cbe05303d7705Fa +# Görli: 0xff50ed3d0ec03aC01D4C79aAd74928BFF48a7b2b +DEPOSIT_CONTRACT=0xff50ed3d0ec03aC01D4C79aAd74928BFF48a7b2b + +# rabbit / kafka / rabbit,kafka +MESSAGE_TRANSPORTS=rabbit + +# rabbit secrets +RABBIT_MQ_URL=ws://127.0.0.1:15674/ws +RABBIT_MQ_USERNAME=guest +RABBIT_MQ_PASSWORD=guest + +# Transactions settings +CREATE_TRANSACTIONS=true + +# FLASHBOTS_RPC URL +# Mainnet: "https://relay.flashbots.net", +# Görli: "https://relay-goerli.flashbots.net", +FLASHBOTS_RPC=https://relay-goerli.flashbots.net +FLASHBOT_SIGNATURE=0xbb0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ffaa diff --git a/.github/workflows/tests_and_checks.yml b/.github/workflows/tests_and_checks.yml index e57e1672..859eb58a 100644 --- a/.github/workflows/tests_and_checks.yml +++ b/.github/workflows/tests_and_checks.yml @@ -26,9 +26,25 @@ jobs: run: | poetry install - - name: Test with pytest + - name: Unit Tests with pytest run: | - poetry run pytest tests + poetry run pytest tests -m unit + + - name: Use Node.js ${{ matrix.node-version }} + uses: actions/setup-node@v3 + - run: npm install --save-dev hardhat + + - name: Run hardhat + run: | + npx hardhat node --fork ${{ secrets.WEB3_RPC_ENDPOINT }} & + + - name: Integration Tests with pytest + run: | + poetry run pytest tests -m integration + env: + WEB3_RPC_ENDPOINTS: http://127.0.0.1:8545 + DEPOSIT_CONTRACT: "0xff50ed3d0ec03aC01D4C79aAd74928BFF48a7b2b" + LIDO_LOCATOR: "0x1eDf09b5023DC86737b59dE68a8130De878984f5" security: uses: lidofinance/linters/.github/workflows/security.yml@master diff --git a/.gitignore b/.gitignore index 59d927b3..0edbe798 100644 --- a/.gitignore +++ b/.gitignore @@ -137,3 +137,5 @@ debug.log #cache deposit_contract_cache/ + +node_modules/ diff --git a/README.md b/README.md index 9d1ffaa9..50620c09 100644 --- a/README.md +++ b/README.md @@ -1,85 +1,129 @@ # Lido Lido Depositor bot -## Depositor bot description -Depositor bot - Deposits buffered ether via depositBufferedEther call on "DepositSecurityModule" smart contract using special gas strategy. +## Description + +Depositor and pauser bots are parts of [Deposit Security Module](https://github.com/lidofinance/lido-improvement-proposals/blob/develop/LIPS/lip-5.md#mitigations-for-deposit-front-running-vulnerability). + +**The Depositor Bot** obtains signed deposit messages from Council Daemons. +Once a sufficient number of messages is collected to constitute a quorum, the bot proceeds to initiate a deposit into the designated staking module. +This deposit is executed using the depositBufferedEther function within the "DepositSecurityModule" smart contract. + +**The Pauser Bot** obtains pause message from Council Daemon and enacts pause on the specified staking module. + +## Table of Contents + +- [Running Daemon](#running-daemon) +- [Variables](#variables) + - [Required variables](#required-variables) + - [Additional variables](#additional-variables) +- [Metrics and logs](#metrics-and-logs) +- [Development](#development) + - [Install](#install) + - [Tests](#tests) + - [Release flow](#release-flow) +- [Annotations to code](#annotations-to-code) + +## Running Daemon + +1. Create `.env` file +2. Setup variables + - Set WEB3_RPC_ENDPOINTS + - Set WALLET_PRIVATE_KEY + - Set CREATE_TRANSACTIONS to true + - Set TRANSPORTS to rabbit + - Set RABBIT_MQ_URL, RABBIT_MQ_USERNAME and RABBIT_MQ_PASSWORD +3. ```docker-compose up``` +4. Send metrics and logs to grafana +5. Setup alerts + +## Variables + +### Required variables + +| Variable | Default | Description | +|-----------------------------------------|--------------------------------------------|--------------------------------------------------------------------------------------------------------------------------| +| WEB3_RPC_ENDPOINTS | - | List of rpc endpoints that will be used to send requests comma separated (`,`) | +| WALLET_PRIVATE_KEY | - | Account private key | +| CREATE_TRANSACTIONS | false | If true then tx will be send to blockchain | +| LIDO_LOCATOR | 0xC1d0b3DE6792Bf6b4b37EccdcC24e45978Cfd2Eb | Lido Locator address. Mainnet by default. Other networks could be found [here](https://docs.lido.fi/deployed-contracts/) | +| DEPOSIT_CONTRACT | 0x00000000219ab540356cBB839Cbe05303d7705Fa | Ethereum deposit contract address | +| -------------------------------------- | -------------------------------------- | ----------------------------------------- | +| TRANSPORTS | - | Transports used in bot. One of/or both: rabbit/kafka | +| RABBIT_MQ_URL | - | RabbitMQ url | +| RABBIT_MQ_USERNAME | - | RabbitMQ username for virtualhost | +| RABBIT_MQ_PASSWORD | - | RabbitMQ password for virtualhost | +| -------------------------------------- | --- _kafka is not used at the moment_ --- | ----------------------------------------- | +| KAFKA_BROKER_ADDRESS_1 | - | Kafka servers url and port | +| KAFKA_USERNAME | - | Kafka username | +| KAFKA_PASSWORD | - | Password for kafka | +| KAFKA_NETWORK | - | Network type (mainnet or goerli) | +| KAFKA_TOPIC | - | Kafka topic name (for msg receiving) | +| KAFKA_GROUP_PREFIX | - | Just for staging (staging-) | + +### Additional variables + +| Variable | Default | Description | +|-----------------------------------|------------|--------------------------------------------------------------------------------------------------------------------------| +| MIN_PRIORITY_FEE | 50 mwei | Min priority fee that will be used in tx | +| MAX_PRIORITY_FEE | 10 gwei | Max priority fee that will be used in tx | +| MAX_GAS_FEE | 100 gwei | Bot will wait for a lower price. Treshold for gas_fee | +| CONTRACT_GAS_LIMIT | 15000000 | Default transaction gas limit | +| FLASHBOTS_RPC | - | Flashbots rpc endpoint | +| FLASHBOT_SIGNATURE | - | Private key - Used to identify account in flashbot`s rpc (should NOT be equal to WALLET private key) | +| GAS_FEE_PERCENTILE_1 | 20 | Percentile for first recommended fee calculation | +| GAS_FEE_PERCENTILE_DAYS_HISTORY_1 | 1 | Percentile for first recommended calculates from N days of the fee history | +| GAS_PRIORITY_FEE_PERCENTILE | 25 | Priority transaction will be N percentile from priority fees in last block (min MIN_PRIORITY_FEE - max MAX_PRIORITY_FEE) | +| MAX_BUFFERED_ETHERS | 5000 ether | Maximum amount of ETH in the buffer, after which the bot deposits at any gas | +| PROMETHEUS_PORT | 9000 | Port with metrics server | +| PULSE_SERVER_PORT | 9010 | Port with bot`s status server | +| MAX_CYCLE_LIFETIME_IN_SECONDS | 1200 | Max lifetime of usual cycle. If cycle will not end in this time, bot will crush | + +## Metrics and logs + +Metrics list could be found in [source code](src/metrics/metrics.py). +Prometheus server hosted on `http://localhost:${{PROMETHEUS_PORT}}/`. + +## Development + +### Install -The strategy is to check two things: how much buffered ether on smart contract are and gas fee. - -We deposit when all the following points are correct: -- We received council signatures enough for quorum. -- Gas fee is lower or equal than 5-th percentile for past day. -- Buffered ETH is greater than or equal to the calculation according to a special formula depending on the gas fee. - -## Pauser bot -If one of the councils send pause message (means something very bad going on), pauser bot try to send tx that will pause protocol. -In addition, the council daemon tries to pause the protocol on its own. - - -## How to install - -Python packages ```bash git clone git@github.com:lidofinance/depositor-bot.git cd depositor-bot poetry install ``` -## Run script +To run bot -To run (development): +```bash +# For depositor bot +poetry run python src/depositor.py + +# For pause bot +poetry run python src/pauser.py +``` + +### Tests + +#### Run unit tests -Envs: ```bash -export NETWORK=... -export WEB3_RPC_ENDPOINTS=... -export FLASHBOT_SIGNATURE=... -export KAFKA_BROKER_ADDRESS_1=... -export KAFKA_USERNAME=... -export KAFKA_PASSWORD=... -export KAFKA_TOPIC=... -export RABBIT_MQ_URL=... -export RABBIT_MQ_USERNAME=... -export RABBIT_MQ_PASSWORD=... +poetry run pytest tests -m unit ``` -Run: +#### Run integration tests. + +Install Hardhat and run goerli fork ```bash -# For depositor bot -python src/depositor.py +npm install --save-dev hardhat +npx hardhat node --fork ${{ WEB3_RPC_ENDPOINT }} & +``` -# For pause bot -python src/pauser.py +```bash +poetry run pytest tests -m integration ``` -## Available variables - -| Vars in env | Amount | Default - Raw | Description | -|-----------------------------------|:----------:|:-------------------------:|:------------------------------------------------------------------------------------------------------------------------------------------------| -| WEB3_RPC_ENDPOINTS (required) | - | `` | List of rpc endpoints that will be used to send requests separated by comma (`,`). If not provided will be used infura (WEB3_INFURA_PROJECT_ID) | -| NETWORK (required) | - | `None` | Network (e.g. mainnet, goerli) | -| WALLET_PRIVATE_KEY | - | `None` | Account private key | -| FLASHBOT_SIGNATURE (required) | - | `None` | Private key - Used to identify account in flashbot`s rpc (should NOT be equal to WALLET private key) | -| CREATE_TRANSACTIONS | - | `None` | If `true` then tx will be send to blockchain | -| MAX_BUFFERED_ETHERS | 5000 ETH | `5000 ether` | Maximum amount of ETH in the buffer, after which the bot deposits at any gas | -| MAX_GAS_FEE | 100 GWEI | `100 gwei` | Bot will wait for a lower price. Treshold for gas_fee | -| GAS_FEE_PERCENTILE_1 | 5 | `5` | Percentile for first recommended fee calculation | -| GAS_FEE_PERCENTILE_DAYS_HISTORY_1 | 1 | `1` | Percentile for first recommended calculates from N days of the fee history | -| GAS_PRIORITY_FEE_PERCENTILE | 25 | `25` | Priority transaction will be N percentile from priority fees in last block (min `MIN_PRIORITY_FEE` - max `MAX_PRIORITY_FEE`) | -| CONTRACT_GAS_LIMIT | 15 * 10**6 | `15000000` | Default transaction gas limit | -| MIN_PRIORITY_FEE | 50 mwei | `50 mwei` | Min priority fee that will be used in tx | -| MAX_PRIORITY_FEE | 10 GWEI | `10 gwei` | Max priority fee that will be used in tx (4 gwei recommended) | -| MAX_CYCLE_LIFETIME_IN_SECONDS | 6 minutes | `300` | Max lifetime of usual cycle. If cycle will not end in this time, bot will crush | -| TRANSPORTS | - | `rabbit` | Transports used in bot. One of/or both: rabbit/kafka. | -| RABBIT_MQ_URL | | `ws://127.0.0.1:15674/ws` | url with ws protocol supported | -| RABBIT_MQ_USERNAME | guest | `guest` | RabbitMQ username for virtualhost | -| RABBIT_MQ_PASSWORD | guest | `guest` | RabbitMQ password for virtualhost | -| KAFKA_BROKER_ADDRESS_1 | - | `None` | Kafka servers url and port | -| KAFKA_USERNAME | - | `None` | Kafka username value | -| KAFKA_PASSWORD | - | `None` | Kafka password value | -| KAFKA_TOPIC | - | `None` | Kafka topic name (for msg receiving) | -| KAFKA_GROUP_PREFIX | - | `None` | Just for staging (staging-) | - -## Release flow +### Release flow To create a new release: @@ -88,3 +132,28 @@ To create a new release: 1. When you need to release, go to Repo → Releases. 1. Publish the desired release draft manually by clicking the edit button - this release is now the `Latest Published`. 1. After publication, the action to create a release bump will be triggered automatically. + +## Annotations to code + +Council daemons sends messages to depositor and pauser bot throw kafka or rabbit. + +![img.png](static/img.png) + +Every 5 blocks Executor instance calls depositor bot. If Depositor returns failed status, executor executes depositor with next block instead of waiting for 5 blocks. + +![img.png](static/img1.png) + +Depositor bot makes deposit only if next conditions are ok +- Gas fee is low enough +- There are enough buffered eth ready for deposit +- There are enough messages from Council Daemons to form a quorum +- Module is active and not paused + +![img.png](static/img2.png) + +Message filtering process +1. Filter all invalid messages. (Invalid schema or signature) +2. Filter all expired messages +3. Filter all messages with block number less or equal to latest block in depositor bot and with outdated nonce or deposit root. + +![img.png](static/img3.png) diff --git a/docker-compose.yml b/docker-compose.yml index 2f2a3c50..54248be3 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -8,12 +8,15 @@ services: ports: - 127.0.0.1:9000:9000 environment: - - NETWORK=${NETWORK} + - WEB3_RPC_ENDPOINTS=${WEB3_RPC_ENDPOINTS} - WALLET_PRIVATE_KEY=${WALLET_PRIVATE_KEY} - - KAFKA_BROKER_ADDRESS_1=${KAFKA_BROKER_ADDRESS_1} - - KAFKA_USERNAME=${KAFKA_USERNAME} - - KAFKA_PASSWORD=${KAFKA_PASSWORD} - - KAFKA_TOPIC=${KAFKA_TOPIC} + - CREATE_TRANSACTIONS=${CREATE_TRANSACTIONS} + - TRANSPORTS=${TRANSPORTS} + - RABBIT_MQ_URL=${RABBIT_MQ_URL} + - RABBIT_MQ_USERNAME=${RABBIT_MQ_USERNAME} + - RABBIT_MQ_PASSWORD=${RABBIT_MQ_PASSWORD} + - FLASHBOTS_RPC=${FLASHBOTS_RPC} + - FLASHBOT_SIGNATURE=${FLASHBOT_SIGNATURE} command: src/depositor.py lido-pause-bot: @@ -24,10 +27,11 @@ services: ports: - 127.0.0.1:9001:9000 environment: - - NETWORK=${NETWORK} + - WEB3_RPC_ENDPOINTS=${WEB3_RPC_ENDPOINTS} - WALLET_PRIVATE_KEY=${WALLET_PRIVATE_KEY} - - KAFKA_BROKER_ADDRESS_1=${KAFKA_BROKER_ADDRESS_1} - - KAFKA_USERNAME=${KAFKA_USERNAME} - - KAFKA_PASSWORD=${KAFKA_PASSWORD} - - KAFKA_TOPIC=${KAFKA_TOPIC} + - CREATE_TRANSACTIONS=${CREATE_TRANSACTIONS} + - TRANSPORTS=${TRANSPORTS} + - RABBIT_MQ_URL=${RABBIT_MQ_URL} + - RABBIT_MQ_USERNAME=${RABBIT_MQ_USERNAME} + - RABBIT_MQ_PASSWORD=${RABBIT_MQ_PASSWORD} command: src/pauser.py diff --git a/hardhat.config.js b/hardhat.config.js new file mode 100644 index 00000000..37df865c --- /dev/null +++ b/hardhat.config.js @@ -0,0 +1,15 @@ +/** @type import('hardhat/config').HardhatUserConfig */ +module.exports = { + solidity: "0.8.19", + networks: { + hardhat: { + mining: { + auto: true, + interval: 12000 + } + } + }, + localhost: { + timeout: 100_000 + }, +}; diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 00000000..f4f4e382 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,4256 @@ +{ + "name": "depositor-bot", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "devDependencies": { + "hardhat": "^2.17.1" + } + }, + "node_modules/@chainsafe/as-sha256": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@chainsafe/as-sha256/-/as-sha256-0.3.1.tgz", + "integrity": "sha512-hldFFYuf49ed7DAakWVXSJODuq3pzJEguD8tQ7h+sGkM18vja+OFoJI9krnGmgzyuZC2ETX0NOIcCTy31v2Mtg==", + "dev": true + }, + "node_modules/@chainsafe/persistent-merkle-tree": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/@chainsafe/persistent-merkle-tree/-/persistent-merkle-tree-0.4.2.tgz", + "integrity": "sha512-lLO3ihKPngXLTus/L7WHKaw9PnNJWizlOF1H9NNzHP6Xvh82vzg9F2bzkXhYIFshMZ2gTCEz8tq6STe7r5NDfQ==", + "dev": true, + "dependencies": { + "@chainsafe/as-sha256": "^0.3.1" + } + }, + "node_modules/@chainsafe/ssz": { + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/@chainsafe/ssz/-/ssz-0.9.4.tgz", + "integrity": "sha512-77Qtg2N1ayqs4Bg/wvnWfg5Bta7iy7IRh8XqXh7oNMeP2HBbBwx8m6yTpA8p0EHItWPEBkgZd5S5/LSlp3GXuQ==", + "dev": true, + "dependencies": { + "@chainsafe/as-sha256": "^0.3.1", + "@chainsafe/persistent-merkle-tree": "^0.4.2", + "case": "^1.6.3" + } + }, + "node_modules/@ethersproject/abi": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abi/-/abi-5.7.0.tgz", + "integrity": "sha512-351ktp42TiRcYB3H1OP8yajPeAQstMW/yCFokj/AthP9bLHzQFPlOrxOcwYEDkUAICmOHljvN4K39OMTMUa9RA==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/address": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/hash": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + }, + "node_modules/@ethersproject/abstract-provider": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-provider/-/abstract-provider-5.7.0.tgz", + "integrity": "sha512-R41c9UkchKCpAqStMYUpdunjo3pkEvZC3FAwZn5S5MGbXoMQOHIdHItezTETxAO5bevtMApSyEhn9+CHcDsWBw==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/networks": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/transactions": "^5.7.0", + "@ethersproject/web": "^5.7.0" + } + }, + "node_modules/@ethersproject/abstract-signer": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-signer/-/abstract-signer-5.7.0.tgz", + "integrity": "sha512-a16V8bq1/Cz+TGCkE2OPMTOUDLS3grCpdjoJCYNnVBbdYEMSgKrU0+B90s8b6H+ByYTBZN7a3g76jdIJi7UfKQ==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/abstract-provider": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0" + } + }, + "node_modules/@ethersproject/address": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/address/-/address-5.7.0.tgz", + "integrity": "sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/rlp": "^5.7.0" + } + }, + "node_modules/@ethersproject/base64": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/base64/-/base64-5.7.0.tgz", + "integrity": "sha512-Dr8tcHt2mEbsZr/mwTPIQAf3Ai0Bks/7gTw9dSqk1mQvhW3XvRlmDJr/4n+wg1JmCl16NZue17CDh8xb/vZ0sQ==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/bytes": "^5.7.0" + } + }, + "node_modules/@ethersproject/basex": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/basex/-/basex-5.7.0.tgz", + "integrity": "sha512-ywlh43GwZLv2Voc2gQVTKBoVQ1mti3d8HK5aMxsfu/nRDnMmNqaSJ3r3n85HBByT8OpoY96SXM1FogC533T4zw==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/properties": "^5.7.0" + } + }, + "node_modules/@ethersproject/bignumber": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.7.0.tgz", + "integrity": "sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "bn.js": "^5.2.1" + } + }, + "node_modules/@ethersproject/bytes": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.7.0.tgz", + "integrity": "sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@ethersproject/constants": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/constants/-/constants-5.7.0.tgz", + "integrity": "sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/bignumber": "^5.7.0" + } + }, + "node_modules/@ethersproject/contracts": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/contracts/-/contracts-5.7.0.tgz", + "integrity": "sha512-5GJbzEU3X+d33CdfPhcyS+z8MzsTrBGk/sc+G+59+tPa9yFkl6HQ9D6L0QMgNTA9q8dT0XKxxkyp883XsQvbbg==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/abi": "^5.7.0", + "@ethersproject/abstract-provider": "^5.7.0", + "@ethersproject/abstract-signer": "^5.7.0", + "@ethersproject/address": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/transactions": "^5.7.0" + } + }, + "node_modules/@ethersproject/hash": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/hash/-/hash-5.7.0.tgz", + "integrity": "sha512-qX5WrQfnah1EFnO5zJv1v46a8HW0+E5xuBBDTwMFZLuVTx0tbU2kkx15NqdjxecrLGatQN9FGQKpb1FKdHCt+g==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/abstract-signer": "^5.7.0", + "@ethersproject/address": "^5.7.0", + "@ethersproject/base64": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + }, + "node_modules/@ethersproject/hdnode": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/hdnode/-/hdnode-5.7.0.tgz", + "integrity": "sha512-OmyYo9EENBPPf4ERhR7oj6uAtUAhYGqOnIS+jE5pTXvdKBS99ikzq1E7Iv0ZQZ5V36Lqx1qZLeak0Ra16qpeOg==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/abstract-signer": "^5.7.0", + "@ethersproject/basex": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/pbkdf2": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/sha2": "^5.7.0", + "@ethersproject/signing-key": "^5.7.0", + "@ethersproject/strings": "^5.7.0", + "@ethersproject/transactions": "^5.7.0", + "@ethersproject/wordlists": "^5.7.0" + } + }, + "node_modules/@ethersproject/json-wallets": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/json-wallets/-/json-wallets-5.7.0.tgz", + "integrity": "sha512-8oee5Xgu6+RKgJTkvEMl2wDgSPSAQ9MB/3JYjFV9jlKvcYHUXZC+cQp0njgmxdHkYWn8s6/IqIZYm0YWCjO/0g==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/abstract-signer": "^5.7.0", + "@ethersproject/address": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/hdnode": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/pbkdf2": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/random": "^5.7.0", + "@ethersproject/strings": "^5.7.0", + "@ethersproject/transactions": "^5.7.0", + "aes-js": "3.0.0", + "scrypt-js": "3.0.1" + } + }, + "node_modules/@ethersproject/keccak256": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/keccak256/-/keccak256-5.7.0.tgz", + "integrity": "sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "js-sha3": "0.8.0" + } + }, + "node_modules/@ethersproject/logger": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", + "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ] + }, + "node_modules/@ethersproject/networks": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/@ethersproject/networks/-/networks-5.7.1.tgz", + "integrity": "sha512-n/MufjFYv3yFcUyfhnXotyDlNdFb7onmkSy8aQERi2PjNcnWQ66xXxa3XlS8nCcA8aJKJjIIMNJTC7tu80GwpQ==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@ethersproject/pbkdf2": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/pbkdf2/-/pbkdf2-5.7.0.tgz", + "integrity": "sha512-oR/dBRZR6GTyaofd86DehG72hY6NpAjhabkhxgr3X2FpJtJuodEl2auADWBZfhDHgVCbu3/H/Ocq2uC6dpNjjw==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/sha2": "^5.7.0" + } + }, + "node_modules/@ethersproject/properties": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.7.0.tgz", + "integrity": "sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@ethersproject/providers": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/@ethersproject/providers/-/providers-5.7.2.tgz", + "integrity": "sha512-g34EWZ1WWAVgr4aptGlVBF8mhl3VWjv+8hoAnzStu8Ah22VHBsuGzP17eb6xDVRzw895G4W7vvx60lFFur/1Rg==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/abstract-provider": "^5.7.0", + "@ethersproject/abstract-signer": "^5.7.0", + "@ethersproject/address": "^5.7.0", + "@ethersproject/base64": "^5.7.0", + "@ethersproject/basex": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/hash": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/networks": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/random": "^5.7.0", + "@ethersproject/rlp": "^5.7.0", + "@ethersproject/sha2": "^5.7.0", + "@ethersproject/strings": "^5.7.0", + "@ethersproject/transactions": "^5.7.0", + "@ethersproject/web": "^5.7.0", + "bech32": "1.1.4", + "ws": "7.4.6" + } + }, + "node_modules/@ethersproject/providers/node_modules/ws": { + "version": "7.4.6", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.6.tgz", + "integrity": "sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==", + "dev": true, + "engines": { + "node": ">=8.3.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/@ethersproject/random": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/random/-/random-5.7.0.tgz", + "integrity": "sha512-19WjScqRA8IIeWclFme75VMXSBvi4e6InrUNuaR4s5pTF2qNhcGdCUwdxUVGtDDqC00sDLCO93jPQoDUH4HVmQ==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@ethersproject/rlp": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/rlp/-/rlp-5.7.0.tgz", + "integrity": "sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@ethersproject/sha2": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/sha2/-/sha2-5.7.0.tgz", + "integrity": "sha512-gKlH42riwb3KYp0reLsFTokByAKoJdgFCwI+CCiX/k+Jm2mbNs6oOaCjYQSlI1+XBVejwH2KrmCbMAT/GnRDQw==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "hash.js": "1.1.7" + } + }, + "node_modules/@ethersproject/signing-key": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/signing-key/-/signing-key-5.7.0.tgz", + "integrity": "sha512-MZdy2nL3wO0u7gkB4nA/pEf8lu1TlFswPNmy8AiYkfKTdO6eXBJyUdmHO/ehm/htHw9K/qF8ujnTyUAD+Ry54Q==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "bn.js": "^5.2.1", + "elliptic": "6.5.4", + "hash.js": "1.1.7" + } + }, + "node_modules/@ethersproject/solidity": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/solidity/-/solidity-5.7.0.tgz", + "integrity": "sha512-HmabMd2Dt/raavyaGukF4XxizWKhKQ24DoLtdNbBmNKUOPqwjsKQSdV9GQtj9CBEea9DlzETlVER1gYeXXBGaA==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/sha2": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + }, + "node_modules/@ethersproject/strings": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/strings/-/strings-5.7.0.tgz", + "integrity": "sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@ethersproject/transactions": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/transactions/-/transactions-5.7.0.tgz", + "integrity": "sha512-kmcNicCp1lp8qanMTC3RIikGgoJ80ztTyvtsFvCYpSCfkjhD0jZ2LOrnbcuxuToLIUYYf+4XwD1rP+B/erDIhQ==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/address": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/rlp": "^5.7.0", + "@ethersproject/signing-key": "^5.7.0" + } + }, + "node_modules/@ethersproject/units": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/units/-/units-5.7.0.tgz", + "integrity": "sha512-pD3xLMy3SJu9kG5xDGI7+xhTEmGXlEqXU4OfNapmfnxLVY4EMSSRp7j1k7eezutBPH7RBN/7QPnwR7hzNlEFeg==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@ethersproject/wallet": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/wallet/-/wallet-5.7.0.tgz", + "integrity": "sha512-MhmXlJXEJFBFVKrDLB4ZdDzxcBxQ3rLyCkhNqVu3CDYvR97E+8r01UgrI+TI99Le+aYm/in/0vp86guJuM7FCA==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/abstract-provider": "^5.7.0", + "@ethersproject/abstract-signer": "^5.7.0", + "@ethersproject/address": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/hash": "^5.7.0", + "@ethersproject/hdnode": "^5.7.0", + "@ethersproject/json-wallets": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/random": "^5.7.0", + "@ethersproject/signing-key": "^5.7.0", + "@ethersproject/transactions": "^5.7.0", + "@ethersproject/wordlists": "^5.7.0" + } + }, + "node_modules/@ethersproject/web": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/@ethersproject/web/-/web-5.7.1.tgz", + "integrity": "sha512-Gueu8lSvyjBWL4cYsWsjh6MtMwM0+H4HvqFPZfB6dV8ctbP9zFAO73VG1cMWae0FLPCtz0peKPpZY8/ugJJX2w==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/base64": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + }, + "node_modules/@ethersproject/wordlists": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/wordlists/-/wordlists-5.7.0.tgz", + "integrity": "sha512-S2TFNJNfHWVHNE6cNDjbVlZ6MgE17MIxMbMg2zv3wn+3XSJGosL1m9ZVv3GXCf/2ymSsQ+hRI5IzoMJTG6aoVA==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/hash": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + }, + "node_modules/@metamask/eth-sig-util": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@metamask/eth-sig-util/-/eth-sig-util-4.0.1.tgz", + "integrity": "sha512-tghyZKLHZjcdlDqCA3gNZmLeR0XvOE9U1qoQO9ohyAZT6Pya+H9vkBPcsyXytmYLNgVoin7CKCmweo/R43V+tQ==", + "dev": true, + "dependencies": { + "ethereumjs-abi": "^0.6.8", + "ethereumjs-util": "^6.2.1", + "ethjs-util": "^0.1.6", + "tweetnacl": "^1.0.3", + "tweetnacl-util": "^0.15.1" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/@noble/hashes": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.2.0.tgz", + "integrity": "sha512-FZfhjEDbT5GRswV3C6uvLPHMiVD6lQBmpoX5+eSiPaMTXte/IKqI5dykDxzZB/WBeK/CDuQRBWarPdi3FNY2zQ==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ] + }, + "node_modules/@noble/secp256k1": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/@noble/secp256k1/-/secp256k1-1.7.1.tgz", + "integrity": "sha512-hOUk6AyBFmqVrv7k5WAw/LpszxVbj9gGN4JRkIX52fdFAj1UA61KXmZDvqVEm+pOyec3+fIeZB02LYa/pWOArw==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ] + }, + "node_modules/@nomicfoundation/ethereumjs-block": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-block/-/ethereumjs-block-5.0.1.tgz", + "integrity": "sha512-u1Yioemi6Ckj3xspygu/SfFvm8vZEO8/Yx5a1QLzi6nVU0jz3Pg2OmHKJ5w+D9Ogk1vhwRiqEBAqcb0GVhCyHw==", + "dev": true, + "dependencies": { + "@nomicfoundation/ethereumjs-common": "4.0.1", + "@nomicfoundation/ethereumjs-rlp": "5.0.1", + "@nomicfoundation/ethereumjs-trie": "6.0.1", + "@nomicfoundation/ethereumjs-tx": "5.0.1", + "@nomicfoundation/ethereumjs-util": "9.0.1", + "ethereum-cryptography": "0.1.3", + "ethers": "^5.7.1" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@nomicfoundation/ethereumjs-block/node_modules/ethereum-cryptography": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz", + "integrity": "sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==", + "dev": true, + "dependencies": { + "@types/pbkdf2": "^3.0.0", + "@types/secp256k1": "^4.0.1", + "blakejs": "^1.1.0", + "browserify-aes": "^1.2.0", + "bs58check": "^2.1.2", + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "hash.js": "^1.1.7", + "keccak": "^3.0.0", + "pbkdf2": "^3.0.17", + "randombytes": "^2.1.0", + "safe-buffer": "^5.1.2", + "scrypt-js": "^3.0.0", + "secp256k1": "^4.0.1", + "setimmediate": "^1.0.5" + } + }, + "node_modules/@nomicfoundation/ethereumjs-blockchain": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-blockchain/-/ethereumjs-blockchain-7.0.1.tgz", + "integrity": "sha512-NhzndlGg829XXbqJEYrF1VeZhAwSPgsK/OB7TVrdzft3y918hW5KNd7gIZ85sn6peDZOdjBsAXIpXZ38oBYE5A==", + "dev": true, + "dependencies": { + "@nomicfoundation/ethereumjs-block": "5.0.1", + "@nomicfoundation/ethereumjs-common": "4.0.1", + "@nomicfoundation/ethereumjs-ethash": "3.0.1", + "@nomicfoundation/ethereumjs-rlp": "5.0.1", + "@nomicfoundation/ethereumjs-trie": "6.0.1", + "@nomicfoundation/ethereumjs-tx": "5.0.1", + "@nomicfoundation/ethereumjs-util": "9.0.1", + "abstract-level": "^1.0.3", + "debug": "^4.3.3", + "ethereum-cryptography": "0.1.3", + "level": "^8.0.0", + "lru-cache": "^5.1.1", + "memory-level": "^1.0.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@nomicfoundation/ethereumjs-blockchain/node_modules/ethereum-cryptography": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz", + "integrity": "sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==", + "dev": true, + "dependencies": { + "@types/pbkdf2": "^3.0.0", + "@types/secp256k1": "^4.0.1", + "blakejs": "^1.1.0", + "browserify-aes": "^1.2.0", + "bs58check": "^2.1.2", + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "hash.js": "^1.1.7", + "keccak": "^3.0.0", + "pbkdf2": "^3.0.17", + "randombytes": "^2.1.0", + "safe-buffer": "^5.1.2", + "scrypt-js": "^3.0.0", + "secp256k1": "^4.0.1", + "setimmediate": "^1.0.5" + } + }, + "node_modules/@nomicfoundation/ethereumjs-common": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-common/-/ethereumjs-common-4.0.1.tgz", + "integrity": "sha512-OBErlkfp54GpeiE06brBW/TTbtbuBJV5YI5Nz/aB2evTDo+KawyEzPjBlSr84z/8MFfj8wS2wxzQX1o32cev5g==", + "dev": true, + "dependencies": { + "@nomicfoundation/ethereumjs-util": "9.0.1", + "crc-32": "^1.2.0" + } + }, + "node_modules/@nomicfoundation/ethereumjs-ethash": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-ethash/-/ethereumjs-ethash-3.0.1.tgz", + "integrity": "sha512-KDjGIB5igzWOp8Ik5I6QiRH5DH+XgILlplsHR7TEuWANZA759G6krQ6o8bvj+tRUz08YygMQu/sGd9mJ1DYT8w==", + "dev": true, + "dependencies": { + "@nomicfoundation/ethereumjs-block": "5.0.1", + "@nomicfoundation/ethereumjs-rlp": "5.0.1", + "@nomicfoundation/ethereumjs-util": "9.0.1", + "abstract-level": "^1.0.3", + "bigint-crypto-utils": "^3.0.23", + "ethereum-cryptography": "0.1.3" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@nomicfoundation/ethereumjs-ethash/node_modules/ethereum-cryptography": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz", + "integrity": "sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==", + "dev": true, + "dependencies": { + "@types/pbkdf2": "^3.0.0", + "@types/secp256k1": "^4.0.1", + "blakejs": "^1.1.0", + "browserify-aes": "^1.2.0", + "bs58check": "^2.1.2", + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "hash.js": "^1.1.7", + "keccak": "^3.0.0", + "pbkdf2": "^3.0.17", + "randombytes": "^2.1.0", + "safe-buffer": "^5.1.2", + "scrypt-js": "^3.0.0", + "secp256k1": "^4.0.1", + "setimmediate": "^1.0.5" + } + }, + "node_modules/@nomicfoundation/ethereumjs-evm": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-evm/-/ethereumjs-evm-2.0.1.tgz", + "integrity": "sha512-oL8vJcnk0Bx/onl+TgQOQ1t/534GKFaEG17fZmwtPFeH8S5soiBYPCLUrvANOl4sCp9elYxIMzIiTtMtNNN8EQ==", + "dev": true, + "dependencies": { + "@ethersproject/providers": "^5.7.1", + "@nomicfoundation/ethereumjs-common": "4.0.1", + "@nomicfoundation/ethereumjs-tx": "5.0.1", + "@nomicfoundation/ethereumjs-util": "9.0.1", + "debug": "^4.3.3", + "ethereum-cryptography": "0.1.3", + "mcl-wasm": "^0.7.1", + "rustbn.js": "~0.2.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@nomicfoundation/ethereumjs-evm/node_modules/ethereum-cryptography": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz", + "integrity": "sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==", + "dev": true, + "dependencies": { + "@types/pbkdf2": "^3.0.0", + "@types/secp256k1": "^4.0.1", + "blakejs": "^1.1.0", + "browserify-aes": "^1.2.0", + "bs58check": "^2.1.2", + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "hash.js": "^1.1.7", + "keccak": "^3.0.0", + "pbkdf2": "^3.0.17", + "randombytes": "^2.1.0", + "safe-buffer": "^5.1.2", + "scrypt-js": "^3.0.0", + "secp256k1": "^4.0.1", + "setimmediate": "^1.0.5" + } + }, + "node_modules/@nomicfoundation/ethereumjs-rlp": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-rlp/-/ethereumjs-rlp-5.0.1.tgz", + "integrity": "sha512-xtxrMGa8kP4zF5ApBQBtjlSbN5E2HI8m8FYgVSYAnO6ssUoY5pVPGy2H8+xdf/bmMa22Ce8nWMH3aEW8CcqMeQ==", + "dev": true, + "bin": { + "rlp": "bin/rlp" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@nomicfoundation/ethereumjs-statemanager": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-statemanager/-/ethereumjs-statemanager-2.0.1.tgz", + "integrity": "sha512-B5ApMOnlruVOR7gisBaYwFX+L/AP7i/2oAahatssjPIBVDF6wTX1K7Qpa39E/nzsH8iYuL3krkYeUFIdO3EMUQ==", + "dev": true, + "dependencies": { + "@nomicfoundation/ethereumjs-common": "4.0.1", + "@nomicfoundation/ethereumjs-rlp": "5.0.1", + "debug": "^4.3.3", + "ethereum-cryptography": "0.1.3", + "ethers": "^5.7.1", + "js-sdsl": "^4.1.4" + } + }, + "node_modules/@nomicfoundation/ethereumjs-statemanager/node_modules/ethereum-cryptography": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz", + "integrity": "sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==", + "dev": true, + "dependencies": { + "@types/pbkdf2": "^3.0.0", + "@types/secp256k1": "^4.0.1", + "blakejs": "^1.1.0", + "browserify-aes": "^1.2.0", + "bs58check": "^2.1.2", + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "hash.js": "^1.1.7", + "keccak": "^3.0.0", + "pbkdf2": "^3.0.17", + "randombytes": "^2.1.0", + "safe-buffer": "^5.1.2", + "scrypt-js": "^3.0.0", + "secp256k1": "^4.0.1", + "setimmediate": "^1.0.5" + } + }, + "node_modules/@nomicfoundation/ethereumjs-trie": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-trie/-/ethereumjs-trie-6.0.1.tgz", + "integrity": "sha512-A64It/IMpDVODzCgxDgAAla8jNjNtsoQZIzZUfIV5AY6Coi4nvn7+VReBn5itlxMiL2yaTlQr9TRWp3CSI6VoA==", + "dev": true, + "dependencies": { + "@nomicfoundation/ethereumjs-rlp": "5.0.1", + "@nomicfoundation/ethereumjs-util": "9.0.1", + "@types/readable-stream": "^2.3.13", + "ethereum-cryptography": "0.1.3", + "readable-stream": "^3.6.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@nomicfoundation/ethereumjs-trie/node_modules/ethereum-cryptography": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz", + "integrity": "sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==", + "dev": true, + "dependencies": { + "@types/pbkdf2": "^3.0.0", + "@types/secp256k1": "^4.0.1", + "blakejs": "^1.1.0", + "browserify-aes": "^1.2.0", + "bs58check": "^2.1.2", + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "hash.js": "^1.1.7", + "keccak": "^3.0.0", + "pbkdf2": "^3.0.17", + "randombytes": "^2.1.0", + "safe-buffer": "^5.1.2", + "scrypt-js": "^3.0.0", + "secp256k1": "^4.0.1", + "setimmediate": "^1.0.5" + } + }, + "node_modules/@nomicfoundation/ethereumjs-tx": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-tx/-/ethereumjs-tx-5.0.1.tgz", + "integrity": "sha512-0HwxUF2u2hrsIM1fsasjXvlbDOq1ZHFV2dd1yGq8CA+MEYhaxZr8OTScpVkkxqMwBcc5y83FyPl0J9MZn3kY0w==", + "dev": true, + "dependencies": { + "@chainsafe/ssz": "^0.9.2", + "@ethersproject/providers": "^5.7.2", + "@nomicfoundation/ethereumjs-common": "4.0.1", + "@nomicfoundation/ethereumjs-rlp": "5.0.1", + "@nomicfoundation/ethereumjs-util": "9.0.1", + "ethereum-cryptography": "0.1.3" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@nomicfoundation/ethereumjs-tx/node_modules/ethereum-cryptography": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz", + "integrity": "sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==", + "dev": true, + "dependencies": { + "@types/pbkdf2": "^3.0.0", + "@types/secp256k1": "^4.0.1", + "blakejs": "^1.1.0", + "browserify-aes": "^1.2.0", + "bs58check": "^2.1.2", + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "hash.js": "^1.1.7", + "keccak": "^3.0.0", + "pbkdf2": "^3.0.17", + "randombytes": "^2.1.0", + "safe-buffer": "^5.1.2", + "scrypt-js": "^3.0.0", + "secp256k1": "^4.0.1", + "setimmediate": "^1.0.5" + } + }, + "node_modules/@nomicfoundation/ethereumjs-util": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-util/-/ethereumjs-util-9.0.1.tgz", + "integrity": "sha512-TwbhOWQ8QoSCFhV/DDfSmyfFIHjPjFBj957219+V3jTZYZ2rf9PmDtNOeZWAE3p3vlp8xb02XGpd0v6nTUPbsA==", + "dev": true, + "dependencies": { + "@chainsafe/ssz": "^0.10.0", + "@nomicfoundation/ethereumjs-rlp": "5.0.1", + "ethereum-cryptography": "0.1.3" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@nomicfoundation/ethereumjs-util/node_modules/@chainsafe/persistent-merkle-tree": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@chainsafe/persistent-merkle-tree/-/persistent-merkle-tree-0.5.0.tgz", + "integrity": "sha512-l0V1b5clxA3iwQLXP40zYjyZYospQLZXzBVIhhr9kDg/1qHZfzzHw0jj4VPBijfYCArZDlPkRi1wZaV2POKeuw==", + "dev": true, + "dependencies": { + "@chainsafe/as-sha256": "^0.3.1" + } + }, + "node_modules/@nomicfoundation/ethereumjs-util/node_modules/@chainsafe/ssz": { + "version": "0.10.2", + "resolved": "https://registry.npmjs.org/@chainsafe/ssz/-/ssz-0.10.2.tgz", + "integrity": "sha512-/NL3Lh8K+0q7A3LsiFq09YXS9fPE+ead2rr7vM2QK8PLzrNsw3uqrif9bpRX5UxgeRjM+vYi+boCM3+GM4ovXg==", + "dev": true, + "dependencies": { + "@chainsafe/as-sha256": "^0.3.1", + "@chainsafe/persistent-merkle-tree": "^0.5.0" + } + }, + "node_modules/@nomicfoundation/ethereumjs-util/node_modules/ethereum-cryptography": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz", + "integrity": "sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==", + "dev": true, + "dependencies": { + "@types/pbkdf2": "^3.0.0", + "@types/secp256k1": "^4.0.1", + "blakejs": "^1.1.0", + "browserify-aes": "^1.2.0", + "bs58check": "^2.1.2", + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "hash.js": "^1.1.7", + "keccak": "^3.0.0", + "pbkdf2": "^3.0.17", + "randombytes": "^2.1.0", + "safe-buffer": "^5.1.2", + "scrypt-js": "^3.0.0", + "secp256k1": "^4.0.1", + "setimmediate": "^1.0.5" + } + }, + "node_modules/@nomicfoundation/ethereumjs-vm": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-vm/-/ethereumjs-vm-7.0.1.tgz", + "integrity": "sha512-rArhyn0jPsS/D+ApFsz3yVJMQ29+pVzNZ0VJgkzAZ+7FqXSRtThl1C1prhmlVr3YNUlfpZ69Ak+RUT4g7VoOuQ==", + "dev": true, + "dependencies": { + "@nomicfoundation/ethereumjs-block": "5.0.1", + "@nomicfoundation/ethereumjs-blockchain": "7.0.1", + "@nomicfoundation/ethereumjs-common": "4.0.1", + "@nomicfoundation/ethereumjs-evm": "2.0.1", + "@nomicfoundation/ethereumjs-rlp": "5.0.1", + "@nomicfoundation/ethereumjs-statemanager": "2.0.1", + "@nomicfoundation/ethereumjs-trie": "6.0.1", + "@nomicfoundation/ethereumjs-tx": "5.0.1", + "@nomicfoundation/ethereumjs-util": "9.0.1", + "debug": "^4.3.3", + "ethereum-cryptography": "0.1.3", + "mcl-wasm": "^0.7.1", + "rustbn.js": "~0.2.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@nomicfoundation/ethereumjs-vm/node_modules/ethereum-cryptography": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz", + "integrity": "sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==", + "dev": true, + "dependencies": { + "@types/pbkdf2": "^3.0.0", + "@types/secp256k1": "^4.0.1", + "blakejs": "^1.1.0", + "browserify-aes": "^1.2.0", + "bs58check": "^2.1.2", + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "hash.js": "^1.1.7", + "keccak": "^3.0.0", + "pbkdf2": "^3.0.17", + "randombytes": "^2.1.0", + "safe-buffer": "^5.1.2", + "scrypt-js": "^3.0.0", + "secp256k1": "^4.0.1", + "setimmediate": "^1.0.5" + } + }, + "node_modules/@nomicfoundation/solidity-analyzer": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer/-/solidity-analyzer-0.1.1.tgz", + "integrity": "sha512-1LMtXj1puAxyFusBgUIy5pZk3073cNXYnXUpuNKFghHbIit/xZgbk0AokpUADbNm3gyD6bFWl3LRFh3dhVdREg==", + "dev": true, + "engines": { + "node": ">= 12" + }, + "optionalDependencies": { + "@nomicfoundation/solidity-analyzer-darwin-arm64": "0.1.1", + "@nomicfoundation/solidity-analyzer-darwin-x64": "0.1.1", + "@nomicfoundation/solidity-analyzer-freebsd-x64": "0.1.1", + "@nomicfoundation/solidity-analyzer-linux-arm64-gnu": "0.1.1", + "@nomicfoundation/solidity-analyzer-linux-arm64-musl": "0.1.1", + "@nomicfoundation/solidity-analyzer-linux-x64-gnu": "0.1.1", + "@nomicfoundation/solidity-analyzer-linux-x64-musl": "0.1.1", + "@nomicfoundation/solidity-analyzer-win32-arm64-msvc": "0.1.1", + "@nomicfoundation/solidity-analyzer-win32-ia32-msvc": "0.1.1", + "@nomicfoundation/solidity-analyzer-win32-x64-msvc": "0.1.1" + } + }, + "node_modules/@nomicfoundation/solidity-analyzer-darwin-arm64": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-darwin-arm64/-/solidity-analyzer-darwin-arm64-0.1.1.tgz", + "integrity": "sha512-KcTodaQw8ivDZyF+D76FokN/HdpgGpfjc/gFCImdLUyqB6eSWVaZPazMbeAjmfhx3R0zm/NYVzxwAokFKgrc0w==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@nomicfoundation/solidity-analyzer-darwin-x64": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-darwin-x64/-/solidity-analyzer-darwin-x64-0.1.1.tgz", + "integrity": "sha512-XhQG4BaJE6cIbjAVtzGOGbK3sn1BO9W29uhk9J8y8fZF1DYz0Doj8QDMfpMu+A6TjPDs61lbsmeYodIDnfveSA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@nomicfoundation/solidity-analyzer-freebsd-x64": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-freebsd-x64/-/solidity-analyzer-freebsd-x64-0.1.1.tgz", + "integrity": "sha512-GHF1VKRdHW3G8CndkwdaeLkVBi5A9u2jwtlS7SLhBc8b5U/GcoL39Q+1CSO3hYqePNP+eV5YI7Zgm0ea6kMHoA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@nomicfoundation/solidity-analyzer-linux-arm64-gnu": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-linux-arm64-gnu/-/solidity-analyzer-linux-arm64-gnu-0.1.1.tgz", + "integrity": "sha512-g4Cv2fO37ZsUENQ2vwPnZc2zRenHyAxHcyBjKcjaSmmkKrFr64yvzeNO8S3GBFCo90rfochLs99wFVGT/0owpg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@nomicfoundation/solidity-analyzer-linux-arm64-musl": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-linux-arm64-musl/-/solidity-analyzer-linux-arm64-musl-0.1.1.tgz", + "integrity": "sha512-WJ3CE5Oek25OGE3WwzK7oaopY8xMw9Lhb0mlYuJl/maZVo+WtP36XoQTb7bW/i8aAdHW5Z+BqrHMux23pvxG3w==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@nomicfoundation/solidity-analyzer-linux-x64-gnu": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-linux-x64-gnu/-/solidity-analyzer-linux-x64-gnu-0.1.1.tgz", + "integrity": "sha512-5WN7leSr5fkUBBjE4f3wKENUy9HQStu7HmWqbtknfXkkil+eNWiBV275IOlpXku7v3uLsXTOKpnnGHJYI2qsdA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@nomicfoundation/solidity-analyzer-linux-x64-musl": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-linux-x64-musl/-/solidity-analyzer-linux-x64-musl-0.1.1.tgz", + "integrity": "sha512-KdYMkJOq0SYPQMmErv/63CwGwMm5XHenEna9X9aB8mQmhDBrYrlAOSsIPgFCUSL0hjxE3xHP65/EPXR/InD2+w==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@nomicfoundation/solidity-analyzer-win32-arm64-msvc": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-win32-arm64-msvc/-/solidity-analyzer-win32-arm64-msvc-0.1.1.tgz", + "integrity": "sha512-VFZASBfl4qiBYwW5xeY20exWhmv6ww9sWu/krWSesv3q5hA0o1JuzmPHR4LPN6SUZj5vcqci0O6JOL8BPw+APg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@nomicfoundation/solidity-analyzer-win32-ia32-msvc": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-win32-ia32-msvc/-/solidity-analyzer-win32-ia32-msvc-0.1.1.tgz", + "integrity": "sha512-JnFkYuyCSA70j6Si6cS1A9Gh1aHTEb8kOTBApp/c7NRTFGNMH8eaInKlyuuiIbvYFhlXW4LicqyYuWNNq9hkpQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@nomicfoundation/solidity-analyzer-win32-x64-msvc": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-win32-x64-msvc/-/solidity-analyzer-win32-x64-msvc-0.1.1.tgz", + "integrity": "sha512-HrVJr6+WjIXGnw3Q9u6KQcbZCtk0caVWhCdFADySvRyUxJ8PnzlaP+MhwNE8oyT8OZ6ejHBRrrgjSqDCFXGirw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@scure/base": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.1.1.tgz", + "integrity": "sha512-ZxOhsSyxYwLJj3pLZCefNitxsj093tb2vq90mp2txoYeBqbcjDjqFhyM8eUjq/uFm6zJ+mUuqxlS2FkuSY1MTA==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ] + }, + "node_modules/@scure/bip32": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.1.5.tgz", + "integrity": "sha512-XyNh1rB0SkEqd3tXcXMi+Xe1fvg+kUIcoRIEujP1Jgv7DqW2r9lg3Ah0NkFaCs9sTkQAQA8kw7xiRXzENi9Rtw==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "dependencies": { + "@noble/hashes": "~1.2.0", + "@noble/secp256k1": "~1.7.0", + "@scure/base": "~1.1.0" + } + }, + "node_modules/@scure/bip39": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.1.1.tgz", + "integrity": "sha512-t+wDck2rVkh65Hmv280fYdVdY25J9YeEUIgn2LG1WM6gxFkGzcksoDiUkWVpVp3Oex9xGC68JU2dSbUfwZ2jPg==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "dependencies": { + "@noble/hashes": "~1.2.0", + "@scure/base": "~1.1.0" + } + }, + "node_modules/@sentry/core": { + "version": "5.30.0", + "resolved": "https://registry.npmjs.org/@sentry/core/-/core-5.30.0.tgz", + "integrity": "sha512-TmfrII8w1PQZSZgPpUESqjB+jC6MvZJZdLtE/0hZ+SrnKhW3x5WlYLvTXZpcWePYBku7rl2wn1RZu6uT0qCTeg==", + "dev": true, + "dependencies": { + "@sentry/hub": "5.30.0", + "@sentry/minimal": "5.30.0", + "@sentry/types": "5.30.0", + "@sentry/utils": "5.30.0", + "tslib": "^1.9.3" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@sentry/hub": { + "version": "5.30.0", + "resolved": "https://registry.npmjs.org/@sentry/hub/-/hub-5.30.0.tgz", + "integrity": "sha512-2tYrGnzb1gKz2EkMDQcfLrDTvmGcQPuWxLnJKXJvYTQDGLlEvi2tWz1VIHjunmOvJrB5aIQLhm+dcMRwFZDCqQ==", + "dev": true, + "dependencies": { + "@sentry/types": "5.30.0", + "@sentry/utils": "5.30.0", + "tslib": "^1.9.3" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@sentry/minimal": { + "version": "5.30.0", + "resolved": "https://registry.npmjs.org/@sentry/minimal/-/minimal-5.30.0.tgz", + "integrity": "sha512-BwWb/owZKtkDX+Sc4zCSTNcvZUq7YcH3uAVlmh/gtR9rmUvbzAA3ewLuB3myi4wWRAMEtny6+J/FN/x+2wn9Xw==", + "dev": true, + "dependencies": { + "@sentry/hub": "5.30.0", + "@sentry/types": "5.30.0", + "tslib": "^1.9.3" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@sentry/node": { + "version": "5.30.0", + "resolved": "https://registry.npmjs.org/@sentry/node/-/node-5.30.0.tgz", + "integrity": "sha512-Br5oyVBF0fZo6ZS9bxbJZG4ApAjRqAnqFFurMVJJdunNb80brh7a5Qva2kjhm+U6r9NJAB5OmDyPkA1Qnt+QVg==", + "dev": true, + "dependencies": { + "@sentry/core": "5.30.0", + "@sentry/hub": "5.30.0", + "@sentry/tracing": "5.30.0", + "@sentry/types": "5.30.0", + "@sentry/utils": "5.30.0", + "cookie": "^0.4.1", + "https-proxy-agent": "^5.0.0", + "lru_map": "^0.3.3", + "tslib": "^1.9.3" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@sentry/tracing": { + "version": "5.30.0", + "resolved": "https://registry.npmjs.org/@sentry/tracing/-/tracing-5.30.0.tgz", + "integrity": "sha512-dUFowCr0AIMwiLD7Fs314Mdzcug+gBVo/+NCMyDw8tFxJkwWAKl7Qa2OZxLQ0ZHjakcj1hNKfCQJ9rhyfOl4Aw==", + "dev": true, + "dependencies": { + "@sentry/hub": "5.30.0", + "@sentry/minimal": "5.30.0", + "@sentry/types": "5.30.0", + "@sentry/utils": "5.30.0", + "tslib": "^1.9.3" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@sentry/types": { + "version": "5.30.0", + "resolved": "https://registry.npmjs.org/@sentry/types/-/types-5.30.0.tgz", + "integrity": "sha512-R8xOqlSTZ+htqrfteCWU5Nk0CDN5ApUTvrlvBuiH1DyP6czDZ4ktbZB0hAgBlVcK0U+qpD3ag3Tqqpa5Q67rPw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/@sentry/utils": { + "version": "5.30.0", + "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-5.30.0.tgz", + "integrity": "sha512-zaYmoH0NWWtvnJjC9/CBseXMtKHm/tm40sz3YfJRxeQjyzRqNQPgivpd9R/oDJCYj999mzdW382p/qi2ypjLww==", + "dev": true, + "dependencies": { + "@sentry/types": "5.30.0", + "tslib": "^1.9.3" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@types/bn.js": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-5.1.1.tgz", + "integrity": "sha512-qNrYbZqMx0uJAfKnKclPh+dTwK33KfLHYqtyODwd5HnXOjnkhc4qgn3BrK6RWyGZm5+sIFE7Q7Vz6QQtJB7w7g==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/@types/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-ssE3Vlrys7sdIzs5LOxCzTVMsU7i9oa/IaW92wF32JFb3CVczqOkru2xspuKczHEbG3nvmPY7IFqVmGGHdNbYw==", + "dev": true + }, + "node_modules/@types/node": { + "version": "20.5.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.5.1.tgz", + "integrity": "sha512-4tT2UrL5LBqDwoed9wZ6N3umC4Yhz3W3FloMmiiG4JwmUJWpie0c7lcnUNd4gtMKuDEO4wRVS8B6Xa0uMRsMKg==", + "dev": true + }, + "node_modules/@types/pbkdf2": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@types/pbkdf2/-/pbkdf2-3.1.0.tgz", + "integrity": "sha512-Cf63Rv7jCQ0LaL8tNXmEyqTHuIJxRdlS5vMh1mj5voN4+QFhVZnlZruezqpWYDiJ8UTzhP0VmeLXCmBk66YrMQ==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/readable-stream": { + "version": "2.3.15", + "resolved": "https://registry.npmjs.org/@types/readable-stream/-/readable-stream-2.3.15.tgz", + "integrity": "sha512-oM5JSKQCcICF1wvGgmecmHldZ48OZamtMxcGGVICOJA8o8cahXC1zEVAif8iwoc5j8etxFaRFnf095+CDsuoFQ==", + "dev": true, + "dependencies": { + "@types/node": "*", + "safe-buffer": "~5.1.1" + } + }, + "node_modules/@types/secp256k1": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/secp256k1/-/secp256k1-4.0.3.tgz", + "integrity": "sha512-Da66lEIFeIz9ltsdMZcpQvmrmmoqrfju8pm1BH8WbYjZSwUgCwXLb9C+9XYogwBITnbsSaMdVPb2ekf7TV+03w==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/abstract-level": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/abstract-level/-/abstract-level-1.0.3.tgz", + "integrity": "sha512-t6jv+xHy+VYwc4xqZMn2Pa9DjcdzvzZmQGRjTFc8spIbRGHgBrEKbPq+rYXc7CCo0lxgYvSgKVg9qZAhpVQSjA==", + "dev": true, + "dependencies": { + "buffer": "^6.0.3", + "catering": "^2.1.0", + "is-buffer": "^2.0.5", + "level-supports": "^4.0.0", + "level-transcoder": "^1.0.1", + "module-error": "^1.0.1", + "queue-microtask": "^1.2.3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/adm-zip": { + "version": "0.4.16", + "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.4.16.tgz", + "integrity": "sha512-TFi4HBKSGfIKsK5YCkKaaFG2m4PEDyViZmEwof3MTIgzimHLto6muaHVpbrljdIvIrFZzEq/p4nafOeLcYegrg==", + "dev": true, + "engines": { + "node": ">=0.3.0" + } + }, + "node_modules/aes-js": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/aes-js/-/aes-js-3.0.0.tgz", + "integrity": "sha512-H7wUZRn8WpTq9jocdxQ2c8x2sKo9ZVmzfRE13GiNJXfp7NcKYEdvl3vspKjXox6RIG2VtaRe4JFvxG4rqp2Zuw==", + "dev": true + }, + "node_modules/agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "dev": true, + "dependencies": { + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/aggregate-error": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", + "dev": true, + "dependencies": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-colors": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", + "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "dev": true, + "dependencies": { + "type-fest": "^0.21.3" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dev": true, + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "node_modules/base-x": { + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.9.tgz", + "integrity": "sha512-H7JU6iBHTal1gp56aKoaa//YUxEaAOUiydvrV/pILqIHXTtqxSkATOnDA2u+jZ/61sD+L/412+7kzXRtWukhpQ==", + "dev": true, + "dependencies": { + "safe-buffer": "^5.0.1" + } + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/bech32": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/bech32/-/bech32-1.1.4.tgz", + "integrity": "sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ==", + "dev": true + }, + "node_modules/bigint-crypto-utils": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/bigint-crypto-utils/-/bigint-crypto-utils-3.3.0.tgz", + "integrity": "sha512-jOTSb+drvEDxEq6OuUybOAv/xxoh3cuYRUIPyu8sSHQNKM303UQ2R1DAo45o1AkcIXw6fzbaFI1+xGGdaXs2lg==", + "dev": true, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/blakejs": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/blakejs/-/blakejs-1.2.1.tgz", + "integrity": "sha512-QXUSXI3QVc/gJME0dBpXrag1kbzOqCjCX8/b54ntNyW6sjtoqxqRk3LTmXzaJoh71zMsDCjM+47jS7XiwN/+fQ==", + "dev": true + }, + "node_modules/bn.js": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", + "dev": true + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/brorand": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", + "integrity": "sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==", + "dev": true + }, + "node_modules/browser-level": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/browser-level/-/browser-level-1.0.1.tgz", + "integrity": "sha512-XECYKJ+Dbzw0lbydyQuJzwNXtOpbMSq737qxJN11sIRTErOMShvDpbzTlgju7orJKvx4epULolZAuJGLzCmWRQ==", + "dev": true, + "dependencies": { + "abstract-level": "^1.0.2", + "catering": "^2.1.1", + "module-error": "^1.0.2", + "run-parallel-limit": "^1.1.0" + } + }, + "node_modules/browser-stdout": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", + "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", + "dev": true + }, + "node_modules/browserify-aes": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", + "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", + "dev": true, + "dependencies": { + "buffer-xor": "^1.0.3", + "cipher-base": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.3", + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/bs58": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz", + "integrity": "sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw==", + "dev": true, + "dependencies": { + "base-x": "^3.0.2" + } + }, + "node_modules/bs58check": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/bs58check/-/bs58check-2.1.2.tgz", + "integrity": "sha512-0TS1jicxdU09dwJMNZtVAfzPi6Q6QeN0pM1Fkzrjn+XYHvzMKPU3pHVpva+769iNVSfIYWf7LJ6WR+BuuMf8cA==", + "dev": true, + "dependencies": { + "bs58": "^4.0.0", + "create-hash": "^1.1.0", + "safe-buffer": "^5.1.2" + } + }, + "node_modules/buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true + }, + "node_modules/buffer-xor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", + "integrity": "sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==", + "dev": true + }, + "node_modules/busboy": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz", + "integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==", + "dev": true, + "dependencies": { + "streamsearch": "^1.1.0" + }, + "engines": { + "node": ">=10.16.0" + } + }, + "node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/case": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/case/-/case-1.6.3.tgz", + "integrity": "sha512-mzDSXIPaFwVDvZAHqZ9VlbyF4yyXRuX6IvB06WvPYkqJVO24kX1PPhv9bfpKNFZyxYFmmgo03HUiD8iklmJYRQ==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/catering": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/catering/-/catering-2.1.1.tgz", + "integrity": "sha512-K7Qy8O9p76sL3/3m7/zLKbRkyOlSZAgzEaLhyj2mXS8PsCud2Eo4hAb8aLtZqHh0QGqLcb9dlJSu6lHRVENm1w==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", + "dev": true + }, + "node_modules/cipher-base": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", + "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", + "dev": true, + "dependencies": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/classic-level": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/classic-level/-/classic-level-1.3.0.tgz", + "integrity": "sha512-iwFAJQYtqRTRM0F6L8h4JCt00ZSGdOyqh7yVrhhjrOpFhmBjNlRUey64MCiyo6UmQHMJ+No3c81nujPv+n9yrg==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "abstract-level": "^1.0.2", + "catering": "^2.1.0", + "module-error": "^1.0.1", + "napi-macros": "^2.2.2", + "node-gyp-build": "^4.3.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dev": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "node_modules/command-exists": { + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/command-exists/-/command-exists-1.2.9.tgz", + "integrity": "sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w==", + "dev": true + }, + "node_modules/commander": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/commander/-/commander-3.0.2.tgz", + "integrity": "sha512-Gar0ASD4BDyKC4hl4DwHqDrmvjoxWKZigVnAbn5H1owvm4CxCPdb0HQDehwNYMJpla5+M2tPmPARzhtYuwpHow==", + "dev": true + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, + "node_modules/cookie": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", + "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/crc-32": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.2.tgz", + "integrity": "sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==", + "dev": true, + "bin": { + "crc32": "bin/crc32.njs" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/create-hash": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", + "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", + "dev": true, + "dependencies": { + "cipher-base": "^1.0.1", + "inherits": "^2.0.1", + "md5.js": "^1.3.4", + "ripemd160": "^2.0.1", + "sha.js": "^2.4.0" + } + }, + "node_modules/create-hmac": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", + "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", + "dev": true, + "dependencies": { + "cipher-base": "^1.0.3", + "create-hash": "^1.1.0", + "inherits": "^2.0.1", + "ripemd160": "^2.0.0", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/decamelize": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz", + "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/diff": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz", + "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==", + "dev": true, + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/elliptic": { + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", + "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", + "dev": true, + "dependencies": { + "bn.js": "^4.11.9", + "brorand": "^1.1.0", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.1", + "inherits": "^2.0.4", + "minimalistic-assert": "^1.0.1", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "node_modules/elliptic/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "node_modules/enquirer": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.4.1.tgz", + "integrity": "sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==", + "dev": true, + "dependencies": { + "ansi-colors": "^4.1.1", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/env-paths": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/ethereum-cryptography": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-1.2.0.tgz", + "integrity": "sha512-6yFQC9b5ug6/17CQpCyE3k9eKBMdhyVjzUy1WkiuY/E4vj/SXDBbCw8QEIaXqf0Mf2SnY6RmpDcwlUmBSS0EJw==", + "dev": true, + "dependencies": { + "@noble/hashes": "1.2.0", + "@noble/secp256k1": "1.7.1", + "@scure/bip32": "1.1.5", + "@scure/bip39": "1.1.1" + } + }, + "node_modules/ethereumjs-abi": { + "version": "0.6.8", + "resolved": "https://registry.npmjs.org/ethereumjs-abi/-/ethereumjs-abi-0.6.8.tgz", + "integrity": "sha512-Tx0r/iXI6r+lRsdvkFDlut0N08jWMnKRZ6Gkq+Nmw75lZe4e6o3EkSnkaBP5NF6+m5PTGAr9JP43N3LyeoglsA==", + "dev": true, + "dependencies": { + "bn.js": "^4.11.8", + "ethereumjs-util": "^6.0.0" + } + }, + "node_modules/ethereumjs-abi/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + }, + "node_modules/ethereumjs-util": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-6.2.1.tgz", + "integrity": "sha512-W2Ktez4L01Vexijrm5EB6w7dg4n/TgpoYU4avuT5T3Vmnw/eCRtiBrJfQYS/DCSvDIOLn2k57GcHdeBcgVxAqw==", + "dev": true, + "dependencies": { + "@types/bn.js": "^4.11.3", + "bn.js": "^4.11.0", + "create-hash": "^1.1.2", + "elliptic": "^6.5.2", + "ethereum-cryptography": "^0.1.3", + "ethjs-util": "0.1.6", + "rlp": "^2.2.3" + } + }, + "node_modules/ethereumjs-util/node_modules/@types/bn.js": { + "version": "4.11.6", + "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-4.11.6.tgz", + "integrity": "sha512-pqr857jrp2kPuO9uRjZ3PwnJTjoQy+fcdxvBTvHm6dkmEL9q+hDD/2j/0ELOBPtPnS8LjCX0gI9nbl8lVkadpg==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/ethereumjs-util/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + }, + "node_modules/ethereumjs-util/node_modules/ethereum-cryptography": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz", + "integrity": "sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==", + "dev": true, + "dependencies": { + "@types/pbkdf2": "^3.0.0", + "@types/secp256k1": "^4.0.1", + "blakejs": "^1.1.0", + "browserify-aes": "^1.2.0", + "bs58check": "^2.1.2", + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "hash.js": "^1.1.7", + "keccak": "^3.0.0", + "pbkdf2": "^3.0.17", + "randombytes": "^2.1.0", + "safe-buffer": "^5.1.2", + "scrypt-js": "^3.0.0", + "secp256k1": "^4.0.1", + "setimmediate": "^1.0.5" + } + }, + "node_modules/ethers": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/ethers/-/ethers-5.7.2.tgz", + "integrity": "sha512-wswUsmWo1aOK8rR7DIKiWSw9DbLWe6x98Jrn8wcTflTVvaXhAMaB5zGAXy0GYQEQp9iO1iSHWVyARQm11zUtyg==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/abi": "5.7.0", + "@ethersproject/abstract-provider": "5.7.0", + "@ethersproject/abstract-signer": "5.7.0", + "@ethersproject/address": "5.7.0", + "@ethersproject/base64": "5.7.0", + "@ethersproject/basex": "5.7.0", + "@ethersproject/bignumber": "5.7.0", + "@ethersproject/bytes": "5.7.0", + "@ethersproject/constants": "5.7.0", + "@ethersproject/contracts": "5.7.0", + "@ethersproject/hash": "5.7.0", + "@ethersproject/hdnode": "5.7.0", + "@ethersproject/json-wallets": "5.7.0", + "@ethersproject/keccak256": "5.7.0", + "@ethersproject/logger": "5.7.0", + "@ethersproject/networks": "5.7.1", + "@ethersproject/pbkdf2": "5.7.0", + "@ethersproject/properties": "5.7.0", + "@ethersproject/providers": "5.7.2", + "@ethersproject/random": "5.7.0", + "@ethersproject/rlp": "5.7.0", + "@ethersproject/sha2": "5.7.0", + "@ethersproject/signing-key": "5.7.0", + "@ethersproject/solidity": "5.7.0", + "@ethersproject/strings": "5.7.0", + "@ethersproject/transactions": "5.7.0", + "@ethersproject/units": "5.7.0", + "@ethersproject/wallet": "5.7.0", + "@ethersproject/web": "5.7.1", + "@ethersproject/wordlists": "5.7.0" + } + }, + "node_modules/ethjs-util": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/ethjs-util/-/ethjs-util-0.1.6.tgz", + "integrity": "sha512-CUnVOQq7gSpDHZVVrQW8ExxUETWrnrvXYvYz55wOU8Uj4VCgw56XC2B/fVqQN+f7gmrnRHSLVnFAwsCuNwji8w==", + "dev": true, + "dependencies": { + "is-hex-prefixed": "1.0.0", + "strip-hex-prefix": "1.0.0" + }, + "engines": { + "node": ">=6.5.0", + "npm": ">=3" + } + }, + "node_modules/evp_bytestokey": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", + "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", + "dev": true, + "dependencies": { + "md5.js": "^1.3.4", + "safe-buffer": "^5.1.1" + } + }, + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==", + "dev": true, + "dependencies": { + "locate-path": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/flat": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", + "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", + "dev": true, + "bin": { + "flat": "cli.js" + } + }, + "node_modules/follow-redirects": { + "version": "1.15.2", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", + "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/fp-ts": { + "version": "1.19.3", + "resolved": "https://registry.npmjs.org/fp-ts/-/fp-ts-1.19.3.tgz", + "integrity": "sha512-H5KQDspykdHuztLTg+ajGN0Z2qUjcEf3Ybxc6hLt0k7/zPkn29XnKnxlBPyW2XIddWrGaJBzBl4VLYOtk39yZg==", + "dev": true + }, + "node_modules/fs-extra": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", + "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + }, + "engines": { + "node": ">=6 <7 || >=8" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true + }, + "node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==", + "dev": true + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true, + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/glob": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "dev": true + }, + "node_modules/hardhat": { + "version": "2.17.1", + "resolved": "https://registry.npmjs.org/hardhat/-/hardhat-2.17.1.tgz", + "integrity": "sha512-1PxRkfjhEzXs/wDxI5YgzYBxNmvzifBTjYzuopwel+vXpAhCudplusJthN5eig0FTs4qbi828DBIITEDh8x9LA==", + "dev": true, + "dependencies": { + "@ethersproject/abi": "^5.1.2", + "@metamask/eth-sig-util": "^4.0.0", + "@nomicfoundation/ethereumjs-block": "5.0.1", + "@nomicfoundation/ethereumjs-blockchain": "7.0.1", + "@nomicfoundation/ethereumjs-common": "4.0.1", + "@nomicfoundation/ethereumjs-evm": "2.0.1", + "@nomicfoundation/ethereumjs-rlp": "5.0.1", + "@nomicfoundation/ethereumjs-statemanager": "2.0.1", + "@nomicfoundation/ethereumjs-trie": "6.0.1", + "@nomicfoundation/ethereumjs-tx": "5.0.1", + "@nomicfoundation/ethereumjs-util": "9.0.1", + "@nomicfoundation/ethereumjs-vm": "7.0.1", + "@nomicfoundation/solidity-analyzer": "^0.1.0", + "@sentry/node": "^5.18.1", + "@types/bn.js": "^5.1.0", + "@types/lru-cache": "^5.1.0", + "adm-zip": "^0.4.16", + "aggregate-error": "^3.0.0", + "ansi-escapes": "^4.3.0", + "chalk": "^2.4.2", + "chokidar": "^3.4.0", + "ci-info": "^2.0.0", + "debug": "^4.1.1", + "enquirer": "^2.3.0", + "env-paths": "^2.2.0", + "ethereum-cryptography": "^1.0.3", + "ethereumjs-abi": "^0.6.8", + "find-up": "^2.1.0", + "fp-ts": "1.19.3", + "fs-extra": "^7.0.1", + "glob": "7.2.0", + "immutable": "^4.0.0-rc.12", + "io-ts": "1.10.4", + "keccak": "^3.0.2", + "lodash": "^4.17.11", + "mnemonist": "^0.38.0", + "mocha": "^10.0.0", + "p-map": "^4.0.0", + "raw-body": "^2.4.1", + "resolve": "1.17.0", + "semver": "^6.3.0", + "solc": "0.7.3", + "source-map-support": "^0.5.13", + "stacktrace-parser": "^0.1.10", + "tsort": "0.0.1", + "undici": "^5.14.0", + "uuid": "^8.3.2", + "ws": "^7.4.6" + }, + "bin": { + "hardhat": "internal/cli/bootstrap.js" + }, + "peerDependencies": { + "ts-node": "*", + "typescript": "*" + }, + "peerDependenciesMeta": { + "ts-node": { + "optional": true + }, + "typescript": { + "optional": true + } + } + }, + "node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/hash-base": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", + "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.4", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/hash-base/node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/hash.js": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", + "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.1" + } + }, + "node_modules/he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "dev": true, + "bin": { + "he": "bin/he" + } + }, + "node_modules/hmac-drbg": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "integrity": "sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==", + "dev": true, + "dependencies": { + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "node_modules/http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "dev": true, + "dependencies": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "dev": true, + "dependencies": { + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/immutable": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.2.tgz", + "integrity": "sha512-oGXzbEDem9OOpDWZu88jGiYCvIsLHMvGw+8OXlpsvTFvIQplQbjg1B1cvKg8f7Hoch6+NGjpPsH1Fr+Mc2D1aA==", + "dev": true + }, + "node_modules/indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dev": true, + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "node_modules/io-ts": { + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/io-ts/-/io-ts-1.10.4.tgz", + "integrity": "sha512-b23PteSnYXSONJ6JQXRAlvJhuw8KOtkqa87W4wDtvMrud/DTJd5X+NpOOI+O/zZwVq6v0VLAaJ+1EDViKEuN9g==", + "dev": true, + "dependencies": { + "fp-ts": "^1.0.0" + } + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-buffer": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", + "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "engines": { + "node": ">=4" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-hex-prefixed": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-hex-prefixed/-/is-hex-prefixed-1.0.0.tgz", + "integrity": "sha512-WvtOiug1VFrE9v1Cydwm+FnXd3+w9GaeVUss5W4v/SLy3UW00vP+6iNF2SdnfiBoLy4bTqVdkftNGTUeOFVsbA==", + "dev": true, + "engines": { + "node": ">=6.5.0", + "npm": ">=3" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-plain-obj": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", + "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-unicode-supported": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/js-sdsl": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.4.2.tgz", + "integrity": "sha512-dwXFwByc/ajSV6m5bcKAPwe4yDDF6D614pxmIi5odytzxRlwqF6nwoiCek80Ixc7Cvma5awClxrzFtxCQvcM8w==", + "dev": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/js-sdsl" + } + }, + "node_modules/js-sha3": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.8.0.tgz", + "integrity": "sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==", + "dev": true + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", + "dev": true, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/keccak": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/keccak/-/keccak-3.0.3.tgz", + "integrity": "sha512-JZrLIAJWuZxKbCilMpNz5Vj7Vtb4scDG3dMXLOsbzBmQGyjwE61BbW7bJkfKKCShXiQZt3T6sBgALRtmd+nZaQ==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "node-addon-api": "^2.0.0", + "node-gyp-build": "^4.2.0", + "readable-stream": "^3.6.0" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/klaw": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/klaw/-/klaw-1.3.1.tgz", + "integrity": "sha512-TED5xi9gGQjGpNnvRWknrwAB1eL5GciPfVFOt3Vk1OJCVDQbzuSfrF3hkUQKlsgKrG1F+0t5W0m+Fje1jIt8rw==", + "dev": true, + "optionalDependencies": { + "graceful-fs": "^4.1.9" + } + }, + "node_modules/level": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/level/-/level-8.0.0.tgz", + "integrity": "sha512-ypf0jjAk2BWI33yzEaaotpq7fkOPALKAgDBxggO6Q9HGX2MRXn0wbP1Jn/tJv1gtL867+YOjOB49WaUF3UoJNQ==", + "dev": true, + "dependencies": { + "browser-level": "^1.0.1", + "classic-level": "^1.2.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/level" + } + }, + "node_modules/level-supports": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/level-supports/-/level-supports-4.0.1.tgz", + "integrity": "sha512-PbXpve8rKeNcZ9C1mUicC9auIYFyGpkV9/i6g76tLgANwWhtG2v7I4xNBUlkn3lE2/dZF3Pi0ygYGtLc4RXXdA==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/level-transcoder": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/level-transcoder/-/level-transcoder-1.0.1.tgz", + "integrity": "sha512-t7bFwFtsQeD8cl8NIoQ2iwxA0CL/9IFw7/9gAjOonH0PWTTiRfY7Hq+Ejbsxh86tXobDQ6IOiddjNYIfOBs06w==", + "dev": true, + "dependencies": { + "buffer": "^6.0.3", + "module-error": "^1.0.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==", + "dev": true, + "dependencies": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "node_modules/log-symbols": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", + "dev": true, + "dependencies": { + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/log-symbols/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/log-symbols/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/log-symbols/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/log-symbols/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/log-symbols/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/log-symbols/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/lru_map": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/lru_map/-/lru_map-0.3.3.tgz", + "integrity": "sha512-Pn9cox5CsMYngeDbmChANltQl+5pi6XmTrraMSzhPmMBbmgcxmqWry0U3PGapCU1yB4/LqCcom7qhHZiF/jGfQ==", + "dev": true + }, + "node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/mcl-wasm": { + "version": "0.7.9", + "resolved": "https://registry.npmjs.org/mcl-wasm/-/mcl-wasm-0.7.9.tgz", + "integrity": "sha512-iJIUcQWA88IJB/5L15GnJVnSQJmf/YaxxV6zRavv83HILHaJQb6y0iFyDMdDO0gN8X37tdxmAOrH/P8B6RB8sQ==", + "dev": true, + "engines": { + "node": ">=8.9.0" + } + }, + "node_modules/md5.js": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", + "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", + "dev": true, + "dependencies": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "node_modules/memory-level": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/memory-level/-/memory-level-1.0.0.tgz", + "integrity": "sha512-UXzwewuWeHBz5krr7EvehKcmLFNoXxGcvuYhC41tRnkrTbJohtS7kVn9akmgirtRygg+f7Yjsfi8Uu5SGSQ4Og==", + "dev": true, + "dependencies": { + "abstract-level": "^1.0.0", + "functional-red-black-tree": "^1.0.1", + "module-error": "^1.0.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/memorystream": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz", + "integrity": "sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==", + "dev": true, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", + "dev": true + }, + "node_modules/minimalistic-crypto-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", + "integrity": "sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==", + "dev": true + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/mnemonist": { + "version": "0.38.5", + "resolved": "https://registry.npmjs.org/mnemonist/-/mnemonist-0.38.5.tgz", + "integrity": "sha512-bZTFT5rrPKtPJxj8KSV0WkPyNxl72vQepqqVUAW2ARUpUSF2qXMB6jZj7hW5/k7C1rtpzqbD/IIbJwLXUjCHeg==", + "dev": true, + "dependencies": { + "obliterator": "^2.0.0" + } + }, + "node_modules/mocha": { + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.2.0.tgz", + "integrity": "sha512-IDY7fl/BecMwFHzoqF2sg/SHHANeBoMMXFlS9r0OXKDssYE1M5O43wUY/9BVPeIvfH2zmEbBfseqN9gBQZzXkg==", + "dev": true, + "dependencies": { + "ansi-colors": "4.1.1", + "browser-stdout": "1.3.1", + "chokidar": "3.5.3", + "debug": "4.3.4", + "diff": "5.0.0", + "escape-string-regexp": "4.0.0", + "find-up": "5.0.0", + "glob": "7.2.0", + "he": "1.2.0", + "js-yaml": "4.1.0", + "log-symbols": "4.1.0", + "minimatch": "5.0.1", + "ms": "2.1.3", + "nanoid": "3.3.3", + "serialize-javascript": "6.0.0", + "strip-json-comments": "3.1.1", + "supports-color": "8.1.1", + "workerpool": "6.2.1", + "yargs": "16.2.0", + "yargs-parser": "20.2.4", + "yargs-unparser": "2.0.0" + }, + "bin": { + "_mocha": "bin/_mocha", + "mocha": "bin/mocha.js" + }, + "engines": { + "node": ">= 14.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mochajs" + } + }, + "node_modules/mocha/node_modules/ansi-colors": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", + "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/mocha/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/mocha/node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/mocha/node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/mocha/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/mocha/node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/mocha/node_modules/minimatch": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.0.1.tgz", + "integrity": "sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/mocha/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + }, + "node_modules/mocha/node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/mocha/node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/mocha/node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/mocha/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/module-error": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/module-error/-/module-error-1.0.2.tgz", + "integrity": "sha512-0yuvsqSCv8LbaOKhnsQ/T5JhyFlCYLPXK3U2sgV10zoKQwzs/MyfuQUOZQ1V/6OCOJsK/TRgNVrPuPDqtdMFtA==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/nanoid": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.3.tgz", + "integrity": "sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w==", + "dev": true, + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/napi-macros": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/napi-macros/-/napi-macros-2.2.2.tgz", + "integrity": "sha512-hmEVtAGYzVQpCKdbQea4skABsdXW4RUh5t5mJ2zzqowJS2OyXZTU1KhDVFhx+NlWZ4ap9mqR9TcDO3LTTttd+g==", + "dev": true + }, + "node_modules/node-addon-api": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-2.0.2.tgz", + "integrity": "sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA==", + "dev": true + }, + "node_modules/node-gyp-build": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.6.0.tgz", + "integrity": "sha512-NTZVKn9IylLwUzaKjkas1e4u2DLNcV4rdYagA4PWdPwW87Bi7z+BznyKSRwS/761tV/lzCGXplWsiaMjLqP2zQ==", + "dev": true, + "bin": { + "node-gyp-build": "bin.js", + "node-gyp-build-optional": "optional.js", + "node-gyp-build-test": "build-test.js" + } + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/obliterator": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/obliterator/-/obliterator-2.0.4.tgz", + "integrity": "sha512-lgHwxlxV1qIg1Eap7LgIeoBWIMFibOjbrYPIPJZcI1mmGAI2m3lNYpK12Y+GBdPQ0U1hRwSord7GIaawz962qQ==", + "dev": true + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "dev": true, + "dependencies": { + "p-try": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==", + "dev": true, + "dependencies": { + "p-limit": "^1.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/p-map": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "dev": true, + "dependencies": { + "aggregate-error": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "node_modules/pbkdf2": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz", + "integrity": "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==", + "dev": true, + "dependencies": { + "create-hash": "^1.1.2", + "create-hmac": "^1.1.4", + "ripemd160": "^2.0.1", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + }, + "engines": { + "node": ">=0.12" + } + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "dependencies": { + "safe-buffer": "^5.1.0" + } + }, + "node_modules/raw-body": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", + "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", + "dev": true, + "dependencies": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/resolve": { + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz", + "integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==", + "dev": true, + "dependencies": { + "path-parse": "^1.0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/ripemd160": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", + "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", + "dev": true, + "dependencies": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1" + } + }, + "node_modules/rlp": { + "version": "2.2.7", + "resolved": "https://registry.npmjs.org/rlp/-/rlp-2.2.7.tgz", + "integrity": "sha512-d5gdPmgQ0Z+AklL2NVXr/IoSjNZFfTVvQWzL/AM2AOcSzYP2xjlb0AC8YyCLc41MSNf6P6QVtjgPdmVtzb+4lQ==", + "dev": true, + "dependencies": { + "bn.js": "^5.2.0" + }, + "bin": { + "rlp": "bin/rlp" + } + }, + "node_modules/run-parallel-limit": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/run-parallel-limit/-/run-parallel-limit-1.1.0.tgz", + "integrity": "sha512-jJA7irRNM91jaKc3Hcl1npHsFLOXOoTkPCUL1JEa1R82O2miplXXRaGdjW/KM/98YQWDhJLiSs793CnXfblJUw==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/rustbn.js": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/rustbn.js/-/rustbn.js-0.2.0.tgz", + "integrity": "sha512-4VlvkRUuCJvr2J6Y0ImW7NvTCriMi7ErOAqWk1y69vAdoNIzCF3yPmgeNzx+RQTLEDFq5sHfscn1MwHxP9hNfA==", + "dev": true + }, + "node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true + }, + "node_modules/scrypt-js": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/scrypt-js/-/scrypt-js-3.0.1.tgz", + "integrity": "sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA==", + "dev": true + }, + "node_modules/secp256k1": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/secp256k1/-/secp256k1-4.0.3.tgz", + "integrity": "sha512-NLZVf+ROMxwtEj3Xa562qgv2BK5e2WNmXPiOdVIPLgs6lyTzMvBq0aWTYMI5XCP9jZMVKOcqZLw/Wc4vDkuxhA==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "elliptic": "^6.5.4", + "node-addon-api": "^2.0.0", + "node-gyp-build": "^4.2.0" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/serialize-javascript": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", + "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", + "dev": true, + "dependencies": { + "randombytes": "^2.1.0" + } + }, + "node_modules/setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==", + "dev": true + }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "dev": true + }, + "node_modules/sha.js": { + "version": "2.4.11", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", + "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", + "dev": true, + "dependencies": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + }, + "bin": { + "sha.js": "bin.js" + } + }, + "node_modules/solc": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/solc/-/solc-0.7.3.tgz", + "integrity": "sha512-GAsWNAjGzIDg7VxzP6mPjdurby3IkGCjQcM8GFYZT6RyaoUZKmMU6Y7YwG+tFGhv7dwZ8rmR4iwFDrrD99JwqA==", + "dev": true, + "dependencies": { + "command-exists": "^1.2.8", + "commander": "3.0.2", + "follow-redirects": "^1.12.1", + "fs-extra": "^0.30.0", + "js-sha3": "0.8.0", + "memorystream": "^0.3.1", + "require-from-string": "^2.0.0", + "semver": "^5.5.0", + "tmp": "0.0.33" + }, + "bin": { + "solcjs": "solcjs" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/solc/node_modules/fs-extra": { + "version": "0.30.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-0.30.0.tgz", + "integrity": "sha512-UvSPKyhMn6LEd/WpUaV9C9t3zATuqoqfWc3QdPhPLb58prN9tqYPlPWi8Krxi44loBoUzlobqZ3+8tGpxxSzwA==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.2", + "jsonfile": "^2.1.0", + "klaw": "^1.0.0", + "path-is-absolute": "^1.0.0", + "rimraf": "^2.2.8" + } + }, + "node_modules/solc/node_modules/jsonfile": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz", + "integrity": "sha512-PKllAqbgLgxHaj8TElYymKCAgrASebJrWpTnEkOaTowt23VKXXN0sUeriJ+eh7y6ufb/CC5ap11pz71/cM0hUw==", + "dev": true, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/solc/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dev": true, + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/stacktrace-parser": { + "version": "0.1.10", + "resolved": "https://registry.npmjs.org/stacktrace-parser/-/stacktrace-parser-0.1.10.tgz", + "integrity": "sha512-KJP1OCML99+8fhOHxwwzyWrlUuVX5GQ0ZpJTd1DFXhdkrvg1szxfHhawXUZ3g9TkXORQd4/WG68jMlQZ2p8wlg==", + "dev": true, + "dependencies": { + "type-fest": "^0.7.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/stacktrace-parser/node_modules/type-fest": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.7.1.tgz", + "integrity": "sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/streamsearch": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz", + "integrity": "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==", + "dev": true, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/string_decoder/node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-hex-prefix": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-hex-prefix/-/strip-hex-prefix-1.0.0.tgz", + "integrity": "sha512-q8d4ue7JGEiVcypji1bALTos+0pWtyGlivAWyPuTkHzuTCJqrK9sWxYQZUq6Nq3cuyv3bm734IhHvHtGGURU6A==", + "dev": true, + "dependencies": { + "is-hex-prefixed": "1.0.0" + }, + "engines": { + "node": ">=6.5.0", + "npm": ">=3" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "dev": true, + "dependencies": { + "os-tmpdir": "~1.0.2" + }, + "engines": { + "node": ">=0.6.0" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "dev": true, + "engines": { + "node": ">=0.6" + } + }, + "node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, + "node_modules/tsort": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/tsort/-/tsort-0.0.1.tgz", + "integrity": "sha512-Tyrf5mxF8Ofs1tNoxA13lFeZ2Zrbd6cKbuH3V+MQ5sb6DtBj5FjrXVsRWT8YvNAQTqNoz66dz1WsbigI22aEnw==", + "dev": true + }, + "node_modules/tweetnacl": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-1.0.3.tgz", + "integrity": "sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==", + "dev": true + }, + "node_modules/tweetnacl-util": { + "version": "0.15.1", + "resolved": "https://registry.npmjs.org/tweetnacl-util/-/tweetnacl-util-0.15.1.tgz", + "integrity": "sha512-RKJBIj8lySrShN4w6i/BonWp2Z/uxwC3h4y7xsRrpP59ZboCd0GpEVsOnMDYLMmKBpYhb5TgHzZXy7wTfYFBRw==", + "dev": true + }, + "node_modules/type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/undici": { + "version": "5.23.0", + "resolved": "https://registry.npmjs.org/undici/-/undici-5.23.0.tgz", + "integrity": "sha512-1D7w+fvRsqlQ9GscLBwcAJinqcZGHUKjbOmXdlE/v8BvEGXjeWAax+341q44EuTcHXXnfyKNbKRq4Lg7OzhMmg==", + "dev": true, + "dependencies": { + "busboy": "^1.6.0" + }, + "engines": { + "node": ">=14.0" + } + }, + "node_modules/universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "dev": true + }, + "node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "dev": true, + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/workerpool": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.2.1.tgz", + "integrity": "sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw==", + "dev": true + }, + "node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/wrap-ansi/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true + }, + "node_modules/ws": { + "version": "7.5.9", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", + "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", + "dev": true, + "engines": { + "node": ">=8.3.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true + }, + "node_modules/yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "dev": true, + "dependencies": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/yargs-parser": { + "version": "20.2.4", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", + "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/yargs-unparser": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz", + "integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==", + "dev": true, + "dependencies": { + "camelcase": "^6.0.0", + "decamelize": "^4.0.0", + "flat": "^5.0.2", + "is-plain-obj": "^2.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 00000000..ae34ce59 --- /dev/null +++ b/package.json @@ -0,0 +1,5 @@ +{ + "devDependencies": { + "hardhat": "^2.17.1" + } +} diff --git a/poetry.lock b/poetry.lock index bdfa2499..5d3dbe42 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1558,17 +1558,6 @@ files = [ {file = "six-1.16.0.tar.gz", hash = "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926"}, ] -[[package]] -name = "timeout-decorator" -version = "0.5.0" -description = "Timeout decorator" -category = "main" -optional = false -python-versions = "*" -files = [ - {file = "timeout-decorator-0.5.0.tar.gz", hash = "sha256:6a2f2f58db1c5b24a2cc79de6345760377ad8bdc13813f5265f6c3e63d16b3d7"}, -] - [[package]] name = "tomli" version = "2.0.1" @@ -1823,4 +1812,4 @@ multidict = ">=4.0" [metadata] lock-version = "2.0" python-versions = ">=3.9,<3.11" -content-hash = "0ffead054631f16e929a7e8e7c68cacd70428c1507834b30c159c3d99c74ec4f" +content-hash = "671e086219dba68d38a2681b1e0b6666dee97d7fecc06530e1c7076246101756" diff --git a/pyproject.toml b/pyproject.toml index 62081dcb..139e5822 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -13,7 +13,6 @@ include = [ python = ">=3.9,<3.11" numpy = "1.23.3" prometheus-client = "0.14.1" -timeout-decorator = "^0.5.0" web3-multi-provider = "^0.6.0" schema = "^0.7.5" web3 = "^5.30.0" @@ -29,3 +28,7 @@ pythonpath = [ "src", "tests", ] +markers = [ + "unit", # offline + "integration", # hardhat fork +] diff --git a/src/blockchain/buffered_eth.py b/src/blockchain/buffered_eth.py deleted file mode 100644 index eee491e1..00000000 --- a/src/blockchain/buffered_eth.py +++ /dev/null @@ -1,16 +0,0 @@ -from math import sqrt - - -def get_recommended_buffered_ether_to_deposit(gas_fee: int) -> int: - """Returns suggested minimum buffered ether to deposit (in Wei)""" - apr = 0.039 # Protocol APR - # ether/14 days : select sum(tr.value)/1e18 from ethereum."transactions" as tr - # where tr.to = '\xae7ab96520DE3A18E5e111B5EaAb095312D7fE84' - # and tr.block_time >= '2021-12-01' and tr.block_time < '2021-12-15' and tr.value < 600*1e18; - a = 12 # ~ ether/hour - keys_hour = a / 32 - p = 32 * 10 ** 18 * apr / 365 / 24 # ~ Profit in hour - cc = 378300 # gas constant for every deposit tx that should be paid - multiply_constant = 1.5 # we will get profit with constant from 1 to 2, but the most profitable will be 1.5 - - return sqrt(multiply_constant * cc * gas_fee * keys_hour / p) * 32 * 10 ** 18 diff --git a/src/blockchain/constants.py b/src/blockchain/constants.py index 0817fdd1..8ffe2719 100644 --- a/src/blockchain/constants.py +++ b/src/blockchain/constants.py @@ -1,40 +1 @@ -from enum import IntEnum - - -class Network(IntEnum): - Mainnet = 1 - Kovan = 42 - Rinkeby = 4 - Görli = 5 - xDai = 100 - Ropsten = 3 - Zhejiang = 1337803 - - -NETWORK_CHAIN_ID = { - 'mainnet': 1, - 'goerli': 5, - 'zhejiang': 1337803, -} - - -FLASHBOTS_RPC = { - Network.Mainnet: "https://relay.flashbots.net", - Network.Görli: "https://relay-goerli.flashbots.net", -} - - -LIDO_LOCATOR = { - Network.Mainnet: '0xC1d0b3DE6792Bf6b4b37EccdcC24e45978Cfd2Eb', - Network.Görli: '0x1eDf09b5023DC86737b59dE68a8130De878984f5', -} - -NODE_OPS_ADDRESSES = { - Network.Mainnet: "0x55032650b14df07b85bF18A3a3eC8E0Af2e028d5", - Network.Görli: "0x9D4AF1Ee19Dad8857db3a45B0374c81c8A1C6320", -} - -DEPOSIT_CONTRACT = { - Network.Mainnet: "0x00000000219ab540356cBB839Cbe05303d7705Fa", - Network.Görli: "0xff50ed3d0ec03aC01D4C79aAd74928BFF48a7b2b", -} +SLOT_TIME = 12 diff --git a/src/blockchain/contracts.py b/src/blockchain/contracts.py deleted file mode 100644 index b335e981..00000000 --- a/src/blockchain/contracts.py +++ /dev/null @@ -1,63 +0,0 @@ -import json - -from web3 import Web3 - -from blockchain.constants import LIDO_LOCATOR, NODE_OPS_ADDRESSES, DEPOSIT_CONTRACT -from variables import WEB3_CHAIN_ID - - -def load_abi(abi_path, abi_name): - f = open(f'{abi_path}{abi_name}.json') - return json.load(f) - - -class Contracts: - __initialized = False - - lido = None - node_operator_registry = None - deposit_security_module = None - deposit_contract = None - staking_router = None - - def initialize(self, w3: Web3, abi_path='./interfaces/'): - __initialized = True - - self.lido_locator = w3.eth.contract( - address=LIDO_LOCATOR[WEB3_CHAIN_ID], - abi=load_abi(abi_path, 'LidoLocator'), - ) - - self.lido = w3.eth.contract( - address=self.lido_locator.functions.lido().call(), - abi=load_abi(abi_path, 'Lido'), - ) - - self.deposit_security_module = w3.eth.contract( - address=self.lido_locator.functions.depositSecurityModule().call(), - abi=load_abi(abi_path, 'DepositSecurityModule'), - ) - - self.staking_router = w3.eth.contract( - address=self.lido_locator.functions.stakingRouter().call(), - abi=load_abi(abi_path, 'StakingRouter'), - ) - - self.deposit_contract = w3.eth.contract( - address=DEPOSIT_CONTRACT[WEB3_CHAIN_ID], - abi=load_abi(abi_path, 'DepositContract'), - ) - - # TODO remove after get_nonce will be replaced with staking call - self.node_operator_registry = w3.eth.contract( - address=NODE_OPS_ADDRESSES[WEB3_CHAIN_ID], - abi=load_abi(abi_path, 'NodeOperatorRegistry'), - ) - - @staticmethod - def load_abi(abi_name): - f = open(f'../../interfaces/{abi_name}.json') - return json.load(f) - - -contracts = Contracts() diff --git a/src/blockchain/contracts/__init__.py b/src/blockchain/contracts/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/src/blockchain/contracts/base_interface.py b/src/blockchain/contracts/base_interface.py new file mode 100644 index 00000000..a2bd6f08 --- /dev/null +++ b/src/blockchain/contracts/base_interface.py @@ -0,0 +1,22 @@ +import json +from typing import Optional, Any + +from web3 import Web3 +from web3.contract import Contract + + +class ContractInterface(Contract): + abi_path: str = None + + @staticmethod + def load_abi(abi_file: str) -> dict: + with open(abi_file) as abi_json: + return json.load(abi_json) + + @classmethod + def factory(cls, web3: Web3, class_name: Optional[str] = None, **kwargs: Any) -> 'Contract': + if cls.abi_path is None: + raise AttributeError(f'abi_path attribute is missing in {cls.__name__} class') + + kwargs['abi'] = cls.load_abi(cls.abi_path) + return super().factory(web3, class_name, **kwargs) diff --git a/src/blockchain/contracts/deposit.py b/src/blockchain/contracts/deposit.py new file mode 100644 index 00000000..8be013a3 --- /dev/null +++ b/src/blockchain/contracts/deposit.py @@ -0,0 +1,24 @@ +import logging + +from eth_typing import BlockIdentifier, Hash32 + +from blockchain.contracts.base_interface import ContractInterface + + +logger = logging.getLogger(__name__) + + +class DepositContract(ContractInterface): + abi_path = './interfaces/DepositContract.json' + + def get_deposit_root(self, block_identifier: BlockIdentifier = 'latest') -> Hash32: + """ + Query the current deposit root hash. + """ + response = self.functions.get_deposit_root().call(block_identifier=block_identifier) + logger.info({ + 'msg': f'Call `get_deposit_root()`.', + 'value': response.hex(), + 'block_identifier': block_identifier.__repr__(), + }) + return response diff --git a/src/blockchain/contracts/deposit_security_module.py b/src/blockchain/contracts/deposit_security_module.py new file mode 100644 index 00000000..e6b2f204 --- /dev/null +++ b/src/blockchain/contracts/deposit_security_module.py @@ -0,0 +1,129 @@ +import logging + +from eth_typing import ChecksumAddress, Hash32 +from web3.types import BlockIdentifier + +from blockchain.contracts.base_interface import ContractInterface + + +logger = logging.getLogger(__name__) + + +class DepositSecurityModuleContract(ContractInterface): + abi_path = './interfaces/DepositSecurityModule.json' + + def get_guardian_quorum(self, block_identifier: BlockIdentifier = 'latest') -> int: + """Returns number of valid guardian signatures required to vet (depositRoot, nonce) pair.""" + response = self.functions.getGuardianQuorum().call(block_identifier=block_identifier) + logger.info({'msg': f'Call `getGuardianQuorum()`.', 'value': response, 'block_identifier': block_identifier.__repr__()}) + return response + + def get_guardians(self, block_identifier: BlockIdentifier = 'latest') -> list[ChecksumAddress]: + """Returns guardian committee member list.""" + response = self.functions.getGuardians().call(block_identifier=block_identifier) + logger.info({'msg': f'Call `getGuardians()`.', 'value': response, 'block_identifier': block_identifier.__repr__()}) + return response + + def get_attest_message_prefix(self, block_identifier: BlockIdentifier = 'latest') -> bytes: + response = self.functions.ATTEST_MESSAGE_PREFIX().call(block_identifier=block_identifier) + logger.info({'msg': f'Call `ATTEST_MESSAGE_PREFIX()`.', 'value': response.hex(), 'block_identifier': block_identifier.__repr__()}) + return response + + def can_deposit(self, staking_module_id: int, block_identifier: BlockIdentifier = 'latest') -> bool: + """ + Returns whether LIDO.deposit() can be called, given that the caller will provide + guardian attestations of non-stale deposit root and `nonce`, and the number of + such attestations will be enough to reach quorum. + """ + response = self.functions.canDeposit(staking_module_id).call(block_identifier=block_identifier) + logger.info({'msg': f'Call `canDeposit({staking_module_id})`.', 'value': response, 'block_identifier': block_identifier.__repr__()}) + return response + + def deposit_buffered_ether( + self, + block_number: int, + block_hash: Hash32, + deposit_root: Hash32, + staking_module_id: int, + nonce: int, + deposit_call_data: bytes, + guardian_signatures: list[tuple[bytes, bytes]], + ): + """ + Calls LIDO.deposit(maxDepositsPerBlock, stakingModuleId, depositCalldata). + + Reverts if any of the following is true: + 1. IDepositContract.get_deposit_root() != depositRoot. + 2. StakingModule.getNonce() != nonce. + 3. The number of guardian signatures is less than getGuardianQuorum(). + 4. An invalid or non-guardian signature received. + 5. block.number - StakingModule.getLastDepositBlock() < minDepositBlockDistance. + 6. blockhash(blockNumber) != blockHash. + + Signatures must be sorted in ascending order by address of the guardian. Each signature must + be produced for the keccak256 hash of the following message (each component taking 32 bytes): + + | ATTEST_MESSAGE_PREFIX | blockNumber | blockHash | depositRoot | stakingModuleId | nonce | + """ + response = self.functions.depositBufferedEther( + block_number, + block_hash, + deposit_root, + staking_module_id, + nonce, + deposit_call_data, + guardian_signatures, + ) + logger.info({'msg': 'Build `depositBufferedEther({}, {}, {}, {}, {}, {}, {})` tx.'.format( + block_number, + block_hash, + deposit_root, + staking_module_id, + nonce, + deposit_call_data, + guardian_signatures, + )}) + return response + + def get_pause_message_prefix(self, block_identifier: BlockIdentifier = 'latest') -> bytes: + response = self.functions.PAUSE_MESSAGE_PREFIX().call(block_identifier=block_identifier) + logger.info({'msg': f'Call `PAUSE_MESSAGE_PREFIX()`.', 'value': response.hex(), 'block_identifier': block_identifier.__repr__()}) + return response + + def get_pause_intent_validity_period_blocks(self, block_identifier: BlockIdentifier = 'latest') -> int: + """Returns current `pauseIntentValidityPeriodBlocks` contract parameter (see `pauseDeposits`).""" + response = self.functions.getPauseIntentValidityPeriodBlocks().call(block_identifier=block_identifier) + logger.info({'msg': f'Call `getPauseIntentValidityPeriodBlocks()`.', 'value': response, 'block_identifier': block_identifier.__repr__()}) + return response + + def pause_deposits( + self, + block_number: int, + staking_module_id: int, + guardian_signature: tuple[str, str], + ): + """ + Pauses deposits for staking module given that both conditions are satisfied (reverts otherwise): + + 1. The function is called by the guardian with index guardianIndex OR sig + is a valid signature by the guardian with index guardianIndex of the data + defined below. + + 2. block.number - blockNumber <= pauseIntentValidityPeriodBlocks + + The signature, if present, must be produced for keccak256 hash of the following + message (each component taking 32 bytes): + + | PAUSE_MESSAGE_PREFIX | blockNumber | stakingModuleId | + """ + tx = self.functions.pauseDeposits( + block_number, + staking_module_id, + guardian_signature + ) + logger.info({'msg': 'Build `pauseDeposits({}, {}, {})` tx.'.format( + block_number, + staking_module_id, + guardian_signature, + )}) + return tx diff --git a/src/blockchain/contracts/lido.py b/src/blockchain/contracts/lido.py new file mode 100644 index 00000000..198d654c --- /dev/null +++ b/src/blockchain/contracts/lido.py @@ -0,0 +1,21 @@ +import logging + +from web3.types import BlockIdentifier, Wei + +from blockchain.contracts.base_interface import ContractInterface + + +logger = logging.getLogger(__name__) + + +class LidoContract(ContractInterface): + abi_path = './interfaces/Lido.json' + + def get_depositable_ether(self, block_identifier: BlockIdentifier = 'latest') -> Wei: + """ + Returns depositable ether amount. + Unfinalized stETH required by WithdrawalQueue are excluded from buffered ether. + """ + response = self.functions.getDepositableEther().call(block_identifier=block_identifier) + logger.info({'msg': f'Call `getDepositableEther()`.', 'value': response, 'block_identifier': block_identifier.__repr__()}) + return response diff --git a/src/blockchain/contracts/lido_locator.py b/src/blockchain/contracts/lido_locator.py new file mode 100644 index 00000000..e2b5fd3a --- /dev/null +++ b/src/blockchain/contracts/lido_locator.py @@ -0,0 +1,28 @@ +import logging + +from eth_typing import ChecksumAddress +from web3.types import BlockIdentifier + +from blockchain.contracts.base_interface import ContractInterface + + +logger = logging.getLogger(__name__) + + +class LidoLocatorContract(ContractInterface): + abi_path = './interfaces/LidoLocator.json' + + def lido(self, block_identifier: BlockIdentifier = 'latest') -> ChecksumAddress: + response = self.functions.lido().call(block_identifier=block_identifier) + logger.info({'msg': f'Call `lido()`.', 'value': response, 'block_identifier': block_identifier.__repr__()}) + return response + + def deposit_security_module(self, block_identifier: BlockIdentifier = 'latest') -> ChecksumAddress: + response = self.functions.depositSecurityModule().call(block_identifier=block_identifier) + logger.info({'msg': f'Call `depositSecurityModule()`.', 'value': response, 'block_identifier': block_identifier.__repr__()}) + return response + + def staking_router(self, block_identifier: BlockIdentifier = 'latest') -> ChecksumAddress: + response = self.functions.stakingRouter().call(block_identifier=block_identifier) + logger.info({'msg': f'Call `stakingRouter()`.', 'value': response, 'block_identifier': block_identifier.__repr__()}) + return response diff --git a/src/blockchain/contracts/staking_router.py b/src/blockchain/contracts/staking_router.py new file mode 100644 index 00000000..f57d759f --- /dev/null +++ b/src/blockchain/contracts/staking_router.py @@ -0,0 +1,102 @@ +import logging + +from web3.types import Wei, BlockIdentifier + +from blockchain.contracts.base_interface import ContractInterface + + +logger = logging.getLogger(__name__) + + +class StakingRouterContract(ContractInterface): + abi_path = './interfaces/StakingRouter.json' + + def get_max_deposits_count( + self, + staking_module_id: int, + depositable_ether: Wei, + block_identifier: BlockIdentifier = 'latest', + ) -> int: + """ + Calculate the max count of deposits which the staking module can provide data for based + on the passed `_maxDepositsValue` amount + @param staking_module_id id of the staking module to be deposited + @param depositable_ether max amount of ether that might be used for deposits count calculation + @return max number of deposits might be done using the given staking module + """ + response = self.functions.getStakingModuleMaxDepositsCount( + staking_module_id, + depositable_ether, + ).call(block_identifier=block_identifier) + logger.info({ + 'msg': f'Call `getStakingModuleMaxDepositsCount({staking_module_id}, {depositable_ether})`.', + 'value': response, + 'block_identifier': block_identifier.__repr__(), + }) + return response + + def get_staking_module_ids(self, block_identifier: BlockIdentifier = 'latest') -> list[int]: + """Returns the ids of all registered staking modules""" + response = self.functions.getStakingModuleIds().call(block_identifier=block_identifier) + logger.info({ + 'msg': f'Call `get_staking_module_ids()`.', + 'value': response, + 'block_identifier': block_identifier.__repr__(), + }) + return response + + def is_staking_module_active( + self, + staking_module_id: int, + block_identifier: BlockIdentifier = 'latest', + ) -> bool: + response = self.functions.getStakingModuleIsActive(staking_module_id).call(block_identifier=block_identifier) + logger.info({ + 'msg': f'Call `getStakingModuleIsActive({staking_module_id})`.', + 'value': response, + 'block_identifier': block_identifier.__repr__(), + }) + return response + + def is_staking_module_deposits_paused( + self, + staking_module_id: int, + block_identifier: BlockIdentifier = 'latest', + ) -> bool: + response = self.functions.getStakingModuleIsDepositsPaused(staking_module_id).call(block_identifier=block_identifier) + logger.info({ + 'msg': f'Call `getStakingModuleIsDepositsPaused({staking_module_id})`.', + 'value': response, + 'block_identifier': block_identifier.__repr__(), + }) + return response + + def get_staking_module_nonce( + self, + staking_module_id: int, + block_identifier: BlockIdentifier = 'latest', + ) -> int: + response = self.functions.getStakingModuleNonce(staking_module_id).call(block_identifier=block_identifier) + logger.info({ + 'msg': f'Call `getStakingModuleNonce({staking_module_id})`.', + 'value': response, + 'block_identifier': block_identifier.__repr__(), + }) + return response + + def get_staking_module_deposits_count( + self, + staking_module_id: int, + depositable_ether: Wei, + block_identifier: BlockIdentifier = 'latest', + ) -> int: + response = self.functions.getStakingModuleMaxDepositsCount( + staking_module_id, + depositable_ether, + ).call(block_identifier=block_identifier) + logger.info({ + 'msg': f'Call `getStakingModuleMaxDepositsCount({staking_module_id}, {depositable_ether})`.', + 'value': response, + 'block_identifier': block_identifier.__repr__(), + }) + return response diff --git a/src/blockchain/deposit_strategy/__init__.py b/src/blockchain/deposit_strategy/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/src/blockchain/deposit_strategy/curated_module.py b/src/blockchain/deposit_strategy/curated_module.py new file mode 100644 index 00000000..377a21f9 --- /dev/null +++ b/src/blockchain/deposit_strategy/curated_module.py @@ -0,0 +1,112 @@ +import logging +from typing import Literal + +import numpy +from eth_typing import BlockNumber +from web3 import Web3 +from web3.types import Wei + +import variables +from blockchain.deposit_strategy.interface import ModuleDepositStrategyInterface +from metrics.metrics import GAS_FEE, DEPOSITABLE_ETHER, POSSIBLE_DEPOSITS_AMOUNT + + +logger = logging.getLogger(__name__) + + +class CuratedModuleDepositStrategy(ModuleDepositStrategyInterface): + BLOCKS_IN_ONE_DAY = 24 * 60 * 60 // 12 + + CACHE_BLOCK_AMOUNT = 300 + REQUEST_SIZE = 1024 + + def __init__(self, w3: Web3, module_id: int): + super().__init__(w3, module_id) + + self._gas_fees: list = [] + + # Used for caching + self._latest_fetched_block: int = 0 + self._days_param = None + + def is_deposited_keys_amount_ok(self) -> bool: + possible_deposits_amount = self._get_possible_deposits_amount() + recommended_max_gas = self._calculate_recommended_gas_based_on_deposit_amount(possible_deposits_amount) + + base_fee_per_gas = self._get_pending_base_fee() + return recommended_max_gas >= base_fee_per_gas + + def _get_possible_deposits_amount(self) -> int: + depositable_ether = self.w3.lido.lido.get_depositable_ether() + DEPOSITABLE_ETHER.labels(self.module_id).set(depositable_ether) + + possible_deposits_amount = self.w3.lido.staking_router.get_staking_module_deposits_count( + self.module_id, + depositable_ether, + ) + POSSIBLE_DEPOSITS_AMOUNT.labels(self.module_id).set(possible_deposits_amount) + return possible_deposits_amount + + def _calculate_recommended_gas_based_on_deposit_amount(self, deposits_amount: int) -> Wei: + # For one key recommended gas fee will be around 10 + # For 10 keys around 100 gwei. For 20 keys ~ 800 gwei + # ToDo percentiles for all modules? + recommended_max_gas = (deposits_amount ** 3 + 100) * 10 ** 8 + logger.info({'msg': 'Calculate recommended max gas based on possible deposits.'}) + GAS_FEE.labels('based_on_buffer_fee', self.module_id).set(recommended_max_gas) + return recommended_max_gas + + def _get_pending_base_fee(self): + base_fee_per_gas = self.w3.eth.get_block('pending')['baseFeePerGas'] + logger.info({'msg': 'Fetch base_fee_per_gas for pending block.', 'value': base_fee_per_gas}) + return base_fee_per_gas + + def is_gas_price_ok(self) -> bool: + current_gas_fee = self._get_pending_base_fee() + GAS_FEE.labels('current_fee', self.module_id).set(current_gas_fee) + + recommended_gas_fee = self._get_recommended_gas_fee() + GAS_FEE.labels('recommended_fee', self.module_id).set(recommended_gas_fee) + + GAS_FEE.labels('max_fee', self.module_id).set(variables.MAX_GAS_FEE) + + current_buffered_ether = self.w3.lido.lido.get_depositable_ether() + if current_buffered_ether > variables.MAX_BUFFERED_ETHERS: + return variables.MAX_GAS_FEE >= current_gas_fee + + return recommended_gas_fee >= current_gas_fee + + def _get_recommended_gas_fee(self): + gas_history = self._fetch_gas_fee_history(variables.GAS_FEE_PERCENTILE_DAYS_HISTORY_1) + return int(numpy.percentile(gas_history, variables.GAS_FEE_PERCENTILE_1)) + + def _fetch_gas_fee_history(self, days: int) -> list[int]: + latest_block_num = self.w3.eth.get_block('latest')['number'] + + if ( + self._latest_fetched_block + and self._latest_fetched_block + self.CACHE_BLOCK_AMOUNT > latest_block_num + and self._days_param >= days + ): + logger.info({'msg': 'Use cached gas history'}) + return self._gas_fees + + logger.info({'msg': 'Fetch gas fee history.', 'value': {'block_number': latest_block_num}}) + + self._latest_fetched_block = latest_block_num + self._days_param = days + + total_blocks_to_fetch = self.BLOCKS_IN_ONE_DAY * days + requests_count = total_blocks_to_fetch // self.REQUEST_SIZE + 1 + + gas_fees = [] + last_block: Literal['latest'] | BlockNumber = 'latest' + + for i in range(requests_count): + stats = self.w3.eth.fee_history(self.REQUEST_SIZE, last_block, []) + last_block = BlockNumber(stats['oldestBlock'] - 2) + gas_fees = stats['baseFeePerGas'] + gas_fees + + self._gas_fees = gas_fees[:days * self.BLOCKS_IN_ONE_DAY] + + return self._gas_fees diff --git a/src/blockchain/deposit_strategy/interface.py b/src/blockchain/deposit_strategy/interface.py new file mode 100644 index 00000000..9dcf8325 --- /dev/null +++ b/src/blockchain/deposit_strategy/interface.py @@ -0,0 +1,17 @@ +from abc import ABC, abstractmethod + +from blockchain.typings import Web3 + + +class ModuleDepositStrategyInterface(ABC): + def __init__(self, w3: Web3, module_id: int): + self.w3 = w3 + self.module_id = module_id + + @abstractmethod + def is_gas_price_ok(self) -> bool: + pass + + @abstractmethod + def is_deposited_keys_amount_ok(self) -> bool: + pass diff --git a/src/blockchain/executer.py b/src/blockchain/executer.py new file mode 100644 index 00000000..3ad3b544 --- /dev/null +++ b/src/blockchain/executer.py @@ -0,0 +1,97 @@ +import logging +from time import sleep +from typing import Callable, Any, Optional + +from web3.types import BlockData +from web3_multi_provider import NoActiveProviderError + +from blockchain.constants import SLOT_TIME +from blockchain.typings import Web3 +from metrics import healthcheck_pulse +from utils.timeout import TimeoutManager, TimeoutManagerError + + +logger = logging.getLogger(__name__) + + +class Executor: + """Executes periodically function with block_identifier.""" + def __init__( + self, + w3: Web3, + function_to_execute: Callable[[BlockData], Any], + blocks_between_execution: int, + cycle_max_lifetime: int, + ) -> None: + """ + @param function_to_execute is functions that will be executed every N blocks + @param blocks_between_execution is amount of EL blocks between function execution. + Blocks could be missed, so waiting time could be higher than expected. + """ + self.w3 = w3 + + self.function_to_execute = function_to_execute + self.blocks_between_execution = blocks_between_execution + self.cycle_max_lifetime = cycle_max_lifetime + + self._latest_block_number = 0 + self._next_expected_block = 0 + + def execute_as_daemon(self) -> None: + """Run execution module """ + while True: + self._wait_for_new_block_and_execute() + + def _wait_for_new_block_and_execute(self) -> Any: + healthcheck_pulse.pulse() + + latest_block = self._exception_handler(self._wait_until_next_block) + result = self._exception_handler(self._execute_function, latest_block) + + if result: + self._next_expected_block += self.blocks_between_execution + else: + # If function do not return success code (True or whatever) retry function call with next block. + self._next_expected_block += 1 + + return result + + def _wait_until_next_block(self) -> BlockData: + with TimeoutManager(max( + # Wait at least 5 slots before throw exception + 5 * SLOT_TIME, + self.blocks_between_execution * SLOT_TIME * 2 + )): + while True: + latest_block: BlockData = self.w3.eth.get_block('latest') + logger.debug({'msg': 'Fetch latest block.', 'value': latest_block}) + + if latest_block['number'] >= self._next_expected_block: + self._next_expected_block = latest_block['number'] + return latest_block + + time_until_expected_block = (self._next_expected_block - latest_block.number - 1) * SLOT_TIME + + # If expected block is next + if time_until_expected_block == 0: + time_until_expected_block = 5 + + logger.debug({'msg': f'Sleep for {time_until_expected_block} seconds.'}) + sleep(time_until_expected_block) + + def _execute_function(self, block: BlockData) -> None: + with TimeoutManager(self.cycle_max_lifetime): + return self.function_to_execute(block) + + @staticmethod + def _exception_handler(function: Callable, *args, **kwargs) -> Optional[Any]: + try: + return function(*args, **kwargs) + except TimeoutManagerError as exception: + logger.error({'msg': 'Timeout error.', 'error': str(exception), 'function': function.__name__}) + raise TimeoutManagerError('Bot stuck. Shut down.') from exception + except NoActiveProviderError as exception: + logger.error({'msg': 'No active node available. Shut down.', 'error': str(exception)}) + raise NoActiveProviderError from exception + except Exception as error: + logger.error({'msg': 'Unexpected error.', 'error': str(error), 'args': str(error.args)}) diff --git a/src/blockchain/fetch_latest_block.py b/src/blockchain/fetch_latest_block.py deleted file mode 100644 index 070c46fb..00000000 --- a/src/blockchain/fetch_latest_block.py +++ /dev/null @@ -1,25 +0,0 @@ -import logging -import time - -from web3 import Web3 -from web3.types import BlockData - - -logger = logging.getLogger(__name__) - - -def fetch_latest_block(w3: Web3, _prev_block_number: int) -> BlockData: - from_provider_index = w3.provider._current_provider_index - - while True: - current_block = w3.eth.get_block('latest') - logger.info({'msg': f'Fetch `latest` block.', 'value': current_block.number}) - - if _prev_block_number != current_block.number: - return current_block - - w3.provider._current_provider_index = (w3.provider._current_provider_index + 1) % len(w3.provider._hosts_uri) - - if from_provider_index == w3.provider._current_provider_index: - logger.info({'msg': f'All providers returns same block. Sleep for 5 seconds and try again.'}) - time.sleep(5) diff --git a/src/blockchain/gas_strategy.py b/src/blockchain/gas_strategy.py deleted file mode 100644 index 02665c54..00000000 --- a/src/blockchain/gas_strategy.py +++ /dev/null @@ -1,90 +0,0 @@ -import logging -from typing import List, Tuple, Iterable - -import numpy -from web3 import Web3 - -logger = logging.getLogger(__name__) - - -class GasFeeStrategy: - BLOCKS_IN_ONE_DAY = 6600 - - def __init__(self, w3: Web3, blocks_count_cache: int = 300, max_gas_fee: int = Web3.toWei('100', 'gwei')): - """ - gas_history_block_cache - blocks count that gas his - """ - self._w3 = w3 - self._blocks_count_cache: int = blocks_count_cache - self.max_gas_fee = max_gas_fee - - self._gas_fees: list = [] - - # Used for caching - self._latest_fetched_block: int = 0 - self._days_param = None - - def _fetch_gas_fee_history(self, days: int) -> List[int]: - """ - Returns gas fee history for N days. - Cache updates every {_blocks_count_cache} block. - """ - latest_block_num = self._w3.eth.get_block('latest')['number'] - - # If _blocks_count_cache didn't passed return cache - if ( - self._latest_fetched_block - and self._latest_fetched_block + self._blocks_count_cache > latest_block_num - and self._days_param >= days - ): - logger.info({'msg': 'Use cached gas history'}) - return self._gas_fees - - logger.info({'msg': 'Init or refresh gas history.', 'value': {'block_number': latest_block_num}}) - - self._latest_fetched_block = latest_block_num - self._days_param = days - - total_blocks_to_fetch = self.BLOCKS_IN_ONE_DAY * days - requests_count = total_blocks_to_fetch // 1024 + 1 - - gas_fees = [] - last_block = 'latest' - - for i in range(requests_count): - stats = self._w3.eth.fee_history(1024, last_block, []) - last_block = stats['oldestBlock'] - 2 - gas_fees = stats['baseFeePerGas'] + gas_fees - - self._gas_fees = gas_fees - - return self._gas_fees - - def get_gas_fee_percentile(self, days: int, percentile: int) -> float: - """Calculates provided percentile for N days""" - # One week price stats - gas_fee_history = self._fetch_gas_fee_history(days) - blocks_to_count_percentile = gas_fee_history[-days * self.BLOCKS_IN_ONE_DAY:] - gas_percentile = int(numpy.percentile(blocks_to_count_percentile, percentile)) - return gas_percentile - - def get_recommended_gas_fee(self, percentiles: Iterable[Tuple[int, int]], force: bool = False) -> float: - """Returns the recommended gas fee""" - if force: - return self.max_gas_fee - - min_recommended_fee = self.max_gas_fee - - for days, percentile in percentiles: - min_recommended_fee = min(min_recommended_fee, self.get_gas_fee_percentile(days, percentile)) - - return min_recommended_fee - - def get_priority_fee(self, percentile: int, min_priority_fee: int, max_priority_fee: int): - return min( - max( - self._w3.eth.fee_history(1, 'latest', reward_percentiles=[percentile])['reward'][0][0], - min_priority_fee, - ), - max_priority_fee, - ) diff --git a/src/blockchain/typings.py b/src/blockchain/typings.py new file mode 100644 index 00000000..6bcc623d --- /dev/null +++ b/src/blockchain/typings.py @@ -0,0 +1,9 @@ +from web3 import Web3 as _Web3 + +from blockchain.web3_extentions.lido_contracts import LidoContracts +from blockchain.web3_extentions.transaction import TransactionUtils + + +class Web3(_Web3): + lido: LidoContracts + transaction: TransactionUtils diff --git a/src/blockchain/web3_extentions/__init__.py b/src/blockchain/web3_extentions/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/src/blockchain/web3_extentions/lido_contracts.py b/src/blockchain/web3_extentions/lido_contracts.py new file mode 100644 index 00000000..4c45471d --- /dev/null +++ b/src/blockchain/web3_extentions/lido_contracts.py @@ -0,0 +1,44 @@ +from typing import cast + +from web3 import Web3 +from web3.module import Module + +import variables +from blockchain.contracts.deposit import DepositContract + +from blockchain.contracts.deposit_security_module import DepositSecurityModuleContract +from blockchain.contracts.lido import LidoContract +from blockchain.contracts.lido_locator import LidoLocatorContract +from blockchain.contracts.staking_router import StakingRouterContract + + +class LidoContracts(Module): + def __init__(self, w3: Web3): + super().__init__(w3) + self._load_contracts() + + def _load_contracts(self): + self.deposit_contract: DepositContract = cast(DepositContract, self.web3.eth.contract( + address=variables.DEPOSIT_CONTRACT, + ContractFactoryClass=DepositContract, + )) + + self.lido_locator: LidoLocatorContract = cast(LidoLocatorContract, self.web3.eth.contract( + address=variables.LIDO_LOCATOR, + ContractFactoryClass=LidoLocatorContract, + )) + + self.lido: LidoContract = cast(LidoContract, self.web3.eth.contract( + address=self.lido_locator.lido(), + ContractFactoryClass=LidoContract, + )) + + self.deposit_security_module = cast(DepositSecurityModuleContract, self.web3.eth.contract( + address=self.lido_locator.deposit_security_module(), + ContractFactoryClass=DepositSecurityModuleContract, + )) + + self.staking_router = cast(StakingRouterContract, self.web3.eth.contract( + address=self.lido_locator.staking_router(), + ContractFactoryClass=StakingRouterContract, + )) diff --git a/src/blockchain/requests_metric_middleware.py b/src/blockchain/web3_extentions/requests_metric_middleware.py similarity index 99% rename from src/blockchain/requests_metric_middleware.py rename to src/blockchain/web3_extentions/requests_metric_middleware.py index 1a7d8ccf..9e5e3f19 100644 --- a/src/blockchain/requests_metric_middleware.py +++ b/src/blockchain/web3_extentions/requests_metric_middleware.py @@ -8,6 +8,7 @@ from metrics.metrics import ETH_RPC_REQUESTS_DURATION, ETH_RPC_REQUESTS + logger = logging.getLogger(__name__) diff --git a/src/blockchain/web3_extentions/transaction.py b/src/blockchain/web3_extentions/transaction.py new file mode 100644 index 00000000..c2095bed --- /dev/null +++ b/src/blockchain/web3_extentions/transaction.py @@ -0,0 +1,121 @@ +import logging + +from eth_account.datastructures import SignedTransaction +from web3.contract import ContractFunction +from web3.exceptions import ContractLogicError, TransactionNotFound, TimeExhausted +from web3.module import Module +from web3.types import BlockData, Wei + +import variables +from blockchain.constants import SLOT_TIME +from metrics.metrics import TX_SEND + + +logger = logging.getLogger(__name__) + + +class TransactionUtils(Module): + @staticmethod + def check(transaction: ContractFunction) -> bool: + try: + transaction.call() + except (ValueError, ContractLogicError) as error: + logger.error({'msg': 'Local transaction reverted.', 'error': str(error)}) + return False + + logger.info({'msg': 'Tx local call succeed.'}) + return True + + def send( + self, + transaction: ContractFunction, + use_flashbots: bool, + timeout_in_blocks: int, + ) -> bool: + if not variables.ACCOUNT: + logger.info({'msg': 'Account was not provided. Sending transaction skipped.'}) + return True + + if not variables.CREATE_TRANSACTIONS: + logger.info({'msg': 'Dry mode activated. Sending transaction skipped.'}) + return True + + pending: BlockData = self.web3.eth.get_block('pending') + + priority = self._get_priority_fee( + variables.GAS_PRIORITY_FEE_PERCENTILE, + variables.MIN_PRIORITY_FEE, + variables.MAX_PRIORITY_FEE, + ) + + transaction_dict = transaction.build_transaction({ + 'from': variables.ACCOUNT.address, + # TODO Estimate gas and min(contract_gas_limit, estimated_gas * 1.3) + 'gas': variables.CONTRACT_GAS_LIMIT, + 'maxFeePerGas': pending['baseFeePerGas'] * 2 + priority, + 'maxPriorityFeePerGas': priority, + "nonce": self.web3.eth.get_transaction_count(variables.ACCOUNT.address), + }) + + signed = self.web3.eth.account.sign_transaction(transaction_dict, variables.ACCOUNT.privateKey) + + # TODO try to deposit with other relays + if use_flashbots and getattr(self.web3, 'flashbots', None): + status = self.flashbots_send(signed, pending['number'], timeout_in_blocks) + else: + status = self.classic_send(signed, timeout_in_blocks) + + if status: + TX_SEND.labels('success').inc() + logger.info({'msg': 'Transaction found in blockchain.'}) + else: + TX_SEND.labels('failure').inc() + logger.warning({'msg': 'Transaction not found in blockchain.'}) + + return status + + def flashbots_send( + self, + signed_tx: SignedTransaction, + pending_block_num: int, + timeout_in_blocks: int, + ) -> bool: + for i in range(timeout_in_blocks): + result = self.web3.flashbots.send_bundle( + [{"signed_transaction": signed_tx.rawTransaction}], + pending_block_num + i + ) + + logger.info({'msg': 'Transaction sent.'}) + try: + rec = result.receipts() + except TransactionNotFound: + return False + else: + logger.info({'msg': 'Transaction mined.', 'value': rec[-1]['transactionHash'].hex()}) + return True + + def classic_send(self, signed_tx: SignedTransaction, timeout_in_blocks: int) -> bool: + try: + tx_hash = self.web3.eth.send_raw_transaction(signed_tx.rawTransaction) + except Exception as error: + logger.error({'msg': 'Transaction reverted.', 'value': str(error)}) + return False + + logger.info({'msg': 'Transaction sent.', 'value': tx_hash.hex()}) + try: + tx_receipt = self.web3.eth.wait_for_transaction_receipt(tx_hash, (timeout_in_blocks + 1) * SLOT_TIME) + except TimeExhausted: + return False + + logger.info({'msg': 'Transaction found', 'value': tx_receipt['transactionHash'].hex()}) + return True + + def _get_priority_fee(self, percentile: int, min_priority_fee: Wei, max_priority_fee: Wei): + return min( + max( + self.web3.eth.fee_history(1, 'latest', reward_percentiles=[percentile])['reward'][0][0], + min_priority_fee, + ), + max_priority_fee, + ) diff --git a/src/bots/depositor.py b/src/bots/depositor.py new file mode 100644 index 00000000..3813c075 --- /dev/null +++ b/src/bots/depositor.py @@ -0,0 +1,243 @@ +import logging +from collections import defaultdict +from typing import Optional, Callable + +from eth_typing import Hash32 +from schema import Or, Schema +from web3.types import BlockData + +import variables + +from blockchain.deposit_strategy.curated_module import CuratedModuleDepositStrategy +from blockchain.deposit_strategy.interface import ModuleDepositStrategyInterface +from blockchain.typings import Web3 +from cryptography.verify_signature import compute_vs +from metrics.metrics import ( + ACCOUNT_BALANCE, CURRENT_QUORUM_SIZE, +) +from metrics.transport_message_metrics import message_metrics_filter +from transport.msg_providers.kafka import KafkaMessageProvider +from transport.msg_providers.rabbit import RabbitProvider, MessageType +from transport.msg_schemas import ( + DepositMessageSchema, + PingMessageSchema, + get_deposit_messages_sign_filter, + DepositMessage, +) +from transport.msg_storage import MessageStorage +from transport.types import TransportType + + +logger = logging.getLogger(__name__) + + +class ModuleNotSupportedError(Exception): + pass + + +class DepositorBot: + _flashbots_works = True + + def __init__(self, w3: Web3): + self.w3 = w3 + + transports = [] + + if TransportType.RABBIT in variables.MESSAGE_TRANSPORTS: + transports.append(RabbitProvider( + client='depositor', + routing_keys=[MessageType.PING, MessageType.DEPOSIT], + message_schema=Schema(Or(DepositMessageSchema, PingMessageSchema)), + )) + + if TransportType.KAFKA in variables.MESSAGE_TRANSPORTS: + transports.append(KafkaMessageProvider( + client=f'{variables.KAFKA_GROUP_PREFIX}deposit', + message_schema=Schema(Or(DepositMessageSchema, PingMessageSchema)), + )) + + if not transports: + logger.warning({'msg': 'No transports found. Dry mode activated.', 'value': variables.MESSAGE_TRANSPORTS}) + + attest_prefix = self.w3.lido.deposit_security_module.get_attest_message_prefix() + + self.message_storage = MessageStorage( + transports, + filters=[ + message_metrics_filter, + get_deposit_messages_sign_filter(attest_prefix), + ], + ) + + def execute(self, block: BlockData) -> bool: + self._check_balance() + + module_ids = self.w3.lido.staking_router.get_staking_module_ids() + + for module_id in module_ids: + logger.info({'msg': f'Do deposit for module with id: {module_id}.'}) + try: + self._deposit_to_module(module_id) + except ModuleNotSupportedError as error: + logger.warning({'msg': 'Module not supported exception.', 'error': str(error)}) + + return True + + def _check_balance(self): + if variables.ACCOUNT: + balance = self.w3.eth.get_balance(variables.ACCOUNT.address) + ACCOUNT_BALANCE.set(balance) + logger.info({'msg': 'Check account balance.', 'value': balance}) + else: + logger.info({'msg': 'No account provided. Dry mode.'}) + ACCOUNT_BALANCE.set(0) + + def _deposit_to_module(self, module_id: int) -> bool: + is_depositable = self._check_module_status(module_id) + logger.info({'msg': 'Fetch module depositable status.', 'value': is_depositable}) + + quorum = self._get_quorum(module_id) + logger.info({'msg': 'Build quorum.', 'value': quorum}) + + module_strategy = self._get_module_strategy(module_id) + + gas_is_ok = module_strategy.is_gas_price_ok() + logger.info({'msg': 'Calculate gas recommendations.', 'value': gas_is_ok}) + + keys_amount_is_profitable = module_strategy.is_deposited_keys_amount_ok() + logger.info({'msg': 'Calculations deposit recommendations.', 'value': keys_amount_is_profitable}) + + if is_depositable and quorum and gas_is_ok and keys_amount_is_profitable: + logger.info({'msg': 'Checks passed. Prepare deposit tx.'}) + return self._build_and_send_deposit_tx(quorum) + + logger.info({'msg': 'Checks failed. Skip deposit.'}) + return False + + def _get_module_strategy(self, module_id: int) -> ModuleDepositStrategyInterface: + # ToDo somehow support different gas strategies for different module types + if module_id == 1: + return CuratedModuleDepositStrategy(self.w3, module_id) + + raise ModuleNotSupportedError(f'Module with id: {module_id} is not supported yet.') + + def _check_module_status(self, module_id: int) -> bool: + """Returns True if module is ready for deposit""" + is_active = self.w3.lido.staking_router.is_staking_module_active(module_id) + is_deposits_paused = self.w3.lido.staking_router.is_staking_module_deposits_paused(module_id) + return is_active and not is_deposits_paused + + def _get_quorum(self, module_id: int) -> Optional[list[DepositMessage]]: + """Returns quorum messages or None is quorum is not ready""" + actualize_filter = self._get_message_actualize_filter(module_id) + messages = self.message_storage.get_messages(actualize_filter) + min_signs_to_deposit = self.w3.lido.deposit_security_module.get_guardian_quorum() + + messages_by_block_hash = defaultdict(dict) + + max_quorum_size = 0 + + for message in messages: + # Remove duplications (blockHash, guardianAddress) + messages_by_block_hash[message['blockHash']][message['guardianAddress']] = message + + for messages_dict in messages_by_block_hash.values(): + unified_messages = messages_dict.values() + + quorum_size = len(unified_messages) + + if quorum_size >= min_signs_to_deposit: + CURRENT_QUORUM_SIZE.set(quorum_size) + return list(unified_messages) + + max_quorum_size = max(quorum_size, max_quorum_size) + + CURRENT_QUORUM_SIZE.set(max_quorum_size) + + def _get_message_actualize_filter(self, module_id: int) -> Callable[[DepositMessage], bool]: + latest = self.w3.eth.get_block('latest') + + deposit_root = '0x' + self.w3.lido.deposit_contract.get_deposit_root().hex() + nonce = self.w3.lido.staking_router.get_staking_module_nonce(module_id) + guardians_list = self.w3.lido.deposit_security_module.get_guardians() + + def message_filter(message: DepositMessage) -> bool: + if message['guardianAddress'] not in guardians_list: + return False + + if message['blockNumber'] < latest['number'] - 200: + return False + + # Message from council is newer than depositor node latest block + if message['blockNumber'] > latest['number']: + # can't be verified, so skip + return True + + if message['nonce'] != nonce: + return False + + if message['depositRoot'] != deposit_root: + return False + + return True + + return message_filter + + def _build_and_send_deposit_tx(self, quorum: list[DepositMessage]) -> bool: + signs = self._prepare_signs_for_deposit(quorum) + + return self._send_deposit_tx( + quorum[0]['blockNumber'], + Hash32(bytes.fromhex(quorum[0]['blockHash'][2:])), + Hash32(bytes.fromhex(quorum[0]['depositRoot'][2:])), + quorum[0]['stakingModuleId'], + quorum[0]['nonce'], + b'', + signs, + ) + + @staticmethod + def _prepare_signs_for_deposit(quorum: list[DepositMessage]) -> tuple[tuple[str, str]]: + sorted_messages = sorted(quorum, key=lambda msg: int(msg['guardianAddress'], 16)) + + return tuple( + (msg['signature']['r'], compute_vs(msg['signature']['v'], msg['signature']['s'])) + for msg in sorted_messages + ) + + def _send_deposit_tx( + self, + block_number: int, + block_hash: Hash32, + deposit_root: Hash32, + staking_module_id: int, + staking_module_nonce: int, + payload: bytes, + guardian_signs: tuple[tuple[str, str]] + ) -> bool: + """Returns transactions success status""" + # Prepare transaction and send + deposit_tx = self.w3.lido.deposit_security_module.deposit_buffered_ether( + block_number, + block_hash, + deposit_root, + staking_module_id, + staking_module_nonce, + payload, + guardian_signs, + ) + + if not self.w3.transaction.check(deposit_tx): + return False + + logger.info({'msg': 'Send deposit transaction.', 'with_flashbots': self._flashbots_works}) + success = self.w3.transaction.send(deposit_tx, self._flashbots_works, 6) + + logger.info({'msg': f'Tx send. Result is {success}.'}) + + if self._flashbots_works and not success: + self._flashbots_works = False + else: + self._flashbots_works = True + + return success diff --git a/src/bots/depositor_bot.py b/src/bots/depositor_bot.py deleted file mode 100644 index 156ec3dc..00000000 --- a/src/bots/depositor_bot.py +++ /dev/null @@ -1,516 +0,0 @@ -import logging -import traceback -import time -from collections import defaultdict -from typing import List, Tuple, Optional - -import timeout_decorator -from schema import Or, Schema -from web3 import Web3 -from web3.exceptions import BlockNotFound, ContractLogicError, TransactionNotFound -from web3_multi_provider import NoActiveProviderError - -import variables -from blockchain.buffered_eth import get_recommended_buffered_ether_to_deposit -from blockchain.constants import FLASHBOTS_RPC -from blockchain.contracts import contracts -from blockchain.fetch_latest_block import fetch_latest_block -from blockchain.gas_strategy import GasFeeStrategy -from cryptography.verify_signature import compute_vs -from metrics import healthcheck_pulse -from metrics.metrics import ( - BUILD_INFO, - ACCOUNT_BALANCE, - BUFFERED_ETHER, - REQUIRED_BUFFERED_ETHER, - GAS_FEE, - CAN_DEPOSIT_KEYS, - CURRENT_QUORUM_SIZE, - DEPOSIT_FAILURE, - SUCCESS_DEPOSIT, -) -from metrics.transport_message_metrics import message_metrics -from transport.msg_providers.kafka import KafkaMessageProvider -from transport.msg_providers.rabbit import RabbitProvider, MessageType -from transport.msg_schemas import ( - DepositMessageSchema, - PingMessageSchema, - get_deposit_messages_sign_filter, - DepositMessage, -) -from transport.msg_storage import MessageStorage -from variables_types import TransportType - - -logger = logging.getLogger(__name__) - - -MODULE_ID = 1 - - -class DepositorBot: - NOT_ENOUGH_BALANCE_ON_ACCOUNT = 'Account balance is too low.' - GAS_FEE_HIGHER_THAN_RECOMMENDED = 'Gas fee is higher than recommended fee.' - DEPOSIT_SECURITY_ISSUE = 'Deposit security module prohibits the deposit.' - LIDO_CONTRACT_HAS_NOT_ENOUGH_BUFFERED_ETHER = 'Lido contract has not enough buffered ether.' - DEPOSITOR_CAN_DEPOSIT_KEYS = 'Depositor can not deposit keys. ' \ - 'No keys, paused staking module or not enough reserved ether.' - QUORUM_IS_NOT_READY = 'Quorum is not ready.' - - current_block = None - deposit_root: str = None - nonce: int = None - last_fb_deposit_failed = False - - def __init__(self, w3: Web3): - logger.info({'msg': 'Initialize DepositorBot.'}) - self.w3 = w3 - - self.gas_fee_strategy = GasFeeStrategy(w3, blocks_count_cache=150, max_gas_fee=variables.MAX_GAS_FEE) - - self.min_signs_to_deposit = contracts.deposit_security_module.functions.getGuardianQuorum().call() - logger.info({'msg': f'Call `getGuardianQuorum()`.', 'value': self.min_signs_to_deposit}) - - self.guardians_list = contracts.deposit_security_module.functions.getGuardians().call() - logger.info({'msg': f'Call `getGuardians()`.', 'value': self.guardians_list}) - - self.deposit_prefix = contracts.deposit_security_module.functions.ATTEST_MESSAGE_PREFIX().call() - logger.info({'msg': 'Call `ATTEST_MESSAGE_PREFIX()`.', 'value': str(self.deposit_prefix)}) - - transports = [] - - if TransportType.RABBIT in variables.MESSAGE_TRANSPORTS: - transports.append(RabbitProvider( - client='depositor', - routing_keys=[MessageType.PING, MessageType.DEPOSIT], - message_schema=Schema(Or(DepositMessageSchema, PingMessageSchema)), - )) - - if TransportType.KAFKA in variables.MESSAGE_TRANSPORTS: - transports.append(KafkaMessageProvider( - client=f'{variables.KAFKA_GROUP_PREFIX}deposit', - message_schema=Schema(Or(DepositMessageSchema, PingMessageSchema)), - )) - - if not transports: - logger.error({'msg': 'No transports found', 'value': variables.MESSAGE_TRANSPORTS}) - raise ValueError(f'No transports found. Provided value: {variables.MESSAGE_TRANSPORTS}') - - self.message_storage = MessageStorage( - transports, - filters=[ - message_metrics, - get_deposit_messages_sign_filter(self.deposit_prefix), - ], - ) - - BUILD_INFO.labels( - 'Depositor bot', - variables.NETWORK, - variables.MAX_GAS_FEE, - variables.MAX_BUFFERED_ETHERS, - variables.CONTRACT_GAS_LIMIT, - variables.GAS_FEE_PERCENTILE_1, - variables.GAS_FEE_PERCENTILE_DAYS_HISTORY_1, - variables.GAS_PRIORITY_FEE_PERCENTILE, - variables.MIN_PRIORITY_FEE, - variables.MAX_PRIORITY_FEE, - variables.KAFKA_TOPIC, - variables.ACCOUNT.address if variables.ACCOUNT else '0x0', - variables.CREATE_TRANSACTIONS, - ) - - # ------------ CYCLE STAFF ------------------- - def run_as_daemon(self): - """Super-Mega infinity cycle!""" - while True: - self._waiting_for_new_block_and_run_cycle() - - @timeout_decorator.timeout(variables.MAX_CYCLE_LIFETIME_IN_SECONDS) - def _waiting_for_new_block_and_run_cycle(self): - try: - self.run_cycle() - except BlockNotFound as error: - logger.warning({'msg': 'Fetch block exception.', 'error': str(error)}) - # Waiting for new block - time.sleep(15) - except timeout_decorator.TimeoutError as exception: - # Bot is stuck. Drop bot and restart using Docker service - logger.error({'msg': 'Depositor bot do not respond.', 'error': str(exception)}) - raise timeout_decorator.TimeoutError('Depositor bot stuck. Restarting using docker service.') from exception - except NoActiveProviderError as exception: - logger.error({'msg': 'No active node available.', 'error': str(exception)}) - raise NoActiveProviderError from exception - except ConnectionError as error: - logger.error({'msg': error.args, 'error': str(error)}) - raise ConnectionError from error - except ValueError as error: - logger.error({'msg': error.args, 'error': str(error)}) - time.sleep(15) - except Exception as error: - logger.warning({'msg': 'Unexpected exception.', 'error': str(error), 'details': traceback.format_exc()}) - time.sleep(15) - else: - time.sleep(15) - - def run_cycle(self): - logger.info({'msg': 'New deposit cycle.'}) - self._update_state() - - deposit_issues = self.get_deposit_issues() - - if not deposit_issues: - logger.info({'msg': f'No issues found.', 'value': deposit_issues}) - return self.do_deposit() - - logger.info({'msg': f'Issues found.', 'value': deposit_issues}) - - long_issues = [ - self.NOT_ENOUGH_BALANCE_ON_ACCOUNT, - self.DEPOSIT_SECURITY_ISSUE, - self.LIDO_CONTRACT_HAS_NOT_ENOUGH_BUFFERED_ETHER, - self.DEPOSITOR_CAN_DEPOSIT_KEYS, - ] - - for long_issue in long_issues: - if long_issue in deposit_issues: - logger.info({'msg': f'Long issue found. Sleep for 1 minute.', 'value': long_issue}) - time.sleep(60) - break - - def _update_state(self): - healthcheck_pulse.pulse() - - self.current_block = fetch_latest_block(self.w3, self.current_block.number if self.current_block else 0) - - self.deposit_root = '0x' + contracts.deposit_contract.functions.get_deposit_root().call(block_identifier=self.current_block.hash.hex()).hex() - logger.info({'msg': f'Call `get_deposit_root()`.', 'value': str(self.deposit_root)}) - - # TODO replace nonce with getStakingModuleNonce - self.nonce = self._get_nonce() - logger.info({'msg': f'Call `getKeysOpIndex()`.', 'value': self.nonce}) - - def _get_nonce(self) -> int: - return contracts.node_operator_registry.functions.getKeysOpIndex().call(block_identifier=self.current_block.hash.hex()) - - def get_deposit_issues(self) -> List[str]: - # Filter non-valid messages. Actualized messages will be used in various checks. - self.actualize_messages() - - deposit_issues = [] - - if self._account_balance_issue(): - deposit_issues.append(self.NOT_ENOUGH_BALANCE_ON_ACCOUNT) - - if self._buffered_ether_issue(): - deposit_issues.append(self.LIDO_CONTRACT_HAS_NOT_ENOUGH_BUFFERED_ETHER) - - if self._high_gas_fee_issue(): - deposit_issues.append(self.GAS_FEE_HIGHER_THAN_RECOMMENDED) - - if self._quorum_issue(): - deposit_issues.append(self.QUORUM_IS_NOT_READY) - - # if staking_module_id is None deposit_issues would contain QUORUM_IS_NOT_READY because there is no messages - staking_module_id = self._get_latest_staking_module_id_in_messages() - if staking_module_id: - if self._prohibit_to_deposit_issue(staking_module_id): - deposit_issues.append(self.DEPOSIT_SECURITY_ISSUE) - - if self._cen_deposit_keys_issue(staking_module_id): - deposit_issues.append(self.DEPOSITOR_CAN_DEPOSIT_KEYS) - - return deposit_issues - - def _account_balance_issue(self) -> bool: - if variables.ACCOUNT: - balance = self.w3.eth.get_balance(variables.ACCOUNT.address, block_identifier={"blockHash": self.current_block.hash.hex()}) - ACCOUNT_BALANCE.set(balance) - logger.info({'msg': 'Check account balance.', 'value': balance}) - if balance < self.w3.toWei(0.05, 'ether'): - logger.warning({'msg': self.NOT_ENOUGH_BALANCE_ON_ACCOUNT, 'value': balance}) - return True - else: - logger.info({'msg': 'Check account balance. No account provided.'}) - ACCOUNT_BALANCE.set(0) - - def _buffered_ether_issue(self) -> bool: - pending_gas_fee = self.w3.eth.get_block('pending').baseFeePerGas - logger.info({'msg': 'Get pending `baseFeePerGas`.', 'value': pending_gas_fee}) - - buffered_ether = contracts.lido.functions.getDepositableEther().call( - block_identifier=self.current_block.hash.hex(), - ) - logger.info({'msg': 'Call `getDepositableEther()`.', 'value': buffered_ether}) - BUFFERED_ETHER.set(buffered_ether) - - recommended_buffered_ether = get_recommended_buffered_ether_to_deposit(pending_gas_fee) - logger.info({'msg': 'Recommended min buffered ether to deposit.', 'value': recommended_buffered_ether}) - REQUIRED_BUFFERED_ETHER.set(recommended_buffered_ether) - - if buffered_ether < recommended_buffered_ether: - logger.warning({'msg': self.LIDO_CONTRACT_HAS_NOT_ENOUGH_BUFFERED_ETHER, 'value': buffered_ether}) - return True - - def _high_gas_fee_issue(self) -> bool: - current_gas_fee = self.w3.eth.get_block('pending').baseFeePerGas - buffered_ether = contracts.lido.functions.getDepositableEther().call( - block_identifier=self.current_block.hash.hex(), - ) - - is_high_buffer = buffered_ether >= variables.MAX_BUFFERED_ETHERS - logger.info({'msg': 'Check max ether in buffer.', 'value': is_high_buffer}) - - recommended_gas_fee = self.gas_fee_strategy.get_recommended_gas_fee(( - (variables.GAS_FEE_PERCENTILE_DAYS_HISTORY_1, variables.GAS_FEE_PERCENTILE_1), - ), force=is_high_buffer) - - GAS_FEE.labels('max_fee').set(variables.MAX_GAS_FEE) - GAS_FEE.labels('current_fee').set(current_gas_fee) - GAS_FEE.labels('recommended_fee').set(recommended_gas_fee) - - if current_gas_fee > recommended_gas_fee: - logger.info({ - 'msg': self.GAS_FEE_HIGHER_THAN_RECOMMENDED, - 'values': { - 'max_fee': variables.MAX_GAS_FEE, - 'current_fee': current_gas_fee, - 'recommended_fee': recommended_gas_fee, - 'buffered_ether': buffered_ether, - } - }) - return True - - def _prohibit_to_deposit_issue(self, staking_module_id: int) -> bool: - can_deposit = contracts.deposit_security_module.functions.canDeposit(staking_module_id).call( - block_identifier=self.current_block.hash.hex(), - ) - logger.info({'msg': 'Call canDeposit().', 'value': can_deposit}) - - if not can_deposit: - logger.warning({'msg': self.DEPOSIT_SECURITY_ISSUE, 'value': can_deposit}) - return True - - def _cen_deposit_keys_issue(self, staking_module_id: int) -> bool: - depositable_ether = contracts.lido.functions.getDepositableEther().call( - block_identifier=self.current_block.hash.hex(), - ) - possible_deposits = contracts.staking_router.functions.getStakingModuleMaxDepositsCount( - staking_module_id, - depositable_ether, - ).call( - block_identifier=self.current_block.hash.hex(), - ) - logger.info({ - 'msg': f'Call getStakingModuleMaxDepositsCount({staking_module_id}, {depositable_ether}).', - 'value': possible_deposits, - }) - - CAN_DEPOSIT_KEYS.set(1 if possible_deposits else 0) - - if not possible_deposits: - logger.warning({'msg': self.DEPOSITOR_CAN_DEPOSIT_KEYS}) - return True - - def _quorum_issue(self) -> bool: - quorum_messages = self._form_a_quorum() - - CURRENT_QUORUM_SIZE.set(len(quorum_messages)) - - if len(quorum_messages) < self.min_signs_to_deposit: - logger.warning({'msg': self.QUORUM_IS_NOT_READY}) - return True - - def actualize_messages(self): - def _actualize_messages(message: DepositMessage): - if message['type'] != 'deposit': - logger.info({'msg': f'_actualize_message message.type issue', 'value': message['type']}) - return False - - # Maybe council daemon already reports next block - if message['blockNumber'] <= self.current_block.number: - if message['nonce'] != self.nonce: - logger.info({'msg': f'_actualize_message message.nonce issue', 'value': message['nonce']}) - return False - - if message['depositRoot'] != self.deposit_root: - logger.info({'msg': f'_actualize_message message.depositRoot issue', 'value': message['depositRoot']}) - return False - - if message['blockNumber'] + 200 < self.current_block.number: - logger.info({'msg': f'_actualize_message message.blockNumber issue', 'value': message['blockNumber']}) - return False - - if message['guardianAddress'] not in self.guardians_list: - logger.info({'msg': f'_actualize_message message.guardianAddress issue', 'value': message['guardianAddress']}) - return False - - return True - - self.message_storage.update_messages() - self.message_storage.get_messages(_actualize_messages) - - def _get_latest_staking_module_id_in_messages(self) -> Optional[int]: - messages = self._form_a_quorum() - if messages: - return messages[0]['stakingModuleId'] - - def _form_a_quorum(self) -> List[DepositMessage]: - dict_for_sort = defaultdict(lambda: defaultdict(list)) - - for message in self.message_storage.messages: - logger.debug({'msg': f'dict_for_sort message.', 'value': message}) - dict_for_sort[message['blockNumber']][message['blockHash']].append(message) - - max_quorum = 0 - quorum_block_number = 0 - quorum_block_hash = '' - - for block_num, blocks_by_number in dict_for_sort.items(): - for block_hash, block_messages in blocks_by_number.items(): - - if max_quorum < len(block_messages) and block_num > quorum_block_number: - max_quorum = len(block_messages) - quorum_block_number = block_num - quorum_block_hash = block_hash - - quorum_messages = self._remove_address_duplicates(dict_for_sort[quorum_block_number][quorum_block_hash]) - - if max_quorum >= self.min_signs_to_deposit: - logger.info({'msg': f'Quorum ready.', 'value': quorum_messages}) - else: - logger.warning({'msg': 'Not enough signs for quorum.', 'value': max_quorum}) - - return quorum_messages - - @staticmethod - def _remove_address_duplicates(messages: List[DepositMessage]) -> List[DepositMessage]: - guardian_address = [] - - def _filter(msg: DepositMessage) -> bool: - if msg['guardianAddress'] not in guardian_address: - guardian_address.append(msg['guardianAddress']) - return True - - return list(filter(_filter, messages)) - - @staticmethod - def _check_transaction(transaction) -> bool: - try: - transaction.call() - except ContractLogicError as error: - logger.error({'msg': 'Local transaction reverted.', 'error': str(error)}) - return False - - return True - - def do_deposit(self): - quorum = self._form_a_quorum() - - priority = self.gas_fee_strategy.get_priority_fee( - variables.GAS_PRIORITY_FEE_PERCENTILE, - variables.MIN_PRIORITY_FEE, - variables.MAX_PRIORITY_FEE, - ) - - signs = self._prepare_signs(quorum) - - logger.info({'msg': 'Sending deposit transaction.', 'values': { - 'deposit_root': str(self.deposit_root), - 'nonce': self.nonce, - 'block_number': quorum[0]['blockNumber'], - 'block_hash': quorum[0]['blockHash'], - 'signs': signs, - 'gas_limit': variables.CONTRACT_GAS_LIMIT, - 'priority_fee': priority, - }}) - - deposit_function = contracts.deposit_security_module.functions.depositBufferedEther( - quorum[0]['blockNumber'], - quorum[0]['blockHash'], - self.deposit_root, - quorum[0]['stakingModuleId'], - self.nonce, - b'', - signs, - ) - - if not self._check_transaction(deposit_function): - return - - logger.info({'msg': 'Deposit local call succeed.'}) - - if not variables.ACCOUNT: - logger.info({'msg': 'Account was not provided.'}) - return - - if not variables.CREATE_TRANSACTIONS: - logger.info({'msg': 'Run in dry mode.'}) - return - - logger.info({'msg': 'Transaction call completed successfully.'}) - - transaction = deposit_function.build_transaction({ - 'from': variables.ACCOUNT.address, - 'gas': variables.CONTRACT_GAS_LIMIT, - 'maxFeePerGas': self.current_block.baseFeePerGas * 2 + priority, - 'maxPriorityFeePerGas': priority, - "nonce": self.w3.eth.get_transaction_count(variables.ACCOUNT.address), - }) - - signed = self.w3.eth.account.sign_transaction(transaction, variables.ACCOUNT.privateKey) - - if ( - variables.FLASHBOT_SIGNATURE is not None - and variables.WEB3_CHAIN_ID in FLASHBOTS_RPC - and not self.last_fb_deposit_failed - ): - self._do_flashbots_deposit(signed) - else: - self._do_classic_deposit(signed) - - logger.info({'msg': f'Deposit method end. Sleep for 1 minute.'}) - time.sleep(60) - - def _do_classic_deposit(self, signed_transaction): - self.last_fb_deposit_failed = False - - logger.info({'msg': 'Try to deposit. Classic mode.'}) - - try: - result = self.w3.eth.send_raw_transaction(signed_transaction.rawTransaction) - except Exception as error: - logger.error({'msg': 'Transaction reverted.', 'value': str(error)}) - DEPOSIT_FAILURE.inc() - else: - logger.info({'msg': 'Transaction mined.', 'value': result.hex()}) - SUCCESS_DEPOSIT.inc() - - def _do_flashbots_deposit(self, signed_transaction): - logger.info({'msg': 'Try to deposit. Flashbots mode.'}) - - for i in range(7): - # Try to get in next 7 blocks - result = self.w3.flashbots.send_bundle( - [{"signed_transaction": signed_transaction.rawTransaction}], - self.current_block.number + 1 + i - ) - - try: - rec = result.receipts() - except TransactionNotFound as error: - self.last_fb_deposit_failed = True - logger.error({'msg': f'Deposit failed.', 'error': str(error)}) - DEPOSIT_FAILURE.inc() - else: - logger.info({'msg': 'Transaction mined.', 'value': rec[-1]['transactionHash'].hex()}) - SUCCESS_DEPOSIT.inc() - - @staticmethod - def _prepare_signs(messages: List[DepositMessage]) -> List[Tuple[str, str]]: - sorted_messages = sorted(messages, key=lambda msg: int(msg['guardianAddress'], 16)) - - return [ - (msg['signature']['r'], compute_vs(msg['signature']['v'], msg['signature']['s'])) - for msg in sorted_messages - ] diff --git a/src/bots/pause.py b/src/bots/pause.py new file mode 100644 index 00000000..36546411 --- /dev/null +++ b/src/bots/pause.py @@ -0,0 +1,98 @@ +import logging +from typing import Callable + +from schema import Schema, Or +from web3.types import BlockData + +import variables +from blockchain.typings import Web3 +from cryptography.verify_signature import compute_vs +from metrics.transport_message_metrics import message_metrics_filter +from transport.msg_providers.kafka import KafkaMessageProvider +from transport.msg_providers.rabbit import RabbitProvider, MessageType +from transport.msg_schemas import PauseMessageSchema, get_pause_messages_sign_filter, PauseMessage, PingMessageSchema +from transport.msg_storage import MessageStorage +from transport.types import TransportType + + +logger = logging.getLogger(__name__) + + +class PauserBot: + def __init__(self, w3: Web3): + self.w3 = w3 + + transports = [] + + if TransportType.RABBIT in variables.MESSAGE_TRANSPORTS: + transports.append(RabbitProvider( + client='pauser', + routing_keys=[MessageType.PING, MessageType.PAUSE], + message_schema=Schema(Or(PauseMessageSchema, PingMessageSchema)), + )) + + if TransportType.KAFKA in variables.MESSAGE_TRANSPORTS: + transports.append(KafkaMessageProvider( + client=f'{variables.KAFKA_GROUP_PREFIX}pause', + message_schema=Schema(Or(PauseMessageSchema, PingMessageSchema)), + )) + + if not transports: + logger.warning({'msg': 'No transports found', 'value': variables.MESSAGE_TRANSPORTS}) + + pause_prefix = self.w3.lido.deposit_security_module.get_pause_message_prefix() + + self.message_storage = MessageStorage( + transports, + filters=[ + message_metrics_filter, + get_pause_messages_sign_filter(pause_prefix), + ], + ) + + def execute(self, block: BlockData) -> bool: + messages = self.receive_pause_messages() + logger.info({'msg': f'Received {len(messages)} pause messages.'}) + + for message in messages: + self._send_pause_message(message) + + return True + + def receive_pause_messages(self) -> list[PauseMessage]: + actualize_filter = self._get_message_actualize_filter() + return self.message_storage.get_messages(actualize_filter) + + def _get_message_actualize_filter(self) -> Callable[[PauseMessage], bool]: + current_block = self.w3.eth.get_block('latest') + message_validity_time = self.w3.lido.deposit_security_module.get_pause_intent_validity_period_blocks() + + def message_filter(message: PauseMessage) -> bool: + # TODO Metrics for filtered messages + return message['blockNumber'] > current_block['number'] - message_validity_time + + return message_filter + + def _send_pause_message(self, message: PauseMessage) -> bool: + module_id = message['stakingModuleId'] + + logger.warning({'msg': f'Handle pause message for module: {module_id}', 'value': message}) + + if not self.w3.lido.staking_router.is_staking_module_active(module_id): + # Module already deactivated + self._clear_outdated_messages_for_module(module_id) + logger.info({'msg': f'Module {module_id} already paused. Skip message.'}) + return False + + pause_tx = self.w3.lido.deposit_security_module.pause_deposits( + message['blockNumber'], + module_id, + (message['signature']['r'], compute_vs(message['signature']['v'], message['signature']['s'])) + ) + + result = self.w3.transaction.send(pause_tx, False, 6) + logger.info({'msg': f'Transaction send. Result is {result}.', 'value': result}) + return result + + def _clear_outdated_messages_for_module(self, module_id: int) -> None: + self.message_storage.get_messages(lambda message: message['stakingModuleId'] != module_id) diff --git a/src/bots/pause_bot.py b/src/bots/pause_bot.py deleted file mode 100644 index fe0a7896..00000000 --- a/src/bots/pause_bot.py +++ /dev/null @@ -1,207 +0,0 @@ -import logging -import time -from typing import List - -import timeout_decorator -from schema import Schema, Or -from web3 import Web3 -from web3.exceptions import BlockNotFound, ContractLogicError -from web3_multi_provider import NoActiveProviderError - -import variables -from blockchain.contracts import contracts -from blockchain.fetch_latest_block import fetch_latest_block -from cryptography.verify_signature import compute_vs -from metrics import healthcheck_pulse -from metrics.metrics import BUILD_INFO -from metrics.transport_message_metrics import message_metrics -from transport.msg_providers.kafka import KafkaMessageProvider -from transport.msg_providers.rabbit import RabbitProvider, MessageType -from transport.msg_schemas import PauseMessageSchema, get_pause_messages_sign_filter, PauseMessage, PingMessageSchema -from transport.msg_storage import MessageStorage -from variables_types import TransportType - -logger = logging.getLogger(__name__) - - -class PauserBot: - current_block = None - - def __init__(self, w3: Web3): - logger.info({'msg': 'Initialize PauserBot.'}) - self.w3 = w3 - - self.blocks_till_pause_is_valid = contracts.deposit_security_module.functions.getPauseIntentValidityPeriodBlocks().call() - logger.info({ - 'msg': f'Call `getPauseIntentValidityPeriodBlocks()`.', - 'value': self.blocks_till_pause_is_valid, - }) - - self.pause_prefix = contracts.deposit_security_module.functions.PAUSE_MESSAGE_PREFIX().call() - logger.info({'msg': f'Call `PAUSE_MESSAGE_PREFIX()`.', 'value': str(self.pause_prefix)}) - - transports = [] - - if TransportType.RABBIT in variables.MESSAGE_TRANSPORTS: - transports.append(RabbitProvider( - client='pauser', - routing_keys=[MessageType.PING, MessageType.PAUSE], - message_schema=Schema(Or(PauseMessageSchema, PingMessageSchema)), - )) - - if TransportType.KAFKA in variables.MESSAGE_TRANSPORTS: - transports.append(KafkaMessageProvider( - client=f'{variables.KAFKA_GROUP_PREFIX}pause', - message_schema=PauseMessageSchema, - )) - - if not transports: - logger.error({'msg': 'No transports found', 'value': variables.MESSAGE_TRANSPORTS}) - raise ValueError(f'No transports found. Provided value: {variables.MESSAGE_TRANSPORTS}') - - self.message_storage = MessageStorage( - transports, - filters=[ - message_metrics, - get_pause_messages_sign_filter(self.pause_prefix), - ], - ) - - BUILD_INFO.labels( - 'Pauser bot', - variables.NETWORK, - None, - None, - None, - None, - None, - None, - None, - None, - variables.KAFKA_TOPIC, - variables.ACCOUNT.address if variables.ACCOUNT else '0x0', - variables.CREATE_TRANSACTIONS, - ) - - def run_as_daemon(self): - """Super-Mega infinity cycle!""" - while True: - self._waiting_for_new_block_and_run_cycle() - - @timeout_decorator.timeout(variables.MAX_CYCLE_LIFETIME_IN_SECONDS) - def _waiting_for_new_block_and_run_cycle(self): - try: - self.run_cycle() - except timeout_decorator.TimeoutError as exception: - # Bot is stuck. Drop bot and restart using Docker service - logger.error({'msg': 'Pauser bot do not respond.', 'error': str(exception)}) - raise timeout_decorator.TimeoutError('Pauser bot stuck. Restarting using docker service.') from exception - except BlockNotFound as error: - logger.warning({'msg': 'Fetch block exception (BlockNotFound)', 'error': str(error)}) - time.sleep(15) - except NoActiveProviderError as exception: - logger.error({'msg': 'No active node available.', 'error': str(exception)}) - raise NoActiveProviderError from exception - except Exception as exception: - logger.warning({'msg': 'Unexpected exception.', 'error': str(exception)}) - time.sleep(15) - else: - time.sleep(15) - - def run_cycle(self): - logger.info({'msg': 'New pause cycle.'}) - self._update_state() - - messages = self.receive_pause_messages() - - if not messages: - return - - staking_module_id = messages[0]['stakingModuleId'] - is_active = contracts.staking_router.functions.getStakingModuleIsActive(staking_module_id).call( - block_identifier=self.current_block.hash.hex(), - ) - - logger.info({ - 'msg': f'Call `getStakingModuleIsActive()`.', - 'value': is_active, - 'stakingModuleId': staking_module_id, - }) - - if not is_active: - self.message_storage.clear() - return - - self.pause_protocol(messages) - - def _update_state(self): - healthcheck_pulse.pulse() - - self.current_block = fetch_latest_block(self.w3, self.current_block.number if self.current_block else 0) - - def receive_pause_messages(self) -> List[PauseMessage]: - def validate_messages(messages: List[PauseMessage]): - return filter(lambda msg: msg['blockNumber'] > self.current_block.number - self.blocks_till_pause_is_valid, messages) - - self.message_storage.update_messages() - return self.message_storage.get_messages(actualize_rule=validate_messages) - - def pause_protocol(self, messages: List[PauseMessage]): - logger.warning({'msg': 'Message pause protocol initiate.', 'value': messages}) - - if not variables.ACCOUNT: - logger.warning({'msg': 'No account provided. Skip creating tx.'}) - return - - if not variables.CREATE_TRANSACTIONS: - logger.warning({'msg': 'Running in DRY mode.'}) - return - - for message in messages: - if self.send_pause_transaction(message): - break - - def send_pause_transaction(self, message: PauseMessage): - priority_fee = self.w3.eth.max_priority_fee * 2 - - logger.info({ - 'msg': 'Send pause transaction.', - 'values': { - 'block_number': message['blockNumber'], - 'signature': (message['signature']['r'], compute_vs(message['signature']['v'], message['signature']['s'])), - 'priority_fee': priority_fee, - }, - }) - - pause_function = contracts.deposit_security_module.functions.pauseDeposits( - message['blockNumber'], - message['stakingModuleId'], - (message['signature']['r'], compute_vs(message['signature']['v'], message['signature']['s'])) - ) - - try: - pause_function.call() - except ContractLogicError as error: - logger.error({'msg': 'Local transaction reverted.', 'error': str(error)}) - return False - - logger.info({'msg': 'Transaction call completed successfully.'}) - - transaction = pause_function.build_transaction({ - 'from': variables.ACCOUNT.address, - 'gas': variables.CONTRACT_GAS_LIMIT, - 'maxFeePerGas': self.current_block.baseFeePerGas * 2 + priority_fee, - 'maxPriorityFeePerGas': priority_fee, - "nonce": self.w3.eth.get_transaction_count(variables.ACCOUNT.address), - }) - - signed = self.w3.eth.account.sign_transaction(transaction, variables.ACCOUNT.privateKey) - - try: - result = self.w3.eth.send_raw_transaction(signed.rawTransaction) - except Exception as error: - logger.error({'msg': 'Transaction reverted.', 'value': str(error)}) - return False - else: - logger.info({'msg': 'Transaction mined.', 'value': result.hex()}) - return True diff --git a/src/depositor.py b/src/depositor.py index bafb61ba..23849526 100644 --- a/src/depositor.py +++ b/src/depositor.py @@ -1,48 +1,74 @@ from prometheus_client import start_http_server from flashbots import flashbot from web3 import Web3 -from web3_multi_provider import MultiProvider +from web3_multi_provider import FallbackProvider import variables -from blockchain.constants import FLASHBOTS_RPC -from blockchain.contracts import contracts +from blockchain.executer import Executor +from blockchain.web3_extentions.lido_contracts import LidoContracts +from blockchain.web3_extentions.transaction import TransactionUtils +from bots.depositor import DepositorBot from metrics.healthcheck_pulse import start_pulse_server from metrics.logging import logging -from blockchain.requests_metric_middleware import add_requests_metric_middleware +from blockchain.web3_extentions.requests_metric_middleware import add_requests_metric_middleware +from metrics.metrics import BUILD_INFO logger = logging.getLogger(__name__) def main(): - logger.info({'msg': 'Start Depositor bot.'}) - logger.info({'msg': f'Start up healthcheck service on port: {variables.PULSE_SERVER_PORT}.'}) start_pulse_server() logger.info({'msg': f'Start up metrics service on port: {variables.PROMETHEUS_PORT}.'}) start_http_server(variables.PROMETHEUS_PORT) + # Send vars to metrics + BUILD_INFO.labels( + 'Depositor bot', + variables.MAX_GAS_FEE, + variables.MAX_BUFFERED_ETHERS, + variables.CONTRACT_GAS_LIMIT, + variables.GAS_FEE_PERCENTILE_1, + variables.GAS_FEE_PERCENTILE_DAYS_HISTORY_1, + variables.GAS_PRIORITY_FEE_PERCENTILE, + variables.MIN_PRIORITY_FEE, + variables.MAX_PRIORITY_FEE, + variables.KAFKA_TOPIC, + variables.ACCOUNT.address if variables.ACCOUNT else '0x0', + variables.CREATE_TRANSACTIONS, + ) + logger.info({'msg': 'Connect MultiHTTPProviders.', 'rpc_count': len(variables.WEB3_RPC_ENDPOINTS)}) - w3 = Web3(MultiProvider(variables.WEB3_RPC_ENDPOINTS)) + w3 = Web3(FallbackProvider(variables.WEB3_RPC_ENDPOINTS)) + + logger.info({'msg': 'Initialize Lido contracts.'}) + w3.attach_modules({ + 'lido': LidoContracts, + 'transaction': TransactionUtils, + }) - if variables.FLASHBOT_SIGNATURE is None: - logger.info({'msg': 'No flashbots middleware.'}) - elif variables.WEB3_CHAIN_ID in FLASHBOTS_RPC: + if variables.FLASHBOT_SIGNATURE and variables.FLASHBOTS_RPC: logger.info({'msg': 'Add flashbots middleware.'}) - flashbot(w3, w3.eth.account.from_key(variables.FLASHBOT_SIGNATURE), FLASHBOTS_RPC[variables.WEB3_CHAIN_ID]) + flashbot(w3, w3.eth.account.from_key(variables.FLASHBOT_SIGNATURE), variables.FLASHBOTS_RPC) else: logger.info({'msg': 'No flashbots available for this network.'}) logger.info({'msg': 'Add metrics to web3 requests.'}) add_requests_metric_middleware(w3) - logger.info({'msg': 'Load contracts.'}) - contracts.initialize(w3) - - from bots.depositor_bot import DepositorBot + logger.info({'msg': 'Initialize Depositor bot.'}) depositor_bot = DepositorBot(w3) - depositor_bot.run_as_daemon() + + e = Executor( + w3, + depositor_bot.execute, + 5, + variables.MAX_CYCLE_LIFETIME_IN_SECONDS, + ) + logger.info({'msg': 'Rum executor.'}) + e.execute_as_daemon() if __name__ == '__main__': diff --git a/src/metrics/healthcheck_pulse.py b/src/metrics/healthcheck_pulse.py index 88626eec..57e69691 100644 --- a/src/metrics/healthcheck_pulse.py +++ b/src/metrics/healthcheck_pulse.py @@ -5,6 +5,7 @@ import requests + SERVER_PORT = int(os.getenv('PULSE_SERVER_PORT', 9010)) _last_pulse = datetime.now() diff --git a/src/metrics/logging.py b/src/metrics/logging.py index cbec5a4d..5007882a 100644 --- a/src/metrics/logging.py +++ b/src/metrics/logging.py @@ -1,5 +1,6 @@ import json import logging +from time import time class JsonFormatter(logging.Formatter): @@ -14,6 +15,7 @@ def format(self, record: logging.LogRecord) -> str: 'lineno': record.lineno, 'module': record.module, 'pathname': record.pathname, + 'timestamp': int(time()), **message, }) return to_json_msg diff --git a/src/metrics/metrics.py b/src/metrics/metrics.py index fa6fa375..eedae177 100644 --- a/src/metrics/metrics.py +++ b/src/metrics/metrics.py @@ -4,7 +4,6 @@ BUILD_INFO = Gauge('build_info', 'Build info', [ 'name', - 'network', 'max_gas_fee', 'max_buffered_ethers', 'contract_gas_limit', @@ -18,27 +17,26 @@ 'create_transactions', ], namespace=PREFIX) -GAS_FEE = Gauge('gas_fee', 'Gas fee', ['type'], namespace=PREFIX) +GAS_FEE = Gauge('gas_fee', 'Gas fee', ['type', 'module_id'], namespace=PREFIX) -DEPOSIT_FAILURE = Counter('deposit_failure', 'Deposit failure', namespace=PREFIX) -SUCCESS_DEPOSIT = Counter('deposit_success', 'Deposit done', namespace=PREFIX) +TX_SEND = Counter('transactions_send', 'Amount of send transaction from bot.', ['status'], namespace=PREFIX) ACCOUNT_BALANCE = Gauge('account_balance', 'Account balance', namespace=PREFIX) -KAFKA_DEPOSIT_MESSAGES = Gauge( - 'kafka_deposit_messages', +DEPOSIT_MESSAGES = Gauge( + 'deposit_messages', 'Guardians deposit messages', ['address', 'version'], namespace=PREFIX, ) -KAFKA_PAUSE_MESSAGES = Gauge( - 'kafka_pause_messages', +PAUSE_MESSAGES = Gauge( + 'pause_messages', 'Guardians pause messages', ['address', 'version'], namespace=PREFIX, ) -KAFKA_PING_MESSAGES = Gauge( - 'kafka_ping_messages', +PING_MESSAGES = Gauge( + 'ping_messages', 'Guardians ping messages', ['address', 'version'], namespace=PREFIX, @@ -50,12 +48,16 @@ namespace=PREFIX, ) -BUFFERED_ETHER = Gauge('buffered_ether', 'Buffered ether', namespace=PREFIX) -CAN_DEPOSIT_KEYS = Gauge('can_deposit_keys', 'Can depositor bot deposit keys.', namespace=PREFIX) - -REQUIRED_BUFFERED_ETHER = Gauge( - 'required_buffered_ether', - 'Buffered ether amount required for deposit', +DEPOSITABLE_ETHER = Gauge( + 'depositable_ether', + 'Depositable Ether', + ['module_id'], + namespace=PREFIX, +) +POSSIBLE_DEPOSITS_AMOUNT = Gauge( + 'possible_deposits_amount', + 'Possible deposits amount.', + ['module_id'], namespace=PREFIX, ) diff --git a/src/metrics/transport_message_metrics.py b/src/metrics/transport_message_metrics.py index 6cedfc7f..f2747c80 100644 --- a/src/metrics/transport_message_metrics.py +++ b/src/metrics/transport_message_metrics.py @@ -1,6 +1,6 @@ import logging -from metrics.metrics import KAFKA_DEPOSIT_MESSAGES, KAFKA_PING_MESSAGES +from metrics.metrics import DEPOSIT_MESSAGES, PING_MESSAGES, PAUSE_MESSAGES from transport.msg_providers.rabbit import MessageType from transport.msg_schemas import DepositMessage @@ -8,20 +8,23 @@ logger = logging.getLogger(__name__) -def message_metrics(msg: DepositMessage) -> bool: - # Remove all ping messages, because we use them only for metrics +def message_metrics_filter(msg: DepositMessage) -> bool: msg_type = msg.get('type', None) logger.info({'msg': 'Guardian message received.', 'value': msg, 'type': msg_type}) address, version = msg.get('guardianAddress'), msg.get('app', {}).get('version') if msg_type == MessageType.PAUSE: + PAUSE_MESSAGES.labels(address, version).inc() return True if msg_type == MessageType.DEPOSIT: - KAFKA_DEPOSIT_MESSAGES.labels(address, version).inc() + DEPOSIT_MESSAGES.labels(address, version).inc() return True elif msg_type == MessageType.PING: - KAFKA_PING_MESSAGES.labels(address, version).inc() + # Filter all ping messages, because we use them only for metrics + PING_MESSAGES.labels(address, version).inc() return False + + # TODO Log all filtered messages diff --git a/src/pauser.py b/src/pauser.py index 7bf0eb20..a83ad537 100644 --- a/src/pauser.py +++ b/src/pauser.py @@ -1,37 +1,67 @@ from prometheus_client import start_http_server from web3 import Web3 -from web3_multi_provider import MultiProvider +from web3_multi_provider import FallbackProvider import variables +from blockchain.executer import Executor +from blockchain.web3_extentions.lido_contracts import LidoContracts +from blockchain.web3_extentions.transaction import TransactionUtils +from bots.pause import PauserBot from metrics.healthcheck_pulse import start_pulse_server from metrics.logging import logging -from blockchain.requests_metric_middleware import add_requests_metric_middleware -from blockchain.contracts import contracts +from blockchain.web3_extentions.requests_metric_middleware import add_requests_metric_middleware +from metrics.metrics import BUILD_INFO + logger = logging.getLogger(__name__) def main(): - logger.info({'msg': 'Start Pause bot.'}) - logger.info({'msg': f'Start up healthcheck service on port: {variables.PULSE_SERVER_PORT}.'}) start_pulse_server() logger.info({'msg': f'Start up metrics service on port: {variables.PROMETHEUS_PORT}.'}) start_http_server(variables.PROMETHEUS_PORT) + BUILD_INFO.labels( + 'Pause bot', + variables.MAX_GAS_FEE, + variables.MAX_BUFFERED_ETHERS, + variables.CONTRACT_GAS_LIMIT, + None, + None, + None, + None, + None, + variables.KAFKA_TOPIC, + variables.ACCOUNT.address if variables.ACCOUNT else '0x0', + variables.CREATE_TRANSACTIONS, + ) + logger.info({'msg': 'Connect MultiHTTPProviders.', 'rpc_count': len(variables.WEB3_RPC_ENDPOINTS)}) - w3 = Web3(MultiProvider(variables.WEB3_RPC_ENDPOINTS)) + w3 = Web3(FallbackProvider(variables.WEB3_RPC_ENDPOINTS)) logger.info({'msg': 'Add metrics to web3 requests.'}) add_requests_metric_middleware(w3) logger.info({'msg': 'Load contracts.'}) - contracts.initialize(w3) + w3.attach_modules({ + 'lido': LidoContracts, + 'transaction': TransactionUtils, + }) + + logger.info({'msg': 'Add metrics to web3 requests.'}) + add_requests_metric_middleware(w3) - from bots.pause_bot import PauserBot - deposit_pause_bot = PauserBot(w3) - deposit_pause_bot.run_as_daemon() + pause = PauserBot(w3) + e = Executor( + w3, + pause.execute, + 1, + variables.MAX_CYCLE_LIFETIME_IN_SECONDS, + ) + logger.info({'msg': 'Rum executor.'}) + e.execute_as_daemon() if __name__ == '__main__': diff --git a/src/transport/msg_providers/kafka.py b/src/transport/msg_providers/kafka.py index df2c1b20..633d0365 100644 --- a/src/transport/msg_providers/kafka.py +++ b/src/transport/msg_providers/kafka.py @@ -11,9 +11,10 @@ KAFKA_USERNAME, KAFKA_PASSWORD, KAFKA_TOPIC, - NETWORK, + KAFKA_NETWORK, ) + logger = logging.getLogger(__name__) @@ -28,7 +29,7 @@ class KafkaMessageProvider(BaseMessageProvider): def __init__(self, message_schema: Schema, client: str): logger.info({'msg': 'Kafka initialize.'}) - kafka_topic = f'{NETWORK}-{KAFKA_TOPIC}' + kafka_topic = f'{KAFKA_NETWORK}-{KAFKA_TOPIC}' self.kafka = Consumer({ 'client.id': kafka_topic + f'-{client}-client', diff --git a/src/transport/msg_providers/rabbit.py b/src/transport/msg_providers/rabbit.py index 4f0c260d..c9d126ae 100644 --- a/src/transport/msg_providers/rabbit.py +++ b/src/transport/msg_providers/rabbit.py @@ -9,7 +9,7 @@ import variables from transport.msg_providers.common import BaseMessageProvider from transport.msg_providers.stomp.client import Client -from variables import NETWORK, KAFKA_TOPIC + logger = logging.getLogger(__name__) diff --git a/src/transport/msg_schemas.py b/src/transport/msg_schemas.py index ded2d5c0..a906615e 100644 --- a/src/transport/msg_schemas.py +++ b/src/transport/msg_schemas.py @@ -1,3 +1,4 @@ +import logging import re from typing import Callable, TypedDict @@ -6,6 +7,9 @@ from cryptography.verify_signature import verify_message_with_signature +logger = logging.getLogger(__name__) + + HASH_REGREX = Regex('^0x[0-9,A-F]{64}$', flags=re.IGNORECASE) ADDRESS_REGREX = Regex('^0x[0-9,A-F]{40}$', flags=re.IGNORECASE) @@ -60,18 +64,20 @@ class Signature(TypedDict): class DepositMessage(TypedDict): type: str depositRoot: str - nonce: str + nonce: int blockNumber: int blockHash: str guardianAddress: str signature: Signature stakingModuleId: int + app: dict -def get_deposit_messages_sign_filter(deposit_prefix) -> Callable: +def get_deposit_messages_sign_filter(attestation_prefix: bytes) -> Callable: + """Returns filter that checks message validity""" def check_deposit_messages(msg: DepositMessage) -> bool: - return verify_message_with_signature( - data=[deposit_prefix, msg['blockNumber'], msg['blockHash'], msg['depositRoot'], msg['stakingModuleId'], msg['nonce']], + verified = verify_message_with_signature( + data=[attestation_prefix, msg['blockNumber'], msg['blockHash'], msg['depositRoot'], msg['stakingModuleId'], msg['nonce']], abi=['bytes32', 'uint256', 'bytes32', 'bytes32', 'uint256', 'uint256'], address=msg['guardianAddress'], vrs=( @@ -81,6 +87,11 @@ def check_deposit_messages(msg: DepositMessage) -> bool: ), ) + if not verified: + logger.error({'msg': 'Message verification failed.', 'value': msg}) + + return verified + return check_deposit_messages @@ -118,10 +129,10 @@ class PauseMessage(TypedDict): stakingModuleId: int -def get_pause_messages_sign_filter(pause_prefix: str) -> Callable: +def get_pause_messages_sign_filter(attestation_prefix: bytes) -> Callable: def check_pause_message(msg: PauseMessage) -> bool: - return verify_message_with_signature( - data=[pause_prefix, msg['blockNumber'], msg['stakingModuleId']], + verified = verify_message_with_signature( + data=[attestation_prefix, msg['blockNumber'], msg['stakingModuleId']], abi=['bytes32', 'uint256', 'uint256'], address=msg['guardianAddress'], vrs=( @@ -131,6 +142,11 @@ def check_pause_message(msg: PauseMessage) -> bool: ), ) + if not verified: + logger.error({'msg': 'Message verification failed.', 'value': msg}) + + return verified + return check_pause_message diff --git a/src/transport/msg_storage.py b/src/transport/msg_storage.py index 8ec6a53e..f365d849 100644 --- a/src/transport/msg_storage.py +++ b/src/transport/msg_storage.py @@ -1,6 +1,7 @@ from typing import List, Callable, Iterable from transport.msg_providers.common import BaseMessageProvider +from transport.msg_schemas import DepositMessage class MessageStorage: @@ -27,13 +28,11 @@ def _receive_messages(self) -> Iterable[dict]: return self.messages - def update_messages(self): - self._receive_messages() - - def get_messages(self, actualize_rule: Callable) -> List[dict]: + def get_messages(self, actualize_rule: Callable[[DepositMessage], bool]) -> List[dict]: """ - actualize_rule - function that will filter messages based on all messages in memory and last data from blockchain + actualize_rule - is filter that filters all outdated messages """ + self._receive_messages() self.messages = list(filter(actualize_rule, self.messages)) return self.messages diff --git a/src/variables_types.py b/src/transport/types.py similarity index 100% rename from src/variables_types.py rename to src/transport/types.py diff --git a/src/utils/__init__.py b/src/utils/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/src/utils/timeout.py b/src/utils/timeout.py new file mode 100644 index 00000000..968b1c6e --- /dev/null +++ b/src/utils/timeout.py @@ -0,0 +1,27 @@ +import signal + + +class TimeoutManagerError(Exception): + pass + + +class TimeoutManager: + """Simple timeout manager """ + @staticmethod + def handler(signum, frame): + raise TimeoutManagerError + + def __init__(self, seconds: int): + self.old = -1 + self.seconds = seconds + + def __enter__(self): + # Set timer + self.old = signal.signal(signal.SIGALRM, self.handler) + signal.setitimer(signal.ITIMER_REAL, self.seconds) + return self + + def __exit__(self, exception_type, exception_value, exception_traceback): + # Remove timer + signal.setitimer(signal.ITIMER_REAL, 0) + signal.signal(signal.SIGALRM, self.old) diff --git a/src/variables.py b/src/variables.py index 42c271b4..236e3e81 100644 --- a/src/variables.py +++ b/src/variables.py @@ -4,63 +4,74 @@ from eth_account import Account from web3 import Web3 -from blockchain.constants import NETWORK_CHAIN_ID, Network -from variables_types import TransportType logger = logging.getLogger(__name__) -NETWORK = os.getenv('NETWORK') +# EL node +WEB3_RPC_ENDPOINTS = os.getenv('WEB3_RPC_ENDPOINTS', '').split(',') -# Transaction limits -MAX_GAS_FEE = Web3.toWei(*os.getenv('MAX_GAS_FEE', '100 gwei').split(' ')) -CONTRACT_GAS_LIMIT = int(os.getenv('CONTRACT_GAS_LIMIT', 15 * 10**6)) +# Account private key +WALLET_PRIVATE_KEY = os.getenv('WALLET_PRIVATE_KEY', None) -# Gas fee percentile -GAS_FEE_PERCENTILE_1: int = int(os.getenv('GAS_FEE_PERCENTILE_1', 5)) -GAS_FEE_PERCENTILE_DAYS_HISTORY_1: int = int(os.getenv('GAS_FEE_PERCENTILE_DAYS_HISTORY_1', 1)) +if WALLET_PRIVATE_KEY: + ACCOUNT = Account.from_key(WALLET_PRIVATE_KEY) + logger.info({'msg': 'Load account from private key.', 'value': ACCOUNT.address}) +else: + ACCOUNT = None + logger.warning({'msg': 'Account not provided. Run in dry mode.'}) -GAS_PRIORITY_FEE_PERCENTILE = int(os.getenv('GAS_PRIORITY_FEE_PERCENTILE', 25)) +# App specific +# LIDO_LOCATOR ADDRESS +# Mainnet: 0xC1d0b3DE6792Bf6b4b37EccdcC24e45978Cfd2Eb +# Görli: 0x1eDf09b5023DC86737b59dE68a8130De878984f5 +LIDO_LOCATOR = os.getenv('LIDO_LOCATOR', '0xC1d0b3DE6792Bf6b4b37EccdcC24e45978Cfd2Eb') -MIN_PRIORITY_FEE = Web3.toWei(*os.getenv('MIN_PRIORITY_FEE', '50 mwei').split(' ')) -MAX_PRIORITY_FEE = Web3.toWei(*os.getenv('MAX_PRIORITY_FEE', '10 gwei').split(' ')) +# DEPOSIT_CONTRACT ADDRESS +# Mainnet: 0x00000000219ab540356cBB839Cbe05303d7705Fa +# Görli: 0xff50ed3d0ec03aC01D4C79aAd74928BFF48a7b2b +DEPOSIT_CONTRACT = os.getenv('DEPOSIT_CONTRACT', '0x00000000219ab540356cBB839Cbe05303d7705Fa') -MAX_BUFFERED_ETHERS = Web3.toWei(*os.getenv('MAX_BUFFERED_ETHERS', '5000 ether').split(' ')) +# rabbit / kafka / rabbit,kafka +MESSAGE_TRANSPORTS = os.getenv('MESSAGE_TRANSPORTS', '').split(',') # Kafka secrets KAFKA_BROKER_ADDRESS_1 = os.getenv('KAFKA_BROKER_ADDRESS_1') KAFKA_USERNAME = os.getenv('KAFKA_USERNAME') KAFKA_PASSWORD = os.getenv('KAFKA_PASSWORD') +KAFKA_NETWORK = os.getenv('KAFKA_NETWORK', 'mainnet') # or goerli KAFKA_TOPIC = os.getenv('KAFKA_TOPIC') KAFKA_GROUP_PREFIX = os.getenv('KAFKA_GROUP_PREFIX', '') -# Should be reinitialized after brownie pre-script -WEB3_CHAIN_ID = NETWORK_CHAIN_ID.get(NETWORK, Network.Mainnet) - -# Account private key -WALLET_PRIVATE_KEY = os.getenv('WALLET_PRIVATE_KEY', None) -FLASHBOT_SIGNATURE = os.getenv('FLASHBOT_SIGNATURE', None) - -if WALLET_PRIVATE_KEY: - ACCOUNT = Account.from_key(WALLET_PRIVATE_KEY) - logger.info({'msg': 'Load account from private key.', 'value': ACCOUNT.address}) -else: - ACCOUNT = None - logger.warning({'msg': 'Account not provided. Run in dry mode.'}) +# rabbit secrets +RABBIT_MQ_URL = os.getenv('RABBIT_MQ_URL', 'ws://127.0.0.1:15674/ws') +RABBIT_MQ_USERNAME = os.getenv('RABBIT_MQ_USERNAME', 'guest') +RABBIT_MQ_PASSWORD = os.getenv('RABBIT_MQ_PASSWORD', 'guest') +# Transactions settings CREATE_TRANSACTIONS = os.getenv('CREATE_TRANSACTIONS') == 'true' -WEB3_RPC_ENDPOINTS = os.getenv('WEB3_RPC_ENDPOINTS', '').split(',') +MIN_PRIORITY_FEE = Web3.toWei(*os.getenv('MIN_PRIORITY_FEE', '50 mwei').split(' ')) +MAX_PRIORITY_FEE = Web3.toWei(*os.getenv('MAX_PRIORITY_FEE', '10 gwei').split(' ')) -PROMETHEUS_PORT = int(os.getenv('PROMETHEUS_PORT', '9000')) -PULSE_SERVER_PORT = int(os.getenv('PULSE_SERVER_PORT', '9010')) +MAX_GAS_FEE = Web3.toWei(*os.getenv('MAX_GAS_FEE', '100 gwei').split(' ')) +CONTRACT_GAS_LIMIT = int(os.getenv('CONTRACT_GAS_LIMIT', 15 * 10**6)) -MAX_CYCLE_LIFETIME_IN_SECONDS = int(os.getenv('MAX_CYCLE_LIFETIME_IN_SECONDS', '30000')) +# FLASHBOTS_RPC URL +# Mainnet: "https://relay.flashbots.net", +# Görli: "https://relay-goerli.flashbots.net", +FLASHBOTS_RPC = os.getenv('FLASHBOTS_RPC', None) +FLASHBOT_SIGNATURE = os.getenv('FLASHBOT_SIGNATURE', None) -RABBIT_MQ_URL = os.getenv('RABBIT_MQ_URL', 'ws://127.0.0.1:15674/ws') +# Curated module strategy +GAS_FEE_PERCENTILE_1: int = int(os.getenv('GAS_FEE_PERCENTILE_1', 20)) +GAS_FEE_PERCENTILE_DAYS_HISTORY_1: int = int(os.getenv('GAS_FEE_PERCENTILE_DAYS_HISTORY_1', 1)) -RABBIT_MQ_USERNAME = os.getenv('RABBIT_MQ_USERNAME', 'guest') -RABBIT_MQ_PASSWORD = os.getenv('RABBIT_MQ_PASSWORD', 'guest') +GAS_PRIORITY_FEE_PERCENTILE = int(os.getenv('GAS_PRIORITY_FEE_PERCENTILE', 25)) + +MAX_BUFFERED_ETHERS = Web3.toWei(*os.getenv('MAX_BUFFERED_ETHERS', '5000 ether').split(' ')) -# rabbit / kafka or rabbit,kafka -MESSAGE_TRANSPORTS = os.getenv('MESSAGE_TRANSPORTS', TransportType.RABBIT).split(',') +# Metrics +PROMETHEUS_PORT = int(os.getenv('PROMETHEUS_PORT', '9000')) +PULSE_SERVER_PORT = int(os.getenv('PULSE_SERVER_PORT', '9010')) +MAX_CYCLE_LIFETIME_IN_SECONDS = int(os.getenv('MAX_CYCLE_LIFETIME_IN_SECONDS', '1200')) diff --git a/static/img.png b/static/img.png new file mode 100644 index 0000000000000000000000000000000000000000..3bd5c83741e031194e7c2600fbea7b172a512033 GIT binary patch literal 39855 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 literal 0 HcmV?d00001 diff --git a/static/img1.png b/static/img1.png new file mode 100644 index 0000000000000000000000000000000000000000..3228000335ad9b823f83747085792a75a6166a48 GIT binary patch literal 36369 zcmeFZc{r4P_%=Q*QX{P+WiKsKNLeabYiL1a%^GDLW65qpDXJ0L3)zMkJ7KItl(b29 zX6$4i62{JZ-BQovLa2U4fbUk!s=Z-; z=1YqU)Na&ZMV0)Ls>a%zm_0(P&r101*&^b%2NkznajODpE9RCpTr3c=o`~8O6utgT zVDx&_z!~JWYq0_bYq6-a2mJQjJR>Nyx*EQ%a1yyQm*UoYI~2E~YVJp`7pPuORLF*J zKU9Z{@56wQ;Gu51{J)?2|2=>;J1{CiTo$w(TpuqhN$Jn%WzViBqD|ffu#X2f*15NP zThVeI9CnDA7$EP0mMqRDmt}sA zlvZyq_MZDn!Uh&~v%_Sq%xwM^497Ydmwt`iM5JkBwj#8V!(pv`niy)Vl4*PRcg~-)DT;@~5^FIrvSK5; z!h4U6_QGp`b1Ri!Yn(XP%%Q@%7aS=dU%dFQ{p1KC)>m%D1VF z588FyF?#0L7qLSVtvR?C)Q2V+S8grLWLEGU3*wfhRFp|Mw7ohp^|SNcp;xE-iiXk( zRU6Zc8QwPM`xv?H_Mg9eIW+NQ2c~s=z$tHv*JC8V&(<{xEi!V#Ajj5%-qOb#Kk$S~ zn4cTOf(4jF|Cssz7O;rFg{8E&e6<@8|}v*gKvi&7;^i-h

Qo!9 zDz&=$CtiMT_}CoJ#Llt`y>t`&x{W)p@D~~p7&(>;vy+!c4M(T^IZdp?r0})|x%T*| zp>Gi~__?p4#~3r4c~ADV>c+l3nY)-;eVMvr1Sjj#{~ev1I53n{^(i&C%{G`%)^?<1 z$wy0H-x`fZe~pwS6cyL+{ewMN_ocuLd-b%N5yxX|z=w4hq zt>|0x{8$Bl@8?75*{js5`eH-mj%Ha_zS(X2v!gWBry`j5SZjf6R;`OGH*f7woJOKX zQev56`)0Z6x9b+d9g3R|n-;govHB~sl)4TzSj-MAXy@r1*Xgevnl57#d%0CmxoJ)- zDr{YOcSQ)jQFlmfpGSLHX_{1evfKeLV~k^ZUKe_f<<^}jE49BdOXPDj`AUZG(jvNo zOtSh#&bV%d!PtK()T-AC+ZnT+rg@fGoN z9;4JL;R*I+8;yMr?*gsly*o4OnxJw4qWLciMieOptWQ!HNV z9$RpIuj{wo!Q^y`pyP;B(BNS4ghyFLUuC$J3flp-uxoVr`JeC5jIirrjJyZCj(rHI zxpGZEJu&`O!9v;KA)yAQE4!chky%5|zZoF#sL&2hPJ%Z!_R{84KNWiW>~1Ae6vqO^ ziZc|?#HiHno_s06uHCmj8TWNpoHK=du^vS72CZYq5B-m||hMH;QK~)-{LO*}a%-_c{l<=^EYAX-*KQyhTy3J@4M(R3TCDJX zq_R7~I+EC8)ZnA53I%NysLAmu@k(UL%oRSjk!vg8cF>wPakii;KPk85*!EG5|qm^-^!ky z%93T?grV4udFnZonp-6GLfAiP6jIA@75csb>#nwd)AcGjvK9MY7@03IA_Wic6q$!* zMx`idEHtzlbi*)Z-Ku9NdbPhvCBP(wF`Ta#{F4-t6*aNfFvlgj;#P}uUEU~6DCpaS zP8M2g%|-TmK+GnW#dFi%u%M=Hl#-(thwPtheQ>tESMK)KLuy&tnVhoxsgqxrMf-Lx z)U^4JmMj$?Ja{lu%gFU>s`;QC^T?FzH)Vedj6DY_o8{i>*s^@(UlaN3iTT#HsZ3vO zGTJ`5OU?`SkG3OQ@R0Z+1rwKQtkm9;@ozGgon`)(!%dlPfyC&j_)KAqq%JZOZ$z;R zWe=EYaSriLtyd8&3_F^%wS}EqswpG2(NHiZDQ|FHxmA?6)Oc}(TGu-yHE zAih|>p*tJ456{Z7D7BU->rXmQQ)vArAx=FXA8`cZo@$oro2l>C-aTG0ls29e!*|N# zdw`1U=AgmErD(<5!VgAljJw&TTdpLm9vVAnWLtve_~vw*ycDxjVm-z6VH=TeJvl_#DY(P--1TKrtb zZTKhc7t6l@YR-#^=;^m>HaATzq?asy=Aq|0L|x9de$*&!tI1lv@51w!u*BMA_yFqu z#l<+W0mZRWR(^>Wrat*6TnDv#n=Xh^ugy*l^-TsLNx5nifRi{p#xGhI0OmiC*PO9W zR;XZce*B{I!epbgwMI+6b3&u8UX<@*zN|Dn)b}k2))wLP>w07HU4mx`J?j}jo z8)N?YOd3v2QSp|ysP`OGGRkK*acbw8S|tc0__+wzhRafQsrs2^LkVvs&EKzgZu9I5 zjaLf~gWm|}w$CfQ0r8Auq{O(;joBXdJh4%y>VRs9SikQ?zveNE&lu-Ue@>e7;3SWf z-OCv!-GMsSnBQ9!g=r|u6yy^(~G%#aIH)v1Qk1isu7 zWbbX{lKA+_o7v3t&hL4AVYsiW=hKr=x!HLM`<5nxNw~BF^Bbq+-)a1zq*1iMq*r=R zwOTbkS?H5r5)YAI%%f&RO4wZT_d)LtJMS@8&Pjhbfgr1!9tg5R<=`6ARNG-ZLdUD* z+q3POYfg=SJw{n7@*E##6vBkWMw11|6;9nj(zKfgy;2IO+?b{5?#<3Wp6SuHNV<<0 zjaRGihhEOIY>tk5i;+wB3sVaA>**>F#FJ~rHS~4!s&QLJ(i2Gq^8VVg0SLfi)@QP? z?YK63kUThJ>{QOd%+Wr6gOSrXe05VulK*W|Szf%i@R`6x5p=Vy-pBfxiCOhHSX7A8mUw{^9nKcYGnlcm{#vl)S$IpdP0HmCab(Vb@5&paRaSo%$6oz0fG@^+>7uJXvwIN4%>TX~43X!H!0* z#3}7s``cHM^64~EP-h2hBBDLR_IrL2$!*$tCN)v(o@U1*M^pcYU0vp*Jfs|38guvb z<-YF|s<~0tXe(DJ9rn9AEloC>67XTaAc;9w$u{yOf6a61KI+X;CxNY(O}92koMpv{ zN=DSMf4#K~(CQ05cDz*Pn2a3E^NaF(DbxB!3T|}v5P?_HD`8HPyeW7QWb zjYVK%e6?wgEYzLMK7Te&-Py={4N8M-ejQe@3!`@hwC= zaWxSgvnO_nnzbUW&iA-6bU;oq0vDS4t7DVdiKW^f?8+~?jke+GFw~_NVj~8lf|PgM zE-vN5P8Dst69eOQCq+t8Jj1^AB*9RvwGLB_r&BCww%ai}n7;UM`(MFd=0;1RB!zUD zd=^?d8rm_uIkF2Awah-)CiROc19|qQ)zA5nflXVkO9M6%SvT`#56w!H^-&Jm)$J2v z4%R1^8I&B+IhQIblr$YAI-*llj%RCF9dMh3E+!i!)1||&3?`yS^6-kCVOIuij&S58 zB_?$GNr~zx)(fR3-C0)w&y%B^RRDjL-IDAT@@9jdIR%}j_?<02?D_NOy3;2Pzx3iN zcKFvott&V6nJG6>z{#3V=P6w>Gc$|uGtZ!0G!t%d7;U3cP^vJev93uIiNpl^@Fcqe zMRB3oUk!#1o(smX4A(@CXjRD+Mch$d%@Lm?>raTh^8N@}!(f+Mqt3IMjy`0>u{jI= z1o{l#_w>FM$*BkFyTbM!>&+h#&DghHF(Qu;!� zsLNK5Fno3_nT>dqz_cUW@&&j_dxWjlzTDczPDHD7J<=j;>1eYkvtS}lr#s|z1p0-2 zi_sw4#B!2cQsyu*R|}<2Dj`Z{Rz?W)iSBZMV$fM!(3AgRW(IT&P>#A{uTJ6v)Kq+XYzLSJzX1{#Hl$})JIb!;-!of zjjMD2Z0$y&1l(aSqcR5@Qo}=!JCWRZP^g|w5RL?N;X>4PewgPihu||RKLo0PdmQlj zW{V1t-S3I;Sz!cdVU#({JxX8-0zE1dk`(IU96*Mf`pD;x-pjuSpHV$>|NGm19d6F5 zJd|E!4kXs|6TR!o`F-cBRl_7crI=7@g|aA=^-knIdxQDq?L~`zD%ECQRpH*0pc-oK z#-Ld&Ex`5-m&7%^)QnYbb_+dX=I6c%h5CL3d5n)mKg-xc1$O2Es;%VEGt%tTNBBqJ z=cx2GsG9-6xuDMU0(mL1X5Gf0Wu&1`2cjnI*-$91O~|_^s)b8=mL5sD7$xTxmPC+& z+d3}aR(87Mwu!>Vr$EFntU@WgLtcE3d;j;{wN!$;*xoh(oF=Al_0Q$8KrkqWQWuuf z_!w%urop%`~&kyOPNz6@+ zPRT8SMiBtF(AmUu{K^hdBWwFYhE#358uxg*?*iM|Ap6z=g!m2LEI+a% zID2?mHKa?)dkia43bPO+_J+kr079=j#caB2!hN$~s3}vh_Tnl5e^}q!M4Gl;Mf3ys zdtqNBK^1D^uYjS8q)-Zr2yB&jHmavF|Ko)z{KZw;ckxC8YK;OKd0-k;@(gSWfk$D% zW2)7iG1^qY?+cHH`h|=OiJkXkU0TfbkTqm}q%>tGhV?QifBvV<=o#V2)z!_Q7O)em zWT##s?|=lj`))8@p{v%c^Qc%=w>fo5N8^?F)qubM_x~1&Dp|_5PN+7`SZ372+Y6`y z{KF=Al}26uE{{!Q9tZ@#<+ZN$M7AA=GdMp(ofzA=L%+bqCeG~OksH&F1o>M?wbGDk z81Az$8;W2pgr4V^t=RhJF%KrnYw+MWELqQrvCR;Bf9rkayD%2jB&;W(dkeX#D}sFaxwOF1l~Z*l=Z)|_-sc@v%I#xOVr3)2}&!SG{M zr)rI^f7)mH?bV51sQyjb5o)7?kMPyVqtibgw4~6)G#U4iY(}$RSLtomN?3UI1#S#m zpT!v~g6e|GgPmsIWJXUBA|V#j8-G2yC^t58OtmTof`KKl))Zg(huU~=CF81oj_tEX z(}_se(Y97OX<3t2hvOYXlu{ul1=H0}pFL~#9m?4lb#as$JT#Lx^}5=qRS!QRf1{1= zP}0iOY)1kLcTU4l(%fQKpqQP0?Ob%Rm)ZpFPRY)DtN%Tq1sV;rB^~YQRHlKy9H=x1 zfmL?@LZ7<>r>>3$kGxM2`xcP&aJ~AJ=xKQLrVheny&kBNXfePX&d(@*Y<*v z&t)dlCons9fP6)JdG5*nP(-jP0{%VTp}m;tIS;H!;`b#el{0bD2h?9#gLYl5j+}A>H z*9jgML-#nfQYyr7H;m}_Vt0;OUlCI_$L;XYGCKiKRpQ@jpov5I|{B z2^XX6*EGkRzFSnx)mbNW?WePa;#jMDdrpO9y_WpYLPHhTeGySnN{o1a@>X^KlR-rd zy^HmxwGRAV{kzlK4IQW!qZdb?`E2s*%C@O3Du#TWh3Cq5p$|eTTnSoSdxVI}xh})7 z^(gX54hX=6znV-^UaC`BrJc(r-|%^@*2UKDZAF{8rR*}~ zal*+yX{sJUW){HCc!t%?_B^>ri;}F@jm_bjAwUhp!24aHCF_X+&)D%5kMmkW*Vu<2 zT0gF+aRVqoYF~O^s+7)K*Z;hRun=*zU%Zel^<~3M;zb=r@j*#q*dp1PETrc6m7SPg zJe$POYSzYbL~mflw(1UbwfF$vR(G%Y<0C=Fy|6<2BdV+PVxJpKktc5g$1y&82Q)~Z znIA8hR#Z8zPI{52vu@|4|1%bB^~ZMCMq{g`RNLIrFs%RnRQbBOINzas;j`;@YYBZWu_D{Up5}G$-8%u+dg~c2UQ>9?!-WA6bB# z*}I+q!he?h#mH05izz=xn65e;7!D$4+QlSDbnwJFeA4x#!Q?Pv68&yMbHl`92%x|< zeL&t&r66ywFx&_^aM+}%iNd0_DH%Ad(Mz)XZO*6827`hr6LLW?eUMvKkezLH)9uZ2)@vdtbL(jme&j8QBx$a#?Coh%Q|UHk zm0^-!v<*`?{_~tMw@LGWtSJm97A!}N=Gfz#6k^`e;vC+idVTBS!rZZi)@UJGn3BJC z8boMr7fG%p(qZ(OFiWnql*GOi1}DZ^!hmAed{m}&96;J9)mRW8*9xX6X6{J6sD0#8 zQ!VDQ=Fjim0k`o|UYpRl=qRsOUf+aUVg-`ug>;;?A-XkJ*=w@x;I!P*{5a(^Inv>~ z0|Zn`ROC2dYR1(~k%g;sMlNavzQYFY6|#?=QhcV-T47i_r#BWw!P9A)M$~nsxa7tY zFPXxCe-utHQ(8vriL9G=GGcGo>l2kINeSp2Ks4i5VjP#iu zNU1#{85aLYGN{eQIL1D9fK-2>(5KNmz3VH&sI#)U)^7j!%y?p4)<%dulu59 zd2;M8YROIB;2`R3QCU^R5JO)xup*yN4m+9DsF2}gE!{M7EH-ZFZbw9ltAb*umtTX?y{O6 zsW>_hXl;B)Jxwi_cVGSHl-v{p<<}^+|C&6)@(?* z+&!sSV9g!+S&nUKVbm9INZEQFmG2K&c-gol%tj1TPM!=`RKReYyY3J&QH^oaVQuJp z7h#aLpeu==2l>5?f$G`u=kC{UlPJuWQg{RZn>#hc`KFj>6OfbJ-XdLc$}P zg6lv{`J%CJ$1T>Q^tQD=K#3EK=uB(86H=N)xVPElE;v=OMvovb83eAYLp&JQTj_z$ z(gMWzDBE-mxUE>KR$Xxt?X&W;J32O(>wQ~&5UWLb+=QwBC#V6N%ry!a5X9~Hy%l5j zToNvO-KB=UOWUkF#M_u^*cY)~p%nqxh*e8>3&yp2G~itZw?k32Ou&3Do-Q?dZ2L6m zFZi4u;B09>6BZ3(caFs3-CSByMN=48UFgxPGlV6RqbM||(S)OluPy3YUcWH0wJ)Br z9Pf_}p`|`;X~ZBb&u^cYqDB$8kiJ5J+heT1&c*43L))pi2Zj4WhC1)^OSKld=f>Wm zSyteqWZcu(@7&$Y&!lDd>O>t{Fyy#Y2+(XQbz!7%w5Yh*nwC80p_zjy;F<=EA4%;v zZ^a&a?>iI7l18j+sXyzq{QUsyw6op61ve(-suTdRdr_+6eqpc1e$|&9-oa(sm;?RE zn&r_qAIE2inijtz9pCB&V1xA2~^6U(3zyX8eaF7&YYOV{tLS~wq6er{O9Xn zGtho^y(aElX!P_4ZU+zVhxUMjp~h{h3L+-t;U!~ovXbHl`BWCFX*FP!Xpsq?2PWqC z_}8$i z5tlekq}0DWW)f_gGb2+c%9#)9kvb|eYBnht0|!Euf;(<0Rc*_DpHm) zi^WI9Frf;dyWZC`@qC>RGz)&84*t`x-f)L7z%E~8_y~{>3<``YqceL>f~?#Ml;N_Mac%iLv*v*WT@-@ zbI~N!CA5XYH!RrqcOgb_D~eNp@1=gNPtyqg&bDu*z4Gi0b(>r5KHG~Jxey7J;?Qo= zISop_<>_07JW2!`8?}eu62^mfikCfo@q#er-Sctlc+=I8X2~ zXH`*Hj{3lIR&5s$iUfn8)QvRLlD6SCDqYvG?y0Wq4)nG8&HsH3lG(d}P>|oM4qZ*l zh~N6&QJ+@inZ=6@Kj~^4AL92M{c){#c15UC87Sh1UR_+33PaWl1#1l9`F?t{C!Q9r$~gxjwvB%`jsL>#^W5>t#)1z!nLs|#70A`f zQ?H;Zx-|fXfL<$>lWLtVbN*NkjHG$uqpzSqdwN@dvyF1z_NVg}OoCc?@1$|AeFVO? zKau`i`M)dD*P1t4v_JWc%Rmh}x7r#aN0Nx)#~K5bDIT-1nq3q166(_Z`6M*4)Y-jJ zcb!BSnRx|mw*>>d1~z>(fSubeJU*=eZv#$(nxN>HCJ2wAtTBIA>4|8+B#CVEx;anq zwy<37>kFKOLI5R%pwON${cI8b!72;*aXEVEw<z?njqW=E=3A`Acd4znrtb)aAUF5iSJ8A<_5`xjco;>9&i!tV2=aff=lBwE-`jcN_k;^+jh}L)h?^F=8m#zTV z#$UN4S!?m-dGpdI+%=6_x!XRo{Kd268XL!9U=1k8gNSwWkOD)yAy6tR;&ySQoIihl zn7KVEqrhXVOI2R&YQ1%gU($$J-Y8)t|G@TsU66pQB(L|Jz0}%mB^9-w7?@xDw?-6YERVjwTYg_NJw@i2yn`!DUi2#He9x9u0EmGUAI1x61je= z);bbhfrKG-3!Ssv64o02?7;My+9xF19%73aO-fFCQ?Jiq&>BrXpSFF!YQ|IoF-2tNwk;_=iYY zjr>&;EUdS?{8-q4Z3NQu_g0buzRVfynO;B%hJe9?7CpTxe(|rQ4#q83z6{RH z5hv8-)tO&EnC^C9y#`7XlI-umLKsX;7{;bFXy)TlgZ7K_GjPc=`TEZ#wL*7A&E*%T zuL48c+6q34c*qRBQ1ATvKDFh^4MIr8f?K2E4(5X+2nij$<}B+S1TRZYuUB%*jhIb=Im^9f-PNewtM5;Y3HpRY|wsxY`RQ zQ%KxBzmtB?vuB6&Xn`%jPIiR+$7*V@uM0nAvTb8x>vpt zp~C0+KA;@31AODnAu%y&7{#0tnPk0mCT&$*2=THcn0*$Fzdwkm43{Q&KP-XN|EmUu znX%LahTAV6*J}h#4mE}YA~KxKrEd~2)_!l>lIO%+iUl4lbLbf$b~{7X4yY1;&I-yy z7VZ&Qs8U_h8UmwCbFp_}%kUP;(&3mm((=3cOlWknGN z+NgziXI~Xm+>=E<2@n9X!D#V;1?OiogvtMeuTEKa_=D-a>m{*fiE zcPdtMv6PdOe5=Bxs{*iUDi&%kZ(wSdRZWGWY!-EmY-KI=9MN`$R+RP;b;C=E--8wz z6v178enCJ^_)@I7B>KLvNi5aBRZjD}wK>p(YJglSk$B|xj|h72E~T&^OndD2L2}Dz z$%;=)`OTuHf}*qk^Y2; zm&-zI^(?GqRiLcZ%*?!H2O(f0Ob`RfTA#lF=x;r*qa{ePuhg@sGiT=?th56NnytxO|lQ0r75 z@e*5l5FhNaWK5QanHcY@nxZ+^gPwTEj{YcFFxm!blY$4;moCV=)s$HouR;%*eM4PA>vg+_?Qd0nz;MBfU2JXYLi;5pynUgU~Oz(JbVGX zR?4;DZ>j~hbY1(@)}@s>(Wkci%vGv_BPv*Vz+9ttR|%LP)A=8FL-`^J=ITOkc|@U6 zx$ROq%3PB~(%6Yf)zo*PKT$VLb3p`&62NHTS_$f&-dp&8Pe6GRQd0%<3@X_GZnXps z&xC((BUqj+fKj(*cI8ASK<_Io%gFQ9$pd0N#Ena2T zdfb!oC9w+Yxm8h&d^cA z@4=X+k6_O~3ikjG0tqaOSCJIqXEim_YQkNkV#?D$egtH}boLoBSdwKTh@q7>76Mzw zg4puY01L$~GCO0wa)2@jF^H!&oqgbS;zu-_VXplo?O{|I7AJAut>f*g^vyS3zkcmD zp`&wqmv_**mFHWs4hj-Be)DaeS(061pec)TF8fS{vAc?REKRe#A2GZZ`(#;FF=?98 zD>LXD4&`Ojk+;@+-YhFMPfrTV^h&2<*@+Fv;>D>{_J4T>ZDzDar}y`^GDnl?tO6>~FJk{`^+sdeXg7Ws8Ss}j}iRk7!IZ*x1Zno7NtpuLRkpI>uuhI}0k zO>CYOw-g}o;&qIsjz7MjbwB5Fk)J9Iv6`o6ej}@Ef`~FSS`AP55L@clSH`6sfoc>- ze=xindH#6DWMhG^p2H?j$fQ3!4$fqvK2|mM{_Gq7J<_hr8(5g3IEMH}p#IMM@v~J* zz!7n^iD6p0&+_5X>3A`W0iS2j)^y(L?HfuS;o3On={9m{=tD)H` zcc>{ZPfdy=Rg=YV;TsN5q6hbLaB^z(^hzx6gYyK9x_&=VgGi8c)7jUP9|p-C7*2j+ zq*xtRR;I+gv(@drO6|pi*R=>MbG8<%4anCBg7Hek_uf(hI4lgX8GVnmutzuL-AV{O zt8r#>J@FGp)Zmz7hl2C;PqXyRT;BjWF|<2iu*1QY40Ckv_p*BweQ$6p=E(u0Y)eFr zk-7fv)*9BMqfdy$2r#M)-ChFM5#k5hD@5{ITYjw>CnS9dcYooy0=U5_bWO-k-{}fXi=q|`@X@m+0ojrK|p0Ly#Bbn zUXJBIwqZ17{mkF7ai$&=6=l*MZ3^>BI!K=7 zA%Cod=CdNX8N`PL0pa&!bL-|=SAw2BkRxau%yYs#kPhJl`aBIMJ}{ny{Ci9@JINYB z#0Ck6ww4_kPV`46$SN#(0rGve@0V8Qjg=hrd(hagmin>810NC(Edk5^9GML3>OFIX ziB%tAMNyeIfCxqs{O`-hYI+9&@_c!)gZH@O+o3gUA%km)4?+j>zpkl{AMBj8D(WTQ zfAi+e*OR*Vs4hz1ntu=61C>0|53sUO-J*p%Kj+bu_q7xMJ1i5~Dv?rJjYCG4E_LOs zk(BhB=>MAi;VyxJxhzT8!?r!9DZy z^D8>|-&;+J!ODk);F%k_G2aX#Og!WWrt|ZOJ%55FY`pY%#W4`Ed++l5{0xpIIaYH~ zDfTiNQQAH6Wb#L!Htn8X5EV?K_5!7iY!+1?jk;M;*}Dikk7GM*Tu{fXW+|ZW@c;Ge zdTqL?JRz!N{#RgQqy#tv_`N3{4b&&U$e;i9g-R*#fRHnM@1wDM>yI23iBxs(iGo6W z{(g8!K=LLsT#-sel>JU22aF-bEwm&aO)86}M-Hv5gYg4GpO?4h{bNFDM)@`CZb8)+ zw?|0$RjX%TgcSJ`Gz}HWxo%yHO-$jkzT`*piy=0EO@Q{cpK_oSx>UbHO;fqt_bQ3A zlpjJ|Pa&s%-NQT29nd^3Gy+Hj@!n31w9@7DQfIUztD!oqEi~R{J)7wBBBzfO|GI#Y z4@NU&{ff)`nFB~r1$u(vo8|AH=hp?f$bn1J_S*i7k#K{BdM#H6to^b93 z@9T%A#w9QhwBa8M@nB$RFCeAd+znIjNu4>1I+5HK^Y$-DPevhrTmP5C9CNl&CVJ$Bv0Laa z8MhSgs21ll*bv2-)9F#fMjj{-hn`@LS$@r^x{A;fhH_2`k(P7R#)(Q`slUlYVgLo? z7+Uo^BrFEN=&r>R`2%Zrsy^+9K`+)U4Q8RMTYnmHv?h@eKDOLCZ9 zsFA=@-M}^y4a>B&Pl3a*RqBP3w#AT+7Ix$FzSd1xy73W}2fgR2}-4%1G%g&erAd~@tR0=>LiWvX%2lBsW+T5`i^;t_&eEB)ocaZ4Ki-YrX(tvPD65u;Hr?3( zE`;o1#3xb%X?wUe?dZ%-jH}tOPe56V4LL`%nXvuNyDJh}oC|2KPFdD07Ay;z7coWw zRoz!T{{1;-#G3`PhhvZWi*GS%-z3dr8yR44V2%jh_bcIC_Mi18;Wg?CR3Z#lG2qeP zn4Ywr(9@E~)vDn3g-h6&FQuhJ=akPTi9M-RO4II|xtb5_me#oNc?U?y>et%BEn0+c zlNL>5923O^S}1YVqwny!t(K;G3yhRcFHr0tTB7bf6WsE^7{a))T4nXB0_Co76(cxZS30tHcru$qpy+#Lgrd*yJ5F|(Uz)rQJb1Sw?q3| z-RKLys}_bLbCjsi!5{{n`8#xcyUqd;yYZ4wxd#o z-=kMyYq6=PYvxR!(TsNXUe&0>Md$d1x%CAIg42{xL~nS;jj;eSgV_X?6W;gR4vgfX z=rSBEzs7MAJmF(a`sobZ!9?w zD>jW;-&(Q9AU3HY#dpZTe|F%4Vs2D?M)FZSI!0kUJD1ntH+JG9IJmK_hpc^#5ww&JTuMoT*6$zM_^&= z$eO+238O@r8NV%5)Z~5u4hot~lr|@3=z>R37r2M}at=fgSKCMh#5>x0Sxsk|gh!L3 zNr|uQOESWkPQF&}wBwW){Muc0>|CpMdx?TtFL!L#*fHe5vj(BTsWa&;I4Ce25gvLL zSfe6}#K*p9a$o#G^V#P{ib~!|Xkvq*-h~9_=_l&=*w#ykU z6vs4pG+g!S)ns*E8|9`J`zJ@*7F-n#X?m505U739u7h=7Gn4#Cs|}9}*&64?2No`r z+0s<7_7Y*?Y8eh4V6S6zr`n~yUX1EkhgH+8$A1P8w|MSMy%q|U6yp%A!&@aAxnqV0 zvrpdv^FTtI12bgE*wA?>`W@KZ>LRcFzFst&f#dN7o)3g zqv~<(cD+qX8X5euXQ7d*R+A9|-ge1owsRaAP9X`{Vpi<>WNzj*rgvS@24i zP0UV@m*elW38jr*nhPt43cWHR&Vxau`PMd_Cvv6TJC9jDXzZ==DhCILS5z__@X;9g zj-3crp+Pbf?&IH{?S(T4vb}v~A4}{sQ(Gn@ba_v@WR%;rblW@%fVnxY$a3DVYar1^ z@;cnExfL228)t`P8*#B!5opf( z_z+6D2EW>g#?k0vp6{G2kcg6hdg16#k9|A-E-kA*f5OA++bbLX@W>Euj1H9&zgt4j zCX5n!Tj`A=bo}JPJUrRi(9`XdK&1PX35(I?n#MJ!e?GrcD!S`Yg?m&S=?_3>3ii`4CguM9gkd#_6NRCHup0{;*;yYt0w)W zY<2Zm6E9<(nA|s8ouWl0sM@i4v#%;6W$Cz!+x~-40~$2fvFJ;b^{Yp)3@Z8CW~*z* zzNX>o@E5uMbDge6k1~!^+P;%9VbM-}Tq@oxm3I zul?yKY)L68U+q`LR;kqlHXwZf|5Oa!ulGnJSY4IB&LrBNUmzMUm(6mn7?YZa7^INi zkL3zQY9oGUx;JV(QDDPhBY?)?QA;j4!G8~1lVf)IE#<&4!~!3SB~v$S-+xUxVm#4W z&Eh|GhnY?7#4^jk3bfrX+9OewV4lQ`V99pk|9CR)Ht_DM!TB|eIUwDKa|C&z&*0cI zrvm^7)gw;+nEa&o@85sPjdUyI%6=zkLc8?4SUT&>p(b1wxPh0kFroNAL(@WHY@YBz zj(kzS;7Whwi`h6Cc}Ph32+%pmQBHq{I$y;fpUtZT?a-GIk}G(A>-?h4=Ycfi!Xjq& z3V#1R*e!94Eq;5XoqNBILA@w^X}OzuG0CG6yq{D#oBtF@`G<^pl!rK5-S$3NlyV0u zuQ(m%;26Bw#BAIOA+b^!QXC&~`zsS$_J%7HVHe}Lr0wm%!{3pUfb`=0ouB=uVTILd z{!=8^rd&Q|n7w?e4i5tQaR?kF%W2bbCY=Q35A z$?lzrgY6~qf;uOV8q%%j1xZr!UzHldANrXqAtw^4g72`{7pMy}hGDRN{&fpWk%L&A z?efaiq1`5l&bzKk+$xyMzP<%gWxP(ZZkyBI3TUuagPs?5Zn}d)u4@j$He=#qfT$Z16Qrg*plw`XD;kUWTM+WMpUR%PdS;;VH^X z@TffK#VhJoh=z%B3koOje2Ps>n2pfWM;fLYgRO-yJ2*I+8@+-1TCVH(wZYJ}%+Wb; zqo5+~h)Jwm@6eo78VwYVj;#SuN zW{YE3TsHe7dN6He6U|3mnH>P(q9bQFHGB8*TJ_r9Mm?6FpB^-ku~i0;wL^7dv=YKtg&xnS3y2kF-}6$93)DfGMh*gsdS!@KW}Eu9Zcz^qu@j z)DcXTT{*kGb>YY*`OVM;@sswjL_PA94RT;n`y7;@NAYh0U?Ho4)^^Zf`|gz&^0l7m zK+a}>!-$RnHxC33A5uauwDyCV#lFd2=2uj)fOSh=Ca-4vmJ9VeL=4VUhwWTpTy#MQ z;}1nl^#fM++%<}(JCO<&arIcj{Y+$PP8-TtKZWFP`QWjRIoNz26n|JQL^u?yIaL*P z>g9k@MI=Af6W9Q$z|9SJ9{?kF z7RiltHdAU9RG2?$w~pZFqN~mW&B4gl&XtWixN|Tc+(@)_%DKGAVQ>g}krF8yJi+ih zQjiCx!t~9L`w;1l<@iK#(v?p{jzdLq3R1#$u~n*nBIt@tP)G{h5#|Mi{vVk@GBzk~ zG_QM;;Z_~a3(FmBaQXpq2vg4_c7&E?6>>SxF(!W?K74qt368FU=i8a(&@PuQrt!@2 zQ8*O#9*h~K+Mm$FZ5Ne5Y$V?cqO*>z1n3mrp#5!LL#a&CK}R5n={XlbG|8E}pBT3Y z>FWDiIe-=8a8yzl(nEsOkVtn4N1HU&YIgNo?~q$zume9;l+P}tyIB#C`R zog15&pB+lK1apfe?4NibmN-_gzpe!_)9wm#rp$@!J@=*}S0@M>_3V#Ao8nvYs?)G> z)@mbv9*w`?_&iu7ze4$@22GmM1^(0Cz$7pizI!FX2^5~AyELL8t%L=KO*|Sz$WJ37 zgC~Y7TWeLc4+x@`JIUXJijQ2UKe+-Ygh=g$T{N|_mRBn*R13KQn#4ENG#s)gq@DDc z&)Ws6vv&(7^^@AlIz(xdFh^R$o4qV1`m0R{X(xaP?i~x}mJTLKo><`*x1t84D9_d_ z_s>p^Mr8@Ql&-h_N7ekp#G>wf08(<8vJD*w>-JN=q_2TiGbEzI_)GNJJjO?nKR>ud z1kP;2?+01hIiA=Lgk@-AO~KWQP3gS(D_s6o6e-~*nXw=9jmyiltgEZ5h(0CG{^z{~ z_<#n*AHdY?SAW%?qoNj*0nA$4(!H&M%YA2ZACaSy5cLVQg`Xp51F>Zz->If$@?<-U zni!)gGnU#8-Ub5Wp9a+}>5yrIjywlh$$Rh#x*mhUG?65QuXO)Q-;Fkd+?nkLL}-u+ z!5d7Io3OZFYgh6xO5zo)M3|y+eA7s{|p@?&A>T+GeC-FF_d8 z9m*A?QR$$;le>S1Cik#@##`hx6bQ2oc5Ow?xGGEN_>#H;>Ad(uuHu`&Yh$GP`3^2# zJMc*7#NGz}SDvAHcJGRgwFlL+A8)laMH)`(i*HPG4FbucDg}4yuUp~wn_bt-^Rodx zx;IbwwHtVz`JzsFzJbGXp1K?MK=d%6>D-T3^@>IT$A) zvH-u_xu~!g`YJfN(K4=s*AO2I(xV!3_jVVw`B*iUAy5w?*V;}%>+KM7W(te_@9cs& zQ&EowXgSI3w^sR=1&S7Y^pR-=D*_r1E?Fk>Q^yP4M=30J6VhIwcrUk{@%Mn&5G8PQ z-@birYsGoiXAOXJ zr@H_De_ai-qK<4bJ0yG05Rr9=l8_m)vv-+Ah!EL(R5lqQj+MQ#M~FlA-u#}Y>-v1J z>tFa?x0~B_%XvHJectca>-B!Vp3nQ^@q~BOj+;OEJfKAEJT8otI)c&|vc0Q@jGrLN zn6QF##HuMW0i>9iw7}*82kG{){*AB3Am>^g9P$m)V_#1|zsw89M5{KATCjFFQ~ml= z27V4g(pJPBTq@z`>4Rh-Sk@TtKYqOYyDuwD*lybIe|P2@o8{G-?&KGQ0JnSQWc|*x z=4zjVG~kYP*wLS8_35`4XJdm2@P^LZwtfVvLw_zISao^9!QpYWws$eQ@q5XaX)M`n zf8G1fnA*oKWG3%*pITQgu;de-=`O$$bGwx^g4XfFg+_tmWl%JrB5(%H_FZc5pOe8F zB>j;t!r*ep+&=lUD5l|G_QVH|L=;xMmQQo$?c;i>9(YFn2|ZH8E3mQa$#%Z?BdpYL z}LVt5fXTtj^$^2z>EzLC4$Y>8Lu%!x^8+zVw`hTNSXNW1HROz@4{RsVKWo5B) z;#h%YbOuQiwkifFXc=73zhSR4*RSCD!yA;+7nYX~S-giCSyh{QVAikZe`QPp4wL!A zgq=yAxB$`48Pkprv!#KosN7$b2kO5ro_P*VIanO|geoz;2+cFCp zJ99gf{twA@24#a)<3dF5F(Ugc(fh;|`y$c*UNnX6KnWEe4x_E7O63(Gq=V5rn=6=3+M_tERX!SSP6@> z+p;6XT_fr;n1O3lBhS#wo2MgHo7OqGqNg)mX=zdnO~eXs^hIw)W{0!ln(Hc{jHurV zO?6*nM*3LYe0Hu=hN_WX=uQaob5lk(;j8Hv*(H=}qW3Ip8O%M;V|LwF^$zC>RL2#6 zR6G7o6xlwRDUBS#JOEV3bT7Vo*I6;5)daPqdr?-QHyI)*mcte2S}LEhbC<$)^br`F3erFtA-G|GAgMQbj0eyjIPQRsgT z%v3AEu5$Dx$}wE@qeUi)2607Lt#ZmYLPZnFC(ImQ;g1xRzo!Y#LDW{qssJbl~sW6h`(enWm@8#VS3hdQ&SE#>|MgK~E&pR#` z(NBA^al!-@$wY{JQW8+{+WgQ~{}NI3^iT1gHU%5g$`B^=`G4N!_d|AVUf2c@llSdR zl>t~vd~IR5q$T9v)46~(EPT@Q;T(}raxWP!lu+aa05T08lUKj=zf(CY`>fJR3j>PM z$Pge083ZHxpZ;?S+ped_yN7s<@!lu<{yS_l)y2kvveryFp76I8T0YaTi}-+rAcldz z$jEDU-UruCHjl0hYngm%MOEUGaxVGNsi7bAy?Wz0z0sk$WjELw$`nw`P%x}au z4!s->1>aRj1~4ePi7=fjLIPB zl6L=+YIw7jOwnDV(C}mW950q=u=KF@ zKyxqjWUpDW^8`*Yt3dfnu*L17hP#>rFCzQD!ox-|PQue|az8S|O+{$R&-Sb*7&@84 zUdcAaRPMK&s`$3X4v^_4ZSOg|zci}Zrx*hPZTPo>O!M9)U^GsK=!Vl81E$CYT z^V=!1>1i~+(YAgzuSA-e)IIEV5LUk3(n2}zf zQ80K#Q~M1B1r&G;>7(-1Z>Bt&X`FS2?uLr|&eq-;%Xa@2JfH(*IR70H!y!r;^nQZy zl=>FSxLog=(G#rw6S}5#O?^%^3;uW>TlWeTo{K54DWLAR@je{I7GBsa2UTQP;VxVFR zF5BJBUgDnnt?O5>RWb*vRgRKf9yhLOEuv31@k(3JSmI6ZBSQ ziBaZK**S@SZ1({$fgr?&;t=D0aSCqj>a7?zdQOY|&{U zfgBtu9A8_r-(mAKOngTx#R{oS6a+Mz3Av04{fiQ1^~L#F16*oF^K`3TeYI>BqR*DQ zuhT-c82o}YVMR(P2B(mM$wEtI>_;kH5(66)bcex-q!rz#Xy0kDbVjRmFf^IRr4L{Q z%Ne1Z4_6KLF8%064irJyEL}xe1@{46V-`-8!wU-Ph~?VT6aQxB($LLo7_K7i5dp1R z7i8VAD|c7{tg=sya_^U1%)7FS*`u)n7otcNbf?Jmz@ohHt;Tf#3SY zeqJHpz}l3(Z*@#1=eRtl(XD=m<=(Pv;5iJ(0D;Qr#k7p%77>~;6J@&hd=3Q8abm8| zr|is4!SyhqpdarBPHs}h@-y8UZFa@r$Wpne{$MSJAkRf8ps|)HP=0{5$KS$dYrW1) z1o=E7{pM!+I~6u~L1g8`cG^K#w$x{Tdh&S1xj3BhZU9@Qc~t;Qo}_}A!?8k+c+A}n zuUU~X^+QmAu`fLtyQ4Cy{lfwEtI?$g2s*?F6XE!MRdLdt!XFwYRfC6ua}gS#rdOnz8=mE;>OQvKC;^u<+M9O@pqsn^ZPxEL5~qoinxjT5~?+ z7|2GLN^$&CpSH*R-`Oy9g&Vp-x1nqVH{QO&Rj@tX}l@wbWonYGetyfFWB3h0gK2?!D1*Or*%xx z`AgpTZq6{3_&HTf48NDcD0c^!ZBc@C6*?PDxE2@c2!qrsh{V>uErHj8>y+KLfDgT_ z1#Zy!rV?E=V`xcXOGy9Ma+Y1#sXj7$*H4ReQg|%qLy5@1<3_Trf|#Wfl1PZqY65zw zLn<0j5#|HK&cv>42;*EBxF9p3%!*q1S(tWSS9gk2RKmEB_ec#<8h64!9IZ8B>pTS^ zxi2#mv{D-w1baIv5E&crL&<~0V|OOO&*bu8vU<3^CTNs%<>V<0_5)K?WGnnUYe`1B zWoh}moLL4@=_9j;jy?G85zK{TF&Rp|R_S{G9yT-@vwDrp(Hj^}yyf3S?7H>)5w02R z7v7dBR<|c3A>cy(cnk5-tw%*n)J8eU71*b0RV9AZvwe5%oChP}Qfh2TQfj&MzJ{v? z<xEf!dVIpIpq@*?l?8>2qe!ZCpP4+BY~X7Tq4401bqUD?J6D z2_QEfEfuwK3K;5H>JWSbytu$ z)V8->RN;L&|MR|d0q=_h7@E64(nLDac1K7A7B&2^CyqZfr;f*fq4zJd?z@LF7WG<% zJ#2P2ZPLg4QY7B{ZBObWkY8^=Dd<0!a{!-A+V0hqQJDAxGtS4}QtJ?h;WckUu>EDV z5Y!Ru8c)FPM;n%t7)$Ww=^_%}>gLMgINk?=EHlE`0C|%LB0*F(^W^=(c7gKkfyc$z zf)6%0(XxL_`!G6E{)s(2vWC^}(vVJ&b=@WHf#Abf@@VRE98nNK1rRdUJ0Uh6jNo~x zY!Ih{)A%YwZO>inmt6I?e@CMP?(O#1X=dLcK*wKB=zfASMzS|=V#89;u%5WaF|1#> z7=h+-*y&!_lHXMo+)?q9y&2C@U4Y7m1#9;^ECGX}KRTJZ?2UWs4Y>E05<=K=y2;40}Gixn^JZY;vQp9Z_ z*cY2m_QgwaEcao+UGNxydo=#3Z{7V)BmFAEzp?Lel|6ms#NxQtu0*d6q(Bc*544X=kmr!=^0Q-7`6AJIfFpE)X6MJWFM zy!6DwkuuPO22M*JNvlt_ITdf6)2KSx+II^Oh6)sTQ6nTw4ph~R-Y)WSvTG8Zr1mE8ZXDxFWU zh*QLb#v0`gg?8VWq6~=TQGJWLs}^;7vU*A+YqlZ9&Ct%3AG*qpxj08vR@A|o6@Mi_ zi-#_sKfxlV8LL>yPR5nEIv1`7{_j(hM|qmKL25eA@491%s-h~R{#^uj zA^OZlXqPfD9e1cHHR68(l%}e?$(|1{h~!2Ji0=cER&BTsN3-)_}aH~{$(d+t`O>@Yq2}9`Z89xe%xsd_6|wf$z7BW z1KM~&!C23j)R!TfT5wjG8cd$^DS^_QV_@=>q?{-wOz_ymv+3!Vvvna|Z@VHAA4xOGXu5W3 z@P&-7Q@2Nn0rn%4@xbS*1q07y1cv$^>U>I+iHHlQCP9$?Ytrb>4K^^WpqLLR7$P!b~gvm|3tf4SZJc+lIws%XFJhgOx7)eiJ*AuY4< ztE%|Aa~oY~`15BfkJVz=W$!(7y-$Bfs@4VP(*+Xw(c5S72ULv2dEAJ~iGQt#k+s9d zY7%dBm(ADkSk3C)&*wu1fhK>pnx5AIyT7Ci@`cvDrNf&g@-(8Vj;m3Z_0`)8SCg5Y_M}2D!^C6;2a<&O|Kv3h^{UAGPg6 z@C)msw?f$eOl~j80qgFp$>bIk*Ghe{tpK{J{I&!rWYO+o;1>4JS1DY*ib#8>BEmXW za_@`cy8Tut31T5iX*5H{(2T2@4W49d)0D|Epeo-1g&0{`9m>a0ha*dJp;Y$=c8hkb zcQ-m^)OQ;8kJ4H9YTTT&B+=PR$u6+T^ly)lnD{huUiM_(uWl<3xv4=O=V*K8# zDnj%Gq>M*uh}7C-dDUlWoYYB-`Nh!PMEWr&4|0I6nPBIghnDdzah3RxYsr|WN}syF zhkTYhtm32A3i4-u#Qr=jSD)PFWT=(UJU|Ka1(Z$k5Hblp$%2H5B&k^8{>$Y}Hp7m{8| z-66rN2-e>P;O0%dftzEgx>pT#H|a1s`vByJ@Dm+coUuVY_ghDj_Kxs$JAPE-;p#HJ zM}2I-(G8VT8n^p4e*1{0)t~;3ES?k;)@^X?5!pIT&)LpVtWPj0`O3{ zo1C|vr?LI~z$TujP8@9Sx^&^$UDQ`-yn$~u9$+r1gK^^d1=m=Ku-TNnQA|ojVKgA< zFKgfNyQwf-I2v&8ig|l1!3N-x_%j0G48_>N*-$AETKh!5ID2Q_$Lpyk2J=sple|4Wlszx8Qe!L4ApiVfI40FOx;y5C zCKR;EYhs@|npPVo!(J$KT?uPWmgoBE3RbFDY99K@l+9KNMADQ?aw9h=ut^WL??AZf zmB)Oq+M5nWJ0q_V#Y%d6P1!JOUJz7|wWsYe(jm8HzT66gYfF$bBb00lvCqrc6LU$BlPZiIOdTRy z4X>niIN$xK9-}11BZBC~+$k13imPDlTC_KMb8550Yq_)S%2D(1&9|9@Xe;5o%u!ix zRohR;U%U^$*dDhW&K=tykIXmmNTOE@U=tf?VY7o@L$+^WUh_mpF{}3BN5*mR@UD9w za#`pk4*$8{&6S@z-!Sf%_hot$A2eF{N$x=2{qQ8=qO7g{OyPro#3Ijl$rg8`c~!5# zXUs@FFeEe>g$5GBkzQd>zB*JTnDZmA1U!nfG}Szr_ncC!f}EoC<2z<^!QNoYzq}?S zDPu!}6TUYDN~!wQA+xi~4pdGtB_WgV^px=^8=DQgt~s4RCHe#rwxcarmD1IT{(DTAt`sOk@bR~pk9(i*-^Lb#AQKrPLR@z zp9jGewU%+UFHD)P9Fmgl#iw1m{^kthSi@r7Q(p!Q!i%hv^Hl-@LT0_T)sG}T*H?X0 zgYC391j}bS*7%SDhuS)vMeHPDymXPMMrGHX%XwE9(!WdEVDDNrYtrSQ4v&D28j12y zF#w0rhd)K$IeD?vD(kgh)tT84pE=$bR+EY==-4Vb(zz#bGqlUYNhv>VH(`-LLN&9r zTcOFx_)^VdF~QT2+QHiwQYmvZQR$esn9vk9uUI2dIwsMlOS5T$uS5wKHu>t`CmDpS zPeQc1Zhh8U!-v7SZCaq?qO9A-ykoFbj3n|2xrFc0%TE-a&&zt55?%MJ;?v2PUek9< zJ|R*e5H_J&L1bEOz2&*g@AZ9#Yt%u=PH%~@GqCQJYh1}Jnom@yI&h)PBVhd}8C_an zMJ*=u0)rvS*o6znY3_TbGfNw>FT>gQqE2i$IFnn`%+sOIsQ;qDAF{Q3+gTi*>x0ia z*Ji)+3PWvOmNDs0NQ8;r5=uF-yA>%BO_qNn@CxGnt;g5$?yB!w35VI&o#dY$k#;?=}wIW)^-*C(ub$_ooKBRtii zzeGYY9XO2-^n#O{$`%~B^K>h$vv7DN23iSEpW3uyd=2|2O@~?+8Fy4Nt2>TgyZTIu zF3Z1`3UhotW8{$jmUP47lCKJ= zrMOIB1#Xz&tG>A5H|z`q8O@$341*+P(5572-l6KN(}l(d6A#%Y#%%hju3>6seGPBs zllmH_sR^vhxf4u(9$T~7$@I7>RTwphGZ^lnx>^0=99&wWoRW~A@;DE5G+)q~o^vDMu|G;aWn`8;V*DQ~V1=#P8jHc9Oh1TyV?GdLyY0 zJ#6-5u3BRqsBORagJ?QvxmyWp92e2jxT7IKUkUs;CH$Ss6&qKZ-cAX9;r3#Ih0g}} zQAoo!rIEaHl4RJb^hc?1jPe&*O2j^`-LCjJ(I@`z_JWl7onnd;WTK)ngyk>8t$8&r zHf|Jdskoh$A)yMrwNOTK$Sw0YX6BoMkk$JDnfOH-40GnPdREW5INB$6Bj#D#x&>d1 zLK*Hq+}qcv6d!y)cIWk>!bqpG`N)AxdB`XalU?$5aSxcowjSPVTr8Bs@Xby1MPCm3 z{Pmht2vyd?Cc}hT*kJVMi8Y(KKiBTZAVws@AZMWrJ1VD|&8hY#PM1t2@lPk8SVbWN zDuw)plZVdutCL^$gdQG#8Em~z-ZXT+f5+)u8GrG#%V_ILdY7WhyauEdm{${guQbXJ zW!{qt7rpIAOymSsO7~K#NfCKdyrzVAPdZ$ldp+@aP-*onIVDN$EAJ1pIF}p9Q$b5+ zBo9GUl8r{et4rTY_+e8gD(37peKt9PAZT{xkc?BW{Bf(!OSv|~^bJxJ#SYXX5~RE6 zH=lfR$jzOa^N_gCgJDnjG7y?vUMw6$GH7n6rzc`cpd)B|j;p$mX5G#1@n83}k<9!k z6jQbU6$0jNj!*PI@<@PpCWvFF(Y%+O1 zhVn;S%M4|dlkfDI82pA!d())un6l>eHiwtIPmq&M@v}hexk9QIh*kQwM8huV^GVQ_O zSZjVxOBduXhJ~_hrxr(E=TcfnH@|2Rj+J%^$-@z$Ko}Jml;0dA{F>$AE|z#Txi?AK zZdn+mN^3|`;!wkso!?`LvYhqIKxWr>34Bnb$j{isPO2aoRjLb9gu3t({A@o;RyOeE>Z?%^zkA0_j&~Cq3t?$JYmf>u2aip#fGTah4i9$9nQ~bV4Y_j22 ziFp$QQESA$Xy0WcvYPT-cW=71v22WDr>hPWts*JlEo>na%%j{^QZ)JL($JwQH%ZW+ z20PPe%3$>F#RD%VHe{1FNq_#&NxwUtcN2fYxlKAH`0ZJ9;h+m zzvL$j@^}z3CtkKuqrMg0BQsU>5r$P? zt6XA)QP|>b%JGobV7ytu6(61Ojwbk9CwRjPb)Ah#p*T8ON?t;Mjj)5kU&3`s=SXLI zE`ai=wBWoK~xO4ON1K|iHve<`)xXU{lXz@Uy{@r!sPSLI3V&Y%4=pa`R-pS&-^7k zGy17nI;)4!&E076OlFu1kM3L zoTq1rn^&-_kKWUhiFnnD*WWB6OtNRf^F`XWnZ(l_4A&{_2|FfVu3iY6bx)~~o3)>- zh;41c6c&@>sh2`#FP|6bM5cnEZm9?lPrP0wrR&Rp_Q>vUS7yuo@!X)fM%J-bPG%~X zL$ATECobCHeWkLfkD)g%zYe+m{n$7cJFCi9vLnKJS@+}jgr%9JLMLeIahoe094G|M z%g+YgnA$xE^a{enfMraZ7K*HB0ay?Wy&ip!@wAHPqO!=}`M(+KuO2W8qR|Vc7ebr~p8BkYGLE?_6OObbR&~?hd}?MM|Gty@ za=<%6gxh|?-eI~wPHsRgPA!?NMS!-8LN2ARAuNhcm;cGAHaA|DEhIl^@pxNOea{fZ zWDL$hH``~Exy}X~ZMtY1RH~ug++f5eblEGFNJVHBg9FxGxgG}WUsKvMl}F03ZO%6K zCGSBVIZGsT^r(;;mjtzJGrlN)qbtoEv1`o;db*)Qb%O$HP)*bGMWNHvycHcQ~s z{!$?TxrJzs{!qN0x5_>}io;=S)%MgIIwJm@eg z=EEQ!uMxp$$@_-?Gi~!omYCpT)y|+VIms1@xmK?qlf8=Qkgfm||Gflu?X>?EqsZL+ z=V_*gV)JGnUEoFn81m6yV1O~rYN0p7Gb}^O4$|N$Vr~b;$?W2iUD}Uflk0mF$DiM8 zwTT-PNnzT_I4a0yL=;{7Y8JzK*cspGK*c2%Rq*J?UjmyEz( zpVr28D>{yI7i0rGdjW`mdAw{ylJ~D4?H~U%UsXPmKjOLK-nAD*DuFGl(-?b zZ}(l&5z`R?K6O@g7=a+OMyBNB3y9pQT_cyzvKIX}|IPj{-n>>}@ZI<2+`OYYK~M-= zDo~Hk-vf)< z16oDjX}~0rYa*k73hJg24^c~3@*Hal5KdpnZ2&0VKJU&>$<@k0aD&7-?E z1M0@1CO_O3^S*Ahu8DGUu7g&IvqaJH>AxT8z0V*BDNEIq>UU5fuJ$DoL4Hze;Zot4 z&UR@%Ol#(<^`u0QxRYY_yq2@AQB%S(ye&q9Akrrqt$`N8!`W(SSQx^;A_x@I`sC4V zV)f<9l!&@D%|y=5DI-<_yy3NdHO*))3XIPjrv&u08eSt;jQW*iBeX8OnTV}4`&f=} z{7Cq>0ASNXR`I7^UVR@oD3JQO{5-!H^trD05OyPJ4x>vNf8KV>f0^onESH!g$TaBB z7ad)Ykv+UAEyKxVA<+BrUKr!%rpxls1QN-!6p1 z|L+*cel>w~%ODRG>Hcdw_acW|?eVhB;}W@%OaFJ~va>xmWmggY)>?-2RuB2dKvz9= zWY$Azj`{Z*M5Q_h>B&ZG>F4+ZW?%tMQd46tfR+&M`>}8T_3vBpM{qtbhUqC?B@&j1 zrr>>Q4B(cc6L>#d8)5#xvoeG9Ha{{q#Uq?5T2FrThw#=0t?jq71}dp!Rq7VlPZgm> zya#$xuR9e_-F2wBob{aqhb+t=MXmyb%t+pIZW{-{FH$NO{?yOk^A!ME5@?^W*m!SN z7}7Dt<4&WW*IYh+APRCGcYHWh2#yIq0K-T*gs#A7iMa#Ukyx!?*aCb&6j3EmI%tV! z^6xK(8C^T<0Ui4TEI0uQ3rq5hXo-p3Oy6m+{9Hku&A9`u4&45nPMHF0fMgK@4HHC+ z!}%NFdxrtX){`~W-5fc>6Nso*LA&V&E>I|8!IMS+!6lc5pql5HqTJifo&MGn%D9gH z0y!jjxdlw;Cgb316n5vO972)cP+|r=vk@Zz8qwQ~eDB7tDypqt_edvdJ6Udyepl|0`dfa|NWii) zFx5%X?QjKe@%j@OQ90C{;BGe5%x=b5IteZ3N7Y*{0z+l{Wn}6vb@v3@`b#Mo!|cUz z`LXVqsyq4~e+UrDA#7J?_+w+GLUK_jODCutk;3U>TbIyu8Z1+$3_M49zy(56X<-Z3 zz=di3e&P8WJTo~<6nv#P$*T=K^0j(lZ1+IfoOY!izRvGALP!1fN&OQ2Rr<9f(BdV< ziVNtny+%&2a6sYprW!t!DLf-=BzRT#`aUXqk%6qCU8y& zBNK};H~9fvSi+IqliE842Fg`P!j99+^9@Hha&+3;vhLc!B)Rr8BH$-f z2sup7_ayr=Xcf1u&#EtiPK{=V#?AHQV6gVuNQP6ethLt0OV>hk_xvfA8;95Lv&PHO z6VgSe4g+{mzy5ueCw;()i($7bgAYB>7KXHXRu@V z(vxxVSWt5D?>J7CN12bu>;3W3HP8Fi?z-~y7qrk7?@MGZJMI9vAAsKj#r-WyRCMk$ zEIbQ17-e+38HW01PM%Ph9f#?j)1$r{0n~^z==8&iP|_zN&`pMNf14gOW>|W~7>X;p z1ty0&oNDM$=IeVBMND@%398dIgf3W6yWP|r#HxItDHhu(B&Ld?*HC6R$HJ)&^yQwS z_JRsr^vHU5Su$>JN@omrn$1Krn0{yu0VuSkAMZ3`ZjkhoBL_eE<2~eD{ae!L0OX>z zF)5Z3oZ3wn>`BDS838P_bm_%8B3z8J2pyKNtQSzvpBC8w+sxHP7o_{aoyWe0C4lsH z6Si{JdBi}wIi67n77avmLWRED-H4pZSUMLuQ47>!F}AHo!DqfPtt&o>0ySBVI<(Uu z4_m2n9mW^WQl}}1R9)geOV(5i{wMgO3f0rt@>1KA0!gKKp+X~?%Ngez&A_?UvsR;_ zAPLxZt~ef(d-I-=l{6O;$``-;JDpUipo~MZc>>SNFWwMbvt z0tfY{rirdkCtagV_`Cq%30P1;tm`X;@Zh<~qy1NTCoOW%-alG{b#1k(CY=YqqNL7V zEKd|Af^mhQ(60&1M?NILei*b@#YI^1+8^J#lFqrZsL{CsfZoEdq`qRoYn1i(Cp;$}*qN}Q6+ysnWlaW!sEg=&5&Qbo;X9;8? zw9yCGXf6f){)(lAuw3N)0@j2QZ#g0|bueT?P({U0E;>T~OOD83aOCfhIBoW$?pbe~H4N-^)XiC;%1ZB!iKXgC*@smAa zg=cc?&w0&z(+za1-UttV%4*WFoHPFO5g;Srud6RMM`B4^EMtYBH9gz4g<;O2KvWnk zTnc4Ilk{q3MJ6f_C{TA6uqmhmj%4AJSWkW)>`!CH0d6)R*~5aU_#Z*)y<4gp%agIT z8PU%k;8}G3f})zk^C66l*JfNzDnFQ@L#P{(zQc_iXrMb;3;aX+KlrR21>uc1eprIr z@0^tGbEjR@Y0&(RO%!4R8CxZ9y$Ee7dWz`O>*a;FZAT_lux{%vw}J=cBl?9eHd40X z$SOP&j808<4l8K6LTc_Vilx-I^x%OJk=_Y4@)#*K^&8!7cWvmJ5%Hgpa68s2GK8zhG0(uU|E7e|GCnV&L>KUwT9(Z-g zVLzHr3@#i5Z2jh2Cq4M`-4>;`1Mr|q1T8M_(NYAnA`Dcf9Q(fy;-j9w@J7}eJG7^uJ1vZ1Fa#CUP2r+KkZ3N{$RNmWRd2J>e-10h9%fgkPG&Az9SF~wcCW28I)A;!5?vUzm;XL(O)2*0Xmv8+G#1=FfKxMY z`OWFI9?T`leJrdH!3UN-*z?yQh1~|2fw~JozxTCM4WVP$J>!qUU79jMed6{_O=nAi z2cI4>F|;)!8MvqPC7em&hyFh=X;(Td5Xqq6%wUpWzd%k9bnuv40zT1b%1$9dg9dI8 z5RthIY{}SKC6L$(>W=?A6s|mzCWvORw;&ftQ+SuZzh6$!|3@#uDiUuAdmi|1=0f1x z1@pJ44KEC?;BPMEz!2EOl5(_wHd4>*UHa4-JktYauuVGD%-+F;G(deS1l-yWzX;?k z#oa6l=qW6U)tmvUno9U*L@qj6%LrWA)SMt5dkU3a*A(T50CcQrVk`}`eHn(|05Sac zJ5>O=>0h<`2hdTD5Ltk(&4kU2a-!*0Fch`nenVpxXz~k%ZZcCa$7qGF?1|zB^J&8) zr54ON8Zc76gP<-J!f>lUTxF*4!&2P<_WXY9JAHbthSBh` Usn2h#bl>;M1& literal 0 HcmV?d00001 diff --git a/static/img2.png b/static/img2.png new file mode 100644 index 0000000000000000000000000000000000000000..8523e240bdb2aac213dc7a86e68e38b7d434d63c GIT binary patch literal 51833 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 literal 0 HcmV?d00001 diff --git a/tests/blockchain/__init__.py b/tests/blockchain/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/tests/blockchain/contracts/__init__.py b/tests/blockchain/contracts/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/tests/blockchain/contracts/test_deposit.py b/tests/blockchain/contracts/test_deposit.py new file mode 100644 index 00000000..71d9cf47 --- /dev/null +++ b/tests/blockchain/contracts/test_deposit.py @@ -0,0 +1,15 @@ +import pytest + +from tests.utils.contract_utils import check_contract +from tests.utils.regrex import HASH_REGREX, check_value_re + + +@pytest.mark.integration +def test_deposit_contract_call(deposit_contract, caplog): + check_contract( + deposit_contract, + [ + ('get_deposit_root', None, lambda response: check_value_re(HASH_REGREX, '0x' + response.hex())), + ], + caplog, + ) diff --git a/tests/blockchain/contracts/test_deposit_security_module.py b/tests/blockchain/contracts/test_deposit_security_module.py new file mode 100644 index 00000000..e9c40f70 --- /dev/null +++ b/tests/blockchain/contracts/test_deposit_security_module.py @@ -0,0 +1,21 @@ +import pytest + +from tests.utils.contract_utils import check_contract +from tests.utils.regrex import HASH_REGREX, check_value_re, check_value_type, ADDRESS_REGREX + + +@pytest.mark.integration +def test_deposit_security_module_call(deposit_security_module, caplog): + check_contract( + deposit_security_module, + [ + ('get_guardian_quorum', None, lambda response: check_value_type(response, int)), + ('get_guardians', None, lambda response: check_value_type(response, list) and + [check_value_re(ADDRESS_REGREX, g) for g in response]), + ('get_attest_message_prefix', None, lambda response: check_value_type(response, bytes)), + ('can_deposit', (1,), lambda response: check_value_type(response, bool)), + ('get_pause_message_prefix', None, lambda response: check_value_type(response, bytes)), + ('get_pause_intent_validity_period_blocks', None, lambda response: check_value_type(response, int)), + ], + caplog, + ) diff --git a/tests/blockchain/contracts/test_lido.py b/tests/blockchain/contracts/test_lido.py new file mode 100644 index 00000000..8ab24a08 --- /dev/null +++ b/tests/blockchain/contracts/test_lido.py @@ -0,0 +1,12 @@ +from tests.utils.contract_utils import check_contract +from tests.utils.regrex import check_value_type + + +def test_lido_contract_call(lido_contract, caplog): + check_contract( + lido_contract, + [ + ('get_depositable_ether', None, lambda response: check_value_type(response, int)), + ], + caplog, + ) diff --git a/tests/blockchain/contracts/test_lido_locator.py b/tests/blockchain/contracts/test_lido_locator.py new file mode 100644 index 00000000..f25efae0 --- /dev/null +++ b/tests/blockchain/contracts/test_lido_locator.py @@ -0,0 +1,14 @@ +from tests.utils.contract_utils import check_contract +from tests.utils.regrex import check_value_re, ADDRESS_REGREX + + +def test_lido_locator_call(lido_locator, caplog): + check_contract( + lido_locator, + [ + ('lido', None, lambda response: check_value_re(ADDRESS_REGREX, response)), + ('deposit_security_module', None, lambda response: check_value_re(ADDRESS_REGREX, response)), + ('staking_router', None, lambda response: check_value_re(ADDRESS_REGREX, response)), + ], + caplog, + ) diff --git a/tests/blockchain/contracts/test_staking_router.py b/tests/blockchain/contracts/test_staking_router.py new file mode 100644 index 00000000..509cd3bc --- /dev/null +++ b/tests/blockchain/contracts/test_staking_router.py @@ -0,0 +1,21 @@ +import pytest + +from tests.utils.contract_utils import check_contract +from tests.utils.regrex import check_value_type + + +@pytest.mark.integration +def test_staking_router_call(staking_router, caplog): + check_contract( + staking_router, + [ + ('get_max_deposits_count', (1, 100*10**18), lambda response: check_value_type(response, int)), + ('get_staking_module_ids', None, lambda response: check_value_type(response, list) and + [check_value_type(x, int) for x in response]), + ('is_staking_module_active', (1,), lambda response: check_value_type(response, bool)), + ('is_staking_module_deposits_paused', (1,), lambda response: check_value_type(response, bool)), + ('get_staking_module_nonce', (1,), lambda response: check_value_type(response, int)), + ('get_staking_module_deposits_count', (1, 100*10**18), lambda response: check_value_type(response, int)), + ], + caplog, + ) diff --git a/tests/blockchain/deposit_strategy/__init__.py b/tests/blockchain/deposit_strategy/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/tests/blockchain/deposit_strategy/test_curated_module.py b/tests/blockchain/deposit_strategy/test_curated_module.py new file mode 100644 index 00000000..98fddd7f --- /dev/null +++ b/tests/blockchain/deposit_strategy/test_curated_module.py @@ -0,0 +1,108 @@ +from unittest.mock import Mock + +import pytest + +import variables +from blockchain.deposit_strategy.curated_module import CuratedModuleDepositStrategy + + +MODULE_ID = 1337 + + +@pytest.fixture +def cmds(web3_lido_unit): + yield CuratedModuleDepositStrategy(web3_lido_unit, module_id=MODULE_ID) + + +@pytest.mark.unit +def test_is_deposited_keys_amount_ok(cmds): + cmds._get_possible_deposits_amount = Mock(return_value=100) + + cmds._calculate_recommended_gas_based_on_deposit_amount = Mock(return_value=30) + cmds._get_pending_base_fee = Mock(return_value=20) + + assert cmds.is_deposited_keys_amount_ok() + + cmds._get_pending_base_fee = Mock(return_value=50) + assert not cmds.is_deposited_keys_amount_ok() + + +@pytest.mark.unit +def test_get_possible_deposits_amount(cmds): + depositable_eth = 100 + possible_deposits = depositable_eth // 32 + + cmds.w3.lido.lido.get_depositable_ether = Mock(return_value=depositable_eth) + cmds.w3.lido.staking_router.get_staking_module_deposits_count = Mock(return_value=possible_deposits) + + assert cmds._get_possible_deposits_amount() == possible_deposits + cmds.w3.lido.staking_router.get_staking_module_deposits_count.assert_called_once_with( + MODULE_ID, + depositable_eth, + ) + + +@pytest.mark.unit +@pytest.mark.parametrize( + "deposits,expected_range", + [(1, (0, 20)), (5, (20, 100)), (10, (50, 1000)), (100, (1000, 1000000))], +) +def test_calculate_recommended_gas_based_on_deposit_amount(cmds, deposits, expected_range): + assert expected_range[0] * 10**9 <= cmds._calculate_recommended_gas_based_on_deposit_amount(deposits) <= expected_range[1] * 10**9 + + +@pytest.mark.unit +def test_get_recommended_gas_fee(cmds): + cmds._fetch_gas_fee_history = Mock(return_value=list(range(11))) + variables.GAS_FEE_PERCENTILE_DAYS_HISTORY_1 = 1 + variables.GAS_FEE_PERCENTILE_1 = 50 + + assert cmds._get_recommended_gas_fee() == 5 + + variables.GAS_FEE_PERCENTILE_1 = 30 + assert cmds._get_recommended_gas_fee() == 3 + + +@pytest.mark.unit +def test_is_gas_price_ok(cmds): + cmds._get_pending_base_fee = Mock(return_value=10) + cmds._get_recommended_gas_fee = Mock(return_value=20) + variables.MAX_GAS_FEE = 300 + + cmds.w3.lido.lido.get_depositable_ether = Mock(return_value=100) + variables.MAX_BUFFERED_ETHERS = 200 + assert cmds.is_gas_price_ok() + + cmds._get_recommended_gas_fee = Mock(return_value=5) + assert not cmds.is_gas_price_ok() + + cmds.w3.lido.lido.get_depositable_ether = Mock(return_value=300) + assert cmds.is_gas_price_ok() + + cmds._get_pending_base_fee = Mock(return_value=400) + assert not cmds.is_gas_price_ok() + + +@pytest.fixture() +def cmds_integration(web3_lido_integration): + yield CuratedModuleDepositStrategy(web3_lido_integration, module_id=MODULE_ID) + + +@pytest.mark.integration +def test_get_pending_base_fee(cmds_integration): + pending_gas = cmds_integration._get_pending_base_fee() + assert 1 <= pending_gas <= 1000 * 10**9 + + +@pytest.mark.integration +def test_fetch_gas_fee_history(cmds_integration): + history = cmds_integration._fetch_gas_fee_history(1) + assert isinstance(history, list) + assert len(history) == 1 * 24 * 60 * 60 / 12 + + cmds_integration.w3.eth.fee_history = Mock() + cmds_integration._fetch_gas_fee_history(1) + assert len(history) == 1 * 24 * 60 * 60 / 12 + cmds_integration.w3.eth.fee_history.assert_not_called() + + diff --git a/tests/blockchain/web3_extentions/__init__.py b/tests/blockchain/web3_extentions/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/tests/blockchain/web3_extentions/transaction.py b/tests/blockchain/web3_extentions/transaction.py new file mode 100644 index 00000000..f12acfee --- /dev/null +++ b/tests/blockchain/web3_extentions/transaction.py @@ -0,0 +1,37 @@ +import logging +from unittest.mock import Mock + +import pytest + +import variables +from blockchain.web3_extentions.transaction import TransactionUtils + + +@pytest.mark.unit +def test_get_priority_fee(web3_lido_unit): + tu = TransactionUtils(web3_lido_unit) + tu.web3.eth.fee_history = Mock(return_value={'reward': [[50]]}) + + assert tu._get_priority_fee(0, 10, 30) == 30 + assert tu._get_priority_fee(0, 10, 70) == 50 + assert tu._get_priority_fee(0, 60, 70) == 60 + + +@pytest.mark.unit +def test_protector_no_account(web3_lido_unit, caplog): + caplog.set_level(logging.INFO) + + tu = TransactionUtils(web3_lido_unit) + variables.CREATE_TRANSACTIONS = False + tu.send(None, False, 10) + assert 'Account was not provided. Sending transaction skipped.' in caplog.messages[-1] + + +@pytest.mark.unit +def test_protector_create_tx(web3_lido_unit, set_integration_account, caplog): + caplog.set_level(logging.INFO) + + tu = TransactionUtils(web3_lido_unit) + variables.CREATE_TRANSACTIONS = False + tu.send(None, False, 10) + assert 'Dry mode activated. Sending transaction skipped.' in caplog.messages[-1] diff --git a/tests/bots/__init__.py b/tests/bots/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/tests/bots/test_depositor.py b/tests/bots/test_depositor.py new file mode 100644 index 00000000..40b62e22 --- /dev/null +++ b/tests/bots/test_depositor.py @@ -0,0 +1,337 @@ +import logging +from unittest.mock import Mock + +import pytest + +import variables +from bots.depositor import DepositorBot +from tests.conftest import DSM_OWNER + + +COUNCIL_ADDRESS_1 = '0x70997970C51812dc3A010C7d01b50e0d17dc79C8' +COUNCIL_PK_1 = '0x59c6995e998f97a5a0044966f0945389dc9e86dae88c7a8412f4603b6b78690d' + +COUNCIL_ADDRESS_2 = '0x3C44CdDdB6a900fa2b585dd299e03d12FA4293BC' +COUNCIL_PK_2 = '0x5de4111afa1a4b94908f83103eb1f1706367c2e68ca870fc3fb9a804cdab365a' + + +@pytest.fixture +def depositor_bot(web3_lido_unit, block_data): + variables.MESSAGE_TRANSPORTS = '' + web3_lido_unit.lido.staking_router.get_staking_module_ids = Mock(return_value=[1, 2]) + web3_lido_unit.eth.get_block = Mock(return_value=block_data) + yield DepositorBot(web3_lido_unit) + + +@pytest.fixture +def deposit_message(): + yield { + "type": "deposit", + "depositRoot": "0x64dcf70a7ad7fc6b1a55db6b08b86e9d80736259916fcaef98f4710f0bac687b", + "nonce": 12, + "blockNumber": 10, + "blockHash": "0x432e218931e9b94f0702ecb1b0d084c467a86b384767ce38c4fe164463070532", + "guardianAddress": "0x43464Fe06c18848a2E2e913194D64c1970f4326a", + "guardianIndex": 8, + "stakingModuleId": 1, + "signature": { + "r": "0xc2235eb6983f80d19158f807d5d90d93abec52034ea7184bbf164ba211f00116", + "s": "0x75354ffc9fb6e7a4b4c01c622661a1d0382ace8c4ff8024626e39ac1a6a613d0", + "_vs": "0x75354ffc9fb6e7a4b4c01c622661a1d0382ace8c4ff8024626e39ac1a6a613d0", + "recoveryParam": 0, + "v": 27 + }, + "app": { + "version": "1.0.3", + "name": "lido-council-daemon" + } + } + + +@pytest.mark.unit +def test_depositor_check_all_modules(depositor_bot, block_data): + depositor_bot._deposit_to_module = Mock(return_value=False) + depositor_bot.execute(block_data) + + assert depositor_bot._deposit_to_module.call_count == 2 + + +@pytest.mark.unit +def test_depositor_one_module_deposited(depositor_bot, block_data): + depositor_bot._deposit_to_module = Mock(return_value=True) + depositor_bot.execute(block_data) + + assert depositor_bot._deposit_to_module.call_count == 2 + + +@pytest.mark.unit +def test_check_balance_dry(depositor_bot, caplog): + caplog.set_level(logging.INFO) + depositor_bot._check_balance() + assert 'No account provided. Dry mode.' in caplog.messages[-1] + + +@pytest.mark.unit +def test_check_balance(depositor_bot, caplog, set_account): + caplog.set_level(logging.INFO) + + depositor_bot.w3.eth.get_balance = Mock(return_value=10*10**18) + depositor_bot._check_balance() + assert 'Check account balance' in caplog.messages[-1] + + +@pytest.mark.unit +@pytest.mark.parametrize( + "active,paused,expected", + [ + (True, True, False), + (True, False, True), + (False, True, False), + (False, False, False), + ], +) +def test_depositor_check_module_status(depositor_bot, active, paused, expected): + depositor_bot.w3.lido.staking_router.is_staking_module_active = Mock(return_value=active) + depositor_bot.w3.lido.staking_router.is_staking_module_deposits_paused = Mock(return_value=paused) + assert depositor_bot._check_module_status(1) == expected + + +@pytest.mark.unit +@pytest.mark.parametrize( + "is_depositable,quorum,is_gas_price_ok,is_deposited_keys_amount_ok", + [ + pytest.param(True, True, True, True, marks=pytest.mark.xfail), + (False, True, True, True), + (True, False, True, True), + (True, True, False, True), + (True, True, True, False), + ], +) +def test_depositor_deposit_to_module(depositor_bot, is_depositable, quorum, is_gas_price_ok, is_deposited_keys_amount_ok): + depositor_bot._check_module_status = Mock(return_value=is_depositable) + depositor_bot._get_quorum = Mock(return_value=quorum) + + strategy = Mock() + strategy.is_gas_price_ok = Mock(return_value=is_gas_price_ok) + strategy.is_deposited_keys_amount_ok = Mock(return_value=is_deposited_keys_amount_ok) + + depositor_bot._get_module_strategy = Mock(return_value=strategy) + depositor_bot._build_and_send_deposit_tx = Mock(return_value=True) + + assert not depositor_bot._deposit_to_module(1) + + +@pytest.fixture +def setup_deposit_message(depositor_bot, block_data): + depositor_bot.w3.eth.get_block = Mock(return_value=block_data) + depositor_bot.w3.lido.deposit_contract.get_deposit_root = Mock( + return_value=b'd\xdc\xf7\nz\xd7\xfck\x1aU\xdbk\x08\xb8n\x9d\x80sbY\x91o\xca\xef\x98\xf4q\x0f\x0b\xach{' + ) + depositor_bot.w3.lido.staking_router.get_staking_module_nonce = Mock(return_value=12) + depositor_bot.w3.lido.deposit_security_module.get_guardians = Mock(return_value=['0x43464Fe06c18848a2E2e913194D64c1970f4326a']) + + +@pytest.mark.unit +def test_depositor_message_actualizer(setup_deposit_message, depositor_bot, deposit_message, block_data): + message_filter = depositor_bot._get_message_actualize_filter(1) + assert list(filter(message_filter, [deposit_message])) + + +@pytest.mark.unit +def test_depositor_message_actualizer_not_guardian(setup_deposit_message, depositor_bot, deposit_message, block_data): + depositor_bot.w3.lido.deposit_security_module.get_guardians = Mock(return_value=['0x13464Fe06c18848a2E2e913194D64c1970f4326a']) + message_filter = depositor_bot._get_message_actualize_filter(1) + assert not list(filter(message_filter, [deposit_message])) + + +@pytest.mark.unit +def test_depositor_message_actualizer_outdated(setup_deposit_message, depositor_bot, deposit_message, block_data): + deposit_message['blockNumber'] = block_data['number'] - 250 + message_filter = depositor_bot._get_message_actualize_filter(1) + assert not list(filter(message_filter, [deposit_message])) + + deposit_message['blockNumber'] = block_data['number'] - 150 + assert list(filter(message_filter, [deposit_message])) + + +@pytest.mark.unit +def test_depositor_message_actualizer_nonce(setup_deposit_message, depositor_bot, deposit_message, block_data): + deposit_message['nonce'] += 10 + message_filter = depositor_bot._get_message_actualize_filter(1) + assert not list(filter(message_filter, [deposit_message])) + + deposit_message['blockNumber'] = block_data['number'] + 100 + assert list(filter(message_filter, [deposit_message])) + + +@pytest.mark.unit +def test_depositor_message_actualizer_root(setup_deposit_message, depositor_bot, deposit_message, block_data): + deposit_message['depositRoot'] += '0x55dcf70a7ad7fc6b1a55db6b08b86e9d80736259916fcaef98f4710f0bac687b' + message_filter = depositor_bot._get_message_actualize_filter(1) + assert not list(filter(message_filter, [deposit_message])) + + deposit_message['blockNumber'] = block_data['number'] + 100 + assert list(filter(message_filter, [deposit_message])) + + +@pytest.mark.unit +def test_prepare_signs_for_deposit(deposit_message, depositor_bot): + second_council = { + "guardianAddress": "0x13464Fe06c18848a2E2e913194D64c1970f4326a", + "signature": { + "r": "0xc2235eb6983f80d19158f807d5d90d93abec52034ea7184bbf164ba211f00116", + "s": "0x75354ffc9fb6e7a4b4c01c622661a1d0382ace8c4ff8024626e39ac1a6a613d0", + "_vs": "0x75354ffc9fb6e7a4b4c01c622661a1d0382ace8c4ff8024626e39ac1a6a613d0", + "recoveryParam": 0, + "v": 27 + }, + } + + expected = (('0xc2235eb6983f80d19158f807d5d90d93abec52034ea7184bbf164ba211f00116', '0x75354ffc9fb6e7a4b4c01c622661a1d0382ace8c4ff8024626e39ac1a6a613d0'), ('0xc2235eb6983f80d19158f807d5d90d93abec52034ea7184bbf164ba211f00116', '0x75354ffc9fb6e7a4b4c01c622661a1d0382ace8c4ff8024626e39ac1a6a613d0')) + + signs = depositor_bot._prepare_signs_for_deposit([second_council, deposit_message]) + assert signs == expected + + signs = depositor_bot._prepare_signs_for_deposit([deposit_message, second_council]) + assert signs == expected + + +@pytest.mark.unit +def test_send_deposit_tx(depositor_bot): + depositor_bot.w3.transaction.check = Mock(return_value=False) + params = [ + 1, b'', b'', 1, 1, b'', tuple(), + ] + assert not depositor_bot._send_deposit_tx(*params) + + depositor_bot.w3.transaction.check = Mock(return_value=True) + depositor_bot.w3.transaction.send = Mock(return_value=True) + assert depositor_bot._send_deposit_tx(*params) + assert depositor_bot._flashbots_works + + depositor_bot.w3.transaction.send = Mock(return_value=False) + assert not depositor_bot._send_deposit_tx(*params) + assert not depositor_bot._flashbots_works + + assert not depositor_bot._send_deposit_tx(*params) + assert depositor_bot._flashbots_works + + +@pytest.mark.unit +def test_get_quorum(depositor_bot, setup_deposit_message): + deposit_messages = [ + { + "blockHash": "0x432e218931e9b94f0702ecb1b0d084c467a86b384767ce38c4fe164463070532", + "guardianAddress": "0x43464Fe06c18848a2E2e913194D64c1970f4326a", + }, + { + "blockHash": "0x432e218931e9b94f0702ecb1b0d084c467a86b384767ce38c4fe164463070532", + "guardianAddress": "0x43464Fe06c18848a2E2e913194D64c1970f4326a", + }, + { + "blockHash": "0x232e218931e9b94f0702ecb1b0d084c467a86b384767ce38c4fe164463070532", + "guardianAddress": "0x43464Fe06c18848a2E2e913194D64c1970f4326a", + }, + { + "blockHash": "0x232e218931e9b94f0702ecb1b0d084c467a86b384767ce38c4fe164463070532", + "guardianAddress": "0x33464Fe06c18848a2E2e913194D64c1970f4326a", + } + ] + + depositor_bot.w3.lido.deposit_security_module.get_guardian_quorum = Mock(return_value=2) + depositor_bot.message_storage.get_messages = Mock(return_value=deposit_messages[:2]) + assert not depositor_bot._get_quorum(1) + + depositor_bot.message_storage.get_messages = Mock(return_value=deposit_messages[:4]) + quorum = depositor_bot._get_quorum(1) + assert quorum + assert deposit_messages[2] in quorum + assert deposit_messages[3] in quorum + + +def get_deposit_message(web3, account_address, pk, module_id): + latest = web3.eth.get_block('latest') + + prefix = web3.lido.deposit_security_module.get_attest_message_prefix() + block_number = latest.number + deposit_root = '0x' + web3.lido.deposit_contract.get_deposit_root().hex() + staking_module_id = int(1) + nonce = web3.lido.staking_router.get_staking_module_nonce(module_id) + + # | ATTEST_MESSAGE_PREFIX | blockNumber | blockHash | depositRoot | stakingModuleId | nonce | + + msg_hash = web3.solidityKeccak( + ['bytes32', 'uint256', 'bytes32', 'bytes32', 'uint256', 'uint256'], + [prefix, block_number, latest.hash.hex(), deposit_root, staking_module_id, nonce], + ) + signed = web3.eth.account.signHash(msg_hash, private_key=pk) + + msg = { + "type": "deposit", + "depositRoot": deposit_root, + "nonce": nonce, + "blockNumber": latest.number, + "blockHash": latest.hash.hex(), + "guardianAddress": account_address, + "guardianIndex": 8, + "stakingModuleId": staking_module_id, + "signature": { + "r": signed.r.to_bytes(32, 'big').hex(), + "s": signed.s.to_bytes(32, 'big').hex(), + "v": signed.v, + }, + } + + return msg + + +@pytest.fixture +def add_accounts_to_guardian(web3_lido_integration, set_integration_account): + web3_lido_integration.provider.make_request('hardhat_impersonateAccount', [DSM_OWNER]) + quorum_size = web3_lido_integration.lido.deposit_security_module.get_guardian_quorum() + + try: + # If guardian removal failed + web3_lido_integration.lido.deposit_security_module.functions.addGuardian(COUNCIL_ADDRESS_1, 2).transact({'from': DSM_OWNER}) + web3_lido_integration.lido.deposit_security_module.functions.addGuardian(COUNCIL_ADDRESS_2, 2).transact({'from': DSM_OWNER}) + except: + pass + + yield web3_lido_integration + + web3_lido_integration.lido.deposit_security_module.functions.removeGuardian(COUNCIL_ADDRESS_1, quorum_size).transact({'from': DSM_OWNER}) + web3_lido_integration.lido.deposit_security_module.functions.removeGuardian(COUNCIL_ADDRESS_2, quorum_size).transact({'from': DSM_OWNER}) + + +@pytest.mark.integration +def test_depositor_bot(web3_lido_integration, add_accounts_to_guardian, caplog): + max_deposits = web3_lido_integration.lido.deposit_security_module.functions.getMaxDeposits().call() + web3_lido_integration.lido.deposit_security_module.functions.setMaxDeposits(2).transact({'from': DSM_OWNER}) + + latest = web3_lido_integration.eth.get_block('latest') + + module_id = 1 + + old_module_nonce = web3_lido_integration.lido.staking_router.get_staking_module_nonce(module_id) + + deposit_message_1 = get_deposit_message(web3_lido_integration, COUNCIL_ADDRESS_1, COUNCIL_PK_1, module_id) + deposit_message_2 = get_deposit_message(web3_lido_integration, COUNCIL_ADDRESS_2, COUNCIL_PK_2, module_id) + deposit_message_3 = get_deposit_message(web3_lido_integration, COUNCIL_ADDRESS_2, COUNCIL_PK_2, module_id) + + db = DepositorBot(web3_lido_integration) + db.message_storage.messages = [deposit_message_2, deposit_message_3] + db.execute(latest) + + assert web3_lido_integration.lido.staking_router.get_staking_module_nonce(module_id) == old_module_nonce + + web3_lido_integration.eth.send_transaction({ + "from": web3_lido_integration.eth.accounts[0], + "to": web3_lido_integration.lido.lido.address, + "value": 2000 * 10**18 + }) + + db.message_storage.messages = [deposit_message_1, deposit_message_2, deposit_message_3] + db._get_module_strategy = Mock(return_value=Mock(return_value=True)) + assert db.execute(latest) + # assert web3_lido_integration.lido.staking_router.get_staking_module_nonce(module_id) == old_module_nonce + 1 + web3_lido_integration.lido.deposit_security_module.functions.setMaxDeposits(max_deposits).transact({'from': DSM_OWNER}) diff --git a/tests/bots/test_executor.py b/tests/bots/test_executor.py new file mode 100644 index 00000000..80f71f8a --- /dev/null +++ b/tests/bots/test_executor.py @@ -0,0 +1,88 @@ +import time +from unittest.mock import Mock + +import pytest +from web3.types import BlockData + +from blockchain.executer import Executor +from metrics import healthcheck_pulse +from utils.timeout import TimeoutManagerError + + +def pure_func(block: BlockData): + return block.number + + +def pure_func_false(block: BlockData): + return False + + +def pure_func_sleep(block: BlockData): + time.sleep(8) + return True + + +@pytest.fixture +def remove_metrics(): + healthcheck_pulse.pulse = Mock() + + +@pytest.mark.integration +def test_timeout(web3_lido_integration, remove_metrics): + e = Executor( + web3_lido_integration, + pure_func_sleep, + 1, + 4, + ) + + with pytest.raises(TimeoutManagerError): + e.execute_as_daemon() + + +@pytest.mark.integration +def test_blocks_diff_call(web3_lido_integration, remove_metrics): + e = Executor( + web3_lido_integration, + pure_func, + 1, + 4, + ) + + block_1 = e._wait_for_new_block_and_execute() + block_2 = e._wait_for_new_block_and_execute() + block_3 = e._wait_for_new_block_and_execute() + + assert block_1 + 2 == block_2 + 1 == block_3 + + +@pytest.mark.integration +def test_blocks_true_result(web3_lido_integration, remove_metrics): + e = Executor( + web3_lido_integration, + pure_func, + 2, + 4, + ) + + block_1 = e._wait_for_new_block_and_execute() + block_2 = e._wait_for_new_block_and_execute() + + assert block_1 + 2 == block_2 + + +@pytest.mark.integration +def test_blocks_false_result(web3_lido_integration, remove_metrics): + e = Executor( + web3_lido_integration, + pure_func_false, + 2, + 4, + ) + + e._wait_for_new_block_and_execute() + block_1 = e._next_expected_block + e._wait_for_new_block_and_execute() + block_2 = e._next_expected_block + + assert block_1 + 1 == block_2 diff --git a/tests/bots/test_pauser.py b/tests/bots/test_pauser.py new file mode 100644 index 00000000..b831e68b --- /dev/null +++ b/tests/bots/test_pauser.py @@ -0,0 +1,167 @@ +from unittest.mock import Mock + +import pytest +from eth_abi import encode +from eth_account.messages import encode_defunct, encode_structured_data +from eth_hash.backends.pycryptodome import keccak256 + +import variables +from bots.pause import PauserBot +from tests.conftest import DSM_OWNER + +# WARNING: These accounts, and their private keys, are publicly known. +COUNCIL_ADDRESS = '0x70997970C51812dc3A010C7d01b50e0d17dc79C8' +COUNCIL_PK = '0x59c6995e998f97a5a0044966f0945389dc9e86dae88c7a8412f4603b6b78690d' + + +@pytest.fixture +def pause_bot(web3_lido_unit, block_data): + web3_lido_unit.eth.get_block = Mock(return_value=block_data) + variables.MESSAGE_TRANSPORTS = '' + web3_lido_unit.lido.deposit_security_module.get_pause_intent_validity_period_blocks = Mock(return_value=10) + yield PauserBot(web3_lido_unit) + + +@pytest.fixture +def pause_message(): + yield { + "blockHash": "0xe41c0212516a899c455203e833903c802338daa3048bc637b623f6fba0a1685c", + "blockNumber": 10, + "guardianAddress": "0x3dc4cF780F2599B528F37dedB34449Fb65Ef7d4A", + "guardianIndex": 0, + "stakingModuleId": 1, + "signature": { + "_vs": "0xd4933925f5f97a9632b4b1bc621a1c2771d58eaf6eee27dcf915eac8af010537", + "r": "0xbaa668505cd496caaf7117dd074338197200175057909ab73a04463656bdb0fa", + "recoveryParam": 1, + "s": "0x54933925f5f97a9632b4b1bc621a1c2771d58eaf6eee27dcf915eac8af010537", + "v": 28 + }, + "type": "pause" + } + + +@pytest.fixture +def add_account_to_guardian(web3_lido_integration, set_integration_account): + web3_lido_integration.provider.make_request('hardhat_impersonateAccount', [DSM_OWNER]) + quorum_size = web3_lido_integration.lido.deposit_security_module.get_guardian_quorum() + + try: + # If guardian removal failed + web3_lido_integration.lido.deposit_security_module.functions.addGuardian(COUNCIL_ADDRESS, quorum_size).transact( + {'from': DSM_OWNER}, + ) + except: + pass + + yield COUNCIL_ADDRESS + + web3_lido_integration.lido.deposit_security_module.functions.removeGuardian(COUNCIL_ADDRESS, quorum_size).transact( + {'from': DSM_OWNER}, + ) + + +def get_pause_message(web3): + latest = web3.eth.get_block('latest') + + prefix = web3.lido.deposit_security_module.get_pause_message_prefix() + + block_number = latest.number + staking_module_id = int(1) + + msg_hash = web3.solidityKeccak(['bytes32', 'uint256', 'uint256'], [prefix, block_number, staking_module_id]) + signed = web3.eth.account.signHash(msg_hash, private_key=COUNCIL_PK) + + return { + "blockHash": latest.hash.hex(), + "blockNumber": latest.number, + "guardianAddress": variables.ACCOUNT.address, + "stakingModuleId": 1, + "signature": { + "r": hex(signed.r), + "s": hex(signed.s), + "v": signed.v, + }, + "type": "pause" + } + + +@pytest.mark.unit +def test_pause_bot_without_messages(pause_bot, block_data): + pause_bot.message_storage.get_messages = Mock(return_value=[]) + pause_bot._send_pause_message = Mock() + pause_bot.execute(block_data) + pause_bot._send_pause_message.assert_not_called() + + +@pytest.mark.unit +@pytest.mark.parametrize( + "block_range", + [4, pytest.param(6, marks=pytest.mark.xfail)], +) +def test_pause_bot_outdate_messages(pause_bot, block_data, pause_message, block_range): + pause_message['blockNumber'] = 5 + pause_bot.message_storage.messages = [pause_message] + pause_bot.w3.lido.deposit_security_module.get_pause_intent_validity_period_blocks = Mock(return_value=block_range) + + pause_bot._send_pause_message = Mock() + pause_bot.execute(block_data) + pause_bot._send_pause_message.assert_not_called() + + +@pytest.mark.unit +@pytest.mark.parametrize( + "active_module", + [False, pytest.param(True, marks=pytest.mark.xfail)], +) +def test_pause_bot_clean_messages(pause_bot, block_data, pause_message, active_module): + pause_bot.message_storage.messages = [pause_message] + pause_bot.w3.lido.staking_router.is_staking_module_active = Mock(return_value=active_module) + + pause_bot.execute(block_data) + assert len(pause_bot.message_storage.messages) == 0 + + +@pytest.mark.unit +def test_pause_message_filtered_by_module_id(pause_bot, block_data, pause_message): + new_message = pause_message.copy() + new_message['stakingModuleId'] = 2 + + pause_bot.message_storage.messages = [pause_message, pause_message, new_message] + pause_bot.w3.lido.staking_router.is_staking_module_active = lambda module_id: not module_id % 2 + + pause_bot.execute(block_data) + + # Only module_id=1 messages filtered + assert len(pause_bot.message_storage.messages) == 1 + + +@pytest.mark.integration +def test_pauser_bot(web3_lido_integration, add_account_to_guardian): + latest = web3_lido_integration.eth.get_block('latest') + + pm = get_pause_message(web3_lido_integration) + + pb = PauserBot(web3_lido_integration) + pb.execute(latest) + + # Check no pause + assert not web3_lido_integration.lido.staking_router.is_staking_module_deposits_paused(1) + + # Add pause message + pb.message_storage.messages = [pm] + pb.execute(latest) + + # Check there is pause message and module paused + assert web3_lido_integration.lido.staking_router.is_staking_module_deposits_paused(1) + assert len(pb.message_storage.messages) == 1 + + pb.execute(latest) + # Check pause message cleaned + assert not pb.message_storage.messages + + # Cleanup + web3_lido_integration.lido.deposit_security_module.functions.unpauseDeposits(pm['stakingModuleId']).transact( + {'from': DSM_OWNER} + ) + assert not web3_lido_integration.lido.staking_router.is_staking_module_deposits_paused(1) diff --git a/tests/bots/test_timeout.py b/tests/bots/test_timeout.py new file mode 100644 index 00000000..879590a4 --- /dev/null +++ b/tests/bots/test_timeout.py @@ -0,0 +1,18 @@ +import time + +import pytest + +from utils.timeout import TimeoutManager, TimeoutManagerError + + +@pytest.mark.unit +def test_timeout(): + with pytest.raises(TimeoutManagerError): + simple_timeout(4, 8) + + simple_timeout(8, 4) + + +def simple_timeout(expect_time: int, sleep_time: int): + with TimeoutManager(expect_time): + time.sleep(sleep_time) diff --git a/tests/conftest.py b/tests/conftest.py new file mode 100644 index 00000000..61682483 --- /dev/null +++ b/tests/conftest.py @@ -0,0 +1,48 @@ +import pytest +from eth_account import Account +from eth_typing import BlockNumber +from web3.types import BlockData, Wei + +from tests.fixtures.provider import * +from tests.fixtures.contracts import * + + +# https://goerli.etherscan.io/address/0xe57025E250275cA56f92d76660DEcfc490C7E79A#readContract#F12 +DSM_OWNER = '0xa5F1d7D49F581136Cf6e58B32cBE9a2039C48bA1' + + +@pytest.fixture +def block_data(): + yield BlockData(number=BlockNumber(10), baseFeePerGas=Wei(100)) + + +@pytest.fixture +def set_account(): + variables.ACCOUNT = Account.from_key('0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80') + yield variables.ACCOUNT + variables.ACCOUNT = None + + +@pytest.fixture +def set_integration_account(): + # Basic Hardhat account + # Address 0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266 + variables.ACCOUNT = Account.from_key('0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80') + variables.CREATE_TRANSACTIONS = True + yield + variables.CREATE_TRANSACTIONS = False + variables.ACCOUNT = None + + +@pytest.fixture() +def ping_message(monkeypatch): + yield { + "type": "ping", + "blockNumber": 13726495, + "guardianIndex": 0, + "guardianAddress": "0x3dc4cF780F2599B528F37dedB34449Fb65Ef7d4A", + "app": { + "version": "1.1.1", + "name": "lido-council-daemon" + } + } diff --git a/tests/cryptography/__init__.py b/tests/cryptography/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/tests/test_signature_check.py b/tests/cryptography/test_verify_signature.py similarity index 94% rename from tests/test_signature_check.py rename to tests/cryptography/test_verify_signature.py index 96d5b38d..43e2eb99 100644 --- a/tests/test_signature_check.py +++ b/tests/cryptography/test_verify_signature.py @@ -1,5 +1,5 @@ from cryptography.verify_signature import compute_vs, verify_message_with_signature -from fixtures.signature_fixtures import ( +from tests.fixtures.signature_fixtures import ( deposit_messages, deposit_prefix, ) diff --git a/tests/fixtures/common_fixtures.py b/tests/fixtures/common_fixtures.py deleted file mode 100644 index 00d740e9..00000000 --- a/tests/fixtures/common_fixtures.py +++ /dev/null @@ -1,36 +0,0 @@ -COMMON_FIXTURES = { - 'eth_chainId': ( - ((), {'jsonrpc': '2.0', 'id': 11, 'result': '0x1'}), - ('default', {'jsonrpc': '2.0', 'id': 11, 'result': '0x1'}), - ), - 'eth_getFilterChanges': ( - ('default', {'jsonrpc': '2.0', 'id': 1, 'result': []}), - ), - 'eth_getBlockByNumber': ( - (('latest', False), {'jsonrpc': '2.0', 'id': 15, 'result': {'baseFeePerGas': '0xffbf193d7', 'difficulty': '0x29aa4945316813', 'extraData': '0x486976656f6e2065752d6865617679', 'gasLimit': '0x1c9c380', 'gasUsed': '0x65fe32', 'hash': '0xf7b1887b32ad3b9346f907947e2dffb5012de2b7cb7b6b84b950356237944d0c', 'logsBloom': '0x092000900100008810000000805c080000000000000008000001606044086000080101400080020080005883004901909220824588002c900088840040212040880004004021410a8822000810002020800100088240050104000c03802844101a00002012004482014408221000189000008840081064082000003404288c0800820120104030000044008a0821000241000401910080180021084201100401071880289001a00202000080080810401000001021802010183c1000100c2000210003032200081028010d20005600400000024203991230848a000201026008a131202a0400090000419000010008a00000a880305102502000090000001220', 'miner': '0x1ad91ee08f21be3de0ba2ba6918e714da6b45836', 'mixHash': '0x98630b099b638f63942ba8ff6b65b8a7b26dd38c6e125528104aeff50c01d02a', 'nonce': '0x0000030ab4a3b4d8', 'number': '0xd17320', 'parentHash': '0xc2ea9185d4821a13da4a2975c85673eff34944e92c0b5d3516a3b4482ac2ab58', 'receiptsRoot': '0x3f30031d0a235a05e183de7416a42a2bdef7cbcbabd581282cfc8b2e239b9abe', 'sha3Uncles': '0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347', 'size': '0x63ff', 'stateRoot': '0x22b47b4d4370336d5a0ffb7423b1a40257b23fdcfe28a3ec45a21e60590e1dd8', 'timestamp': '0x61a88d67', 'totalDifficulty': '0x78d36e1e439ded9742d', 'transactions': [], 'transactionsRoot': '0xfa0b8a5325ea94fd117575c1aedf498ccaccdca636334f938b3b3184426f749c', 'uncles': []}}), - (('pending', False), {'jsonrpc': '2.0', 'id': 0, 'result': {'baseFeePerGas': '0x4a1533d7f', 'difficulty': '0x29be4af025287c', 'extraData': '0xd883010a0c846765746888676f312e31372e33856c696e7578', 'gasLimit': '0x1c95111', 'gasUsed': '0x1b68674', 'hash': None, 'logsBloom': '0x57aa6b0f5ba66e9fbecbbec7849fcff758cddfdfbeb53b3ee5e9bb7d7f7bdfcf79fe7df2bdccb9b3d3e9dff8fcffd7d5ba2bf9139feffdb5f73ffe3bb23ef82d26fa5fa7af73bf2ce9afb63efaff5f7f6ef6387464cfb554b5f7b7ff96e35f753a41fbbf7fb5de9abf76d7d87dbefff6fffaf271ffbf37cf769f5d37b4affeed7f12b75b57fef817f3d72fbd0ff366cc5575ad3ddf361f2dcbae546fe9bfedd6bb5babcb6eee27f9eefd4fd3fdb94f29fb7eca707fffa7f355f3973e1efdbe93efebfbf7cda9997baf3bd9af57fbfd55ffeeff585f0efd7f779fbfab78de60fd8cfe3debfef5c3bdf9d53f9f97adff87c3e3cdc9f1f6f3f9255ffa56e8db7bef', 'miner': None, 'mixHash': '0x0000000000000000000000000000000000000000000000000000000000000000', 'nonce': None, 'number': '0xd18e3e', 'parentHash': '0x01802ffbfec338704593f416bb06005afb88c2a343d5a405d6d3f5359422a41c', 'receiptsRoot': '0xa67cb02111fe0430601215c03aa86a2a95a032487c1644f7561e7d7ef58a4677', 'sha3Uncles': '0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347', 'size': '0x19b97', 'stateRoot': '0xdbffeb5d663c710239c0b8bf57b562848e8bd6d55117ad29cbb9fe930ac0e11a', 'timestamp': '0x61aa03ce', 'totalDifficulty': None, 'transactions': [], 'transactionsRoot': '0xaeade20445251ded37c5efce433e9a526683d340da591774ac14acb4ca7a11d3', 'uncles': []}}), - ), - 'eth_getCode': ( - (['0xae7ab96520DE3A18E5e111B5EaAb095312D7fE84', 'latest'], {'jsonrpc': '2.0', 'id': 14, 'result': '0x60806040526004361061006c5763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416634555d5c9811461012b57806348a0c8dd146101525780635c60da1b1461017b57806380afdea8146101b9578063d4aae0c4146101ce575b6127107f665fd576fbbe6f247aff98f5c94a561e3f71ec2d3c988d56f12d342396c50cea6000825a10156100e15760003411361583541616156100dc576040513381523460208201527f15eeaa57c7bd188c1388020bcadc2c436ec60d647d36ef5b9eb3c742217ddee1604082a1005b600080fd5b6100e96101e3565b9050610126816000368080601f016020809104026020016040519081016040528093929190818152602001838380828437506101fa945050505050565b505050005b34801561013757600080fd5b5061014061023b565b60408051918252519081900360200190f35b34801561015e57600080fd5b50610167610240565b604080519115158252519081900360200190f35b34801561018757600080fd5b506101906101e3565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b3480156101c557600080fd5b5061014061026b565b3480156101da57600080fd5b50610190610296565b60006101f56101f061026b565b6102c1565b905090565b600061020583610395565b151561021057600080fd5b612710905060008083516020850186855a03f43d604051816000823e828015610237578282f35b8282fd5b600290565b60006101f57f665fd576fbbe6f247aff98f5c94a561e3f71ec2d3c988d56f12d342396c50cea6103cf565b60006101f57fd625496217aa6a3453eecb9c3489dc5a53e6c67b444329ea2b2cbc9ff547639b6103cf565b60006101f57f4172f0f7d2289153072b0a6ca36959e0cbe2efc3afe50fc81636caa96338137b6103cf565b60006102cb610296565b604080517fbe00bbd80000000000000000000000000000000000000000000000000000000081527ff1f3eb40f5bc1ad1344716ced8b8a0431d840b5783aea1fd01786bc26f35ac0f600482015260248101859052905173ffffffffffffffffffffffffffffffffffffffff929092169163be00bbd8916044808201926020929091908290030181600087803b15801561036357600080fd5b505af1158015610377573d6000803e3d6000fd5b505050506040513d602081101561038d57600080fd5b505192915050565b60008073ffffffffffffffffffffffffffffffffffffffff831615156103be57600091506103c9565b823b90506000811191505b50919050565b5490565b5490565b9055565b90555600a165627a7a72305820976bd9d6f6ad7a0d339ea3b373704842cdb3d9e15e7463676c04c1fa6ffb56410029'}), - (['0x55032650b14df07b85bF18A3a3eC8E0Af2e028d5', 'latest'], {'jsonrpc': '2.0', 'id': 15, 'result': '0x60806040526004361061006c5763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416634555d5c9811461012b57806348a0c8dd146101525780635c60da1b1461017b57806380afdea8146101b9578063d4aae0c4146101ce575b6127107f665fd576fbbe6f247aff98f5c94a561e3f71ec2d3c988d56f12d342396c50cea6000825a10156100e15760003411361583541616156100dc576040513381523460208201527f15eeaa57c7bd188c1388020bcadc2c436ec60d647d36ef5b9eb3c742217ddee1604082a1005b600080fd5b6100e96101e3565b9050610126816000368080601f016020809104026020016040519081016040528093929190818152602001838380828437506101fa945050505050565b505050005b34801561013757600080fd5b5061014061023b565b60408051918252519081900360200190f35b34801561015e57600080fd5b50610167610240565b604080519115158252519081900360200190f35b34801561018757600080fd5b506101906101e3565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b3480156101c557600080fd5b5061014061026b565b3480156101da57600080fd5b50610190610296565b60006101f56101f061026b565b6102c1565b905090565b600061020583610395565b151561021057600080fd5b612710905060008083516020850186855a03f43d604051816000823e828015610237578282f35b8282fd5b600290565b60006101f57f665fd576fbbe6f247aff98f5c94a561e3f71ec2d3c988d56f12d342396c50cea6103cf565b60006101f57fd625496217aa6a3453eecb9c3489dc5a53e6c67b444329ea2b2cbc9ff547639b6103cf565b60006101f57f4172f0f7d2289153072b0a6ca36959e0cbe2efc3afe50fc81636caa96338137b6103cf565b60006102cb610296565b604080517fbe00bbd80000000000000000000000000000000000000000000000000000000081527ff1f3eb40f5bc1ad1344716ced8b8a0431d840b5783aea1fd01786bc26f35ac0f600482015260248101859052905173ffffffffffffffffffffffffffffffffffffffff929092169163be00bbd8916044808201926020929091908290030181600087803b15801561036357600080fd5b505af1158015610377573d6000803e3d6000fd5b505050506040513d602081101561038d57600080fd5b505192915050565b60008073ffffffffffffffffffffffffffffffffffffffff831615156103be57600091506103c9565b823b90506000811191505b50919050565b5490565b5490565b9055565b90555600a165627a7a72305820976bd9d6f6ad7a0d339ea3b373704842cdb3d9e15e7463676c04c1fa6ffb56410029'}), - (['0x710B3303fB508a84F10793c1106e32bE873C24cd', 'latest'], {'jsonrpc': '2.0', 'id': 0, 'result': '0x608060405234801561001057600080fd5b50600436106101c35760003560e01c8063893d20e8116100f9578063ba6252b211610097578063c8f712d511610071578063c8f712d5146103cd578063e78a5875146103e0578063eccd085f146103e8578063f47610e6146103fb57600080fd5b8063ba6252b21461038d578063c6dda2c31461039e578063c7062e98146103c557600080fd5b8063a50833d6116100d3578063a50833d614610340578063a749013e14610367578063b187bd261461037a578063b7b7a4081461038557600080fd5b8063893d20e8146102f55780638b21f170146103065780638d71a6f41461032d57600080fd5b8063251e3a211161016657806362272f281161014057806362272f281461029357806363d8882a1461029b5780636b96736b146102a35780637e923312146102e257600080fd5b8063251e3a21146102655780633ab54bc31461026d5780633e6f6d681461028057600080fd5b80630c68ba21116101a25780630c68ba2114610209578063111e53131461022c57806313af40351461023f57806320d580d11461025257600080fd5b8062fed902146101c8578063062b662e146101dd5780630665f04b146101f4575b600080fd5b6101db6101d6366004611559565b61040e565b005b6007545b6040519081526020015b60405180910390f35b6101fc61044d565b6040516101eb9190611572565b61021c6102173660046115db565b6104af565b60405190151581526020016101eb565b6101db61023a3660046115fd565b6104d1565b6101db61024d3660046115db565b610511565b6101db6102603660046116e1565b610544565b6002546101e1565b6101db61027b3660046117aa565b6108cf565b6101db61028e366004611559565b610a4e565b6009546101e1565b6101db610a81565b6102ca7f00000000000000000000000000000000219ab540356cbb839cbe05303d7705fa81565b6040516001600160a01b0390911681526020016101eb565b6101db6102f0366004611559565b610aec565b6004546001600160a01b03166102ca565b6102ca7f000000000000000000000000ae7ab96520de3a18e5e111b5eaab095312d7fe8481565b6101db61033b3660046115fd565b610b1f565b6101e17fd225b544f236c424d88abf1dd1a58e20df146bb6c02d916809b75d7a72bccb1081565b6101db6103753660046115db565b610cd7565b60085460ff1661021c565b6001546101e1565b6000546001600160a01b03166102ca565b6101e17f1670745baff8f26a6c2e451bc4eedecf0009a8271dcf5d224e8ab295f22b086381565b6003546101e1565b6101db6103db3660046117d7565b610d0a565b61021c610d7c565b6101db6103f6366004611559565b610db3565b6101e16104093660046115db565b610de6565b6004546001600160a01b031633146104415760405162461bcd60e51b815260040161043890611875565b60405180910390fd5b61044a81610df1565b50565b606060058054806020026020016040519081016040528092919081815260200182805480156104a557602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610487575b5050505050905090565b6001600160a01b03811660009081526006602052604081205415155b92915050565b6004546001600160a01b031633146104fb5760405162461bcd60e51b815260040161043890611875565b61050482610e2d565b61050d81610f13565b5050565b6004546001600160a01b0316331461053b5760405162461bcd60e51b815260040161043890611875565b61044a81610f48565b60007f00000000000000000000000000000000219ab540356cbb839cbe05303d7705fa6001600160a01b031663c5f2892f6040518163ffffffff1660e01b815260040160206040518083038186803b15801561059f57600080fd5b505afa1580156105b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105d7919061189b565b905080861461061f5760405162461bcd60e51b815260206004820152601460248201527319195c1bdcda5d081c9bdbdd0818da185b99d95960621b6044820152606401610438565b60085460ff16156106685760405162461bcd60e51b815260206004820152601360248201527219195c1bdcda5d1cc8185c99481c185d5cd959606a1b6044820152606401610438565b600060075411801561067d5750600754825110155b6106be5760405162461bcd60e51b81526020600482015260126024820152716e6f20677561726469616e2071756f72756d60701b6044820152606401610438565b6002546009546106ce90436118ca565b10156107145760405162461bcd60e51b8152602060048201526015602482015274746f6f206672657175656e74206465706f7369747360581b6044820152606401610438565b82158015906107235750828440145b6107675760405162461bcd60e51b81526020600482015260156024820152740eadccaf0e0cac6e8cac840c4d8dec6d640d0c2e6d605b1b6044820152606401610438565b60008060009054906101000a90046001600160a01b03166001600160a01b031663d07442f16040518163ffffffff1660e01b815260040160206040518083038186803b1580156107b657600080fd5b505afa1580156107ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107ee919061189b565b90508086146108375760405162461bcd60e51b81526020600482015260156024820152741ad95e5cc81bdc081a5b99195e0818da185b99d959605a1b6044820152606401610438565b6108448787878787611012565b6001546040516390adc83b60e01b815260048101919091527f000000000000000000000000ae7ab96520de3a18e5e111b5eaab095312d7fe846001600160a01b0316906390adc83b90602401600060405180830381600087803b1580156108aa57600080fd5b505af11580156108be573d6000803e3d6000fd5b505043600955505050505050505050565b60085460ff16156108de575050565b3360006108ea826111a1565b90508060001914156109ac57604080517fd225b544f236c424d88abf1dd1a58e20df146bb6c02d916809b75d7a72bccb10602082015290810185905260009060600160405160208183030381529060405280519060200120905061095781856000015186602001516111c6565b9250610962836111a1565b91508160001914156109aa5760405162461bcd60e51b8152602060048201526011602482015270696e76616c6964207369676e617475726560781b6044820152606401610438565b505b6003546109b985436118ca565b11156109fe5760405162461bcd60e51b81526020600482015260146024820152731c185d5cd9481a5b9d195b9d08195e1c1a5c995960621b6044820152606401610438565b6008805460ff191660011790556040516001600160a01b03831681527feb225a736fbfee3f85ccb72bdf84ff0396ab358b7970e2cc351ab3e3fd92358d906020015b60405180910390a150505050565b6004546001600160a01b03163314610a785760405162461bcd60e51b815260040161043890611875565b61044a81610f13565b6004546001600160a01b03163314610aab5760405162461bcd60e51b815260040161043890611875565b60085460ff1615610aea576008805460ff191690556040517f823084e804e36d8971e8b86749b6b0ace7b9f87ed272bef910c1e72d123eeb4890600090a15b565b6004546001600160a01b03163314610b165760405162461bcd60e51b815260040161043890611875565b61044a816111f0565b6004546001600160a01b03163314610b495760405162461bcd60e51b815260040161043890611875565b6001600160a01b03821660009081526006602052604090205480610ba05760405162461bcd60e51b815260206004820152600e60248201526d3737ba10309033bab0b93234b0b760911b6044820152606401610438565b60055480821115610bb357610bb36118e1565b808214610c495760006005610bc96001846118ca565b81548110610bd957610bd96118f7565b6000918252602090912001546001600160a01b03169050806005610bfe6001866118ca565b81548110610c0e57610c0e6118f7565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559290911681526006909152604090208290555b6001600160a01b0384166000908152600660205260408120556005805480610c7357610c7361190d565b600082815260209020810160001990810180546001600160a01b0319169055019055610c9e83610f13565b6040516001600160a01b03851681527fb8107d0c6b40be480ce3172ee66ba6d64b71f6b1685a851340036e6e2e3e3c5290602001610a40565b6004546001600160a01b03163314610d015760405162461bcd60e51b815260040161043890611875565b61044a816112a5565b6004546001600160a01b03163314610d345760405162461bcd60e51b815260040161043890611875565b60005b8251811015610d7257610d62838281518110610d5557610d556118f7565b6020026020010151610e2d565b610d6b81611923565b9050610d37565b5061050d81610f13565b60085460009060ff16158015610d9457506000600754115b8015610dae5750600254600954610dab90436118ca565b10155b905090565b6004546001600160a01b03163314610ddd5760405162461bcd60e51b815260040161043890611875565b61044a816112f3565b60006104cb826111a1565b60018190556040518181527f4d72502b63cfe737b98b225a53708fe347cf8274baed31e0c4e4941b758da992906020015b60405180910390a150565b6001600160a01b03811660009081526006602052604090205415610e875760405162461bcd60e51b81526020600482015260116024820152706475706c6963617465206164647265737360781b6044820152606401610438565b600580546001810182557f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db00180546001600160a01b0319166001600160a01b038416908117909155905460008281526006602090815260409182902092909255519182527f038596bb31e2e7d3d9f184d4c98b310103f6d7f5830e5eec32bffe6f1728f9699101610e22565b60078190556040518181527f70d7432f2ec830b36e5b8c45176a8079968714429c4be85665c06ec1b8fde4bb90602001610e22565b6001600160a01b038116610fc45760405162461bcd60e51b815260206004820152603c60248201527f696e76616c69642076616c756520666f72206f776e65723a206d75737420626560448201527f20646966666572656e742066726f6d207a65726f2061646472657373000000006064820152608401610438565b600480546001600160a01b0319166001600160a01b0383169081179091556040519081527fa2ea9883a321a3e97b8266c2b078bfeec6d50c711ed71f874a90d500ae2eaf3690602001610e22565b604080517f1670745baff8f26a6c2e451bc4eedecf0009a8271dcf5d224e8ab295f22b08636020820152908101869052606081018590526080810184905260a0810183905260009060c0016040516020818303038152906040528051906020012090506000805b83518110156111975760006110c98486848151811061109a5761109a6118f7565b6020026020010151600001518785815181106110b8576110b86118f7565b6020026020010151602001516111c6565b90506110ec816001600160a01b0316600090815260066020526040902054151590565b61112c5760405162461bcd60e51b8152602060048201526011602482015270696e76616c6964207369676e617475726560781b6044820152606401610438565b826001600160a01b0316816001600160a01b0316116111855760405162461bcd60e51b81526020600482015260156024820152741cda59db985d1d5c995cc81b9bdd081cdbdc9d1959605a1b6044820152606401610438565b915061119081611923565b9050611079565b5050505050505050565b6001600160a01b0381166000908152600660205260408120546104cb9060019061193e565b60006001600160ff1b03821660ff83901c601b016111e6868287856113b0565b9695505050505050565b600081116112705760405162461bcd60e51b815260206004820152604160248201527f696e76616c69642076616c756520666f72206d696e4465706f736974426c6f6360448201527f6b44697374616e63653a206d7573742062652067726561746572207468656e206064820152600360fc1b608482015260a401610438565b60028190556040518181527fdb69cbc4aa6648b506b7854c26807bfd811c27feaf97ac8847e3a66356cace1490602001610e22565b600080546001600160a01b0319166001600160a01b0383169081179091556040519081527f7f40d0cbed36e9d36ffe92f223f1f44635a84ad83db42f8596e4885984b608a290602001610e22565b6000811161137b5760405162461bcd60e51b815260206004820152604960248201527f696e76616c69642076616c756520666f72207061757365496e74656e7456616c60448201527f6964697479506572696f64426c6f636b733a206d75737420626520677265617460648201526806572207468656e20360bc1b608482015260a401610438565b60038190556040518181527f8120886d27fee35672e5d5a482d6c858105aebb26caf12178b8c0034fa88c2ba90602001610e22565b60007f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a082111561142d5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610438565b8360ff16601b148061144257508360ff16601c145b6114995760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b6064820152608401610438565b6040805160008082526020820180845288905260ff871692820192909252606081018590526080810184905260019060a0016020604051602081039080840390855afa1580156114ed573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166115505760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610438565b95945050505050565b60006020828403121561156b57600080fd5b5035919050565b6020808252825182820181905260009190848201906040850190845b818110156115b35783516001600160a01b03168352928401929184019160010161158e565b50909695505050505050565b80356001600160a01b03811681146115d657600080fd5b919050565b6000602082840312156115ed57600080fd5b6115f6826115bf565b9392505050565b6000806040838503121561161057600080fd5b611619836115bf565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561166657611666611627565b604052919050565b600067ffffffffffffffff82111561168857611688611627565b5060051b60200190565b6000604082840312156116a457600080fd5b6040516040810181811067ffffffffffffffff821117156116c7576116c7611627565b604052823581526020928301359281019290925250919050565b600080600080600060a086880312156116f957600080fd5b853594506020808701359450604080880135945060608801359350608088013567ffffffffffffffff81111561172e57600080fd5b8801601f81018a1361173f57600080fd5b803561175261174d8261166e565b61163d565b81815260069190911b8201840190848101908c83111561177157600080fd5b928501925b82841015611797576117888d85611692565b82529284019290850190611776565b8096505050505050509295509295909350565b600080606083850312156117bd57600080fd5b823591506117ce8460208501611692565b90509250929050565b600080604083850312156117ea57600080fd5b823567ffffffffffffffff81111561180157600080fd5b8301601f8101851361181257600080fd5b8035602061182261174d8361166e565b82815260059290921b8301810191818101908884111561184157600080fd5b938201935b8385101561186657611857856115bf565b82529382019390820190611846565b98969091013596505050505050565b6020808252600c908201526b3737ba1030b71037bbb732b960a11b604082015260600190565b6000602082840312156118ad57600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b6000828210156118dc576118dc6118b4565b500390565b634e487b7160e01b600052600160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052603160045260246000fd5b6000600019821415611937576119376118b4565b5060010190565b60008083128015600160ff1b85018412161561195c5761195c6118b4565b6001600160ff1b0384018313811615611977576119776118b4565b5050039056fea2646970667358221220ad75fe8f6a607bdd29fc8a5e8b920609f7d6a7ecdb6c2096676458daf24bfbe764736f6c63430008090033'}), - (['0x00000000219ab540356cBB839Cbe05303d7705Fa', 'latest'], {'jsonrpc': '2.0', 'id': 0, 'result': '0x60806040526004361061003f5760003560e01c806301ffc9a71461004457806322895118146100a4578063621fd130146101ba578063c5f2892f14610244575b600080fd5b34801561005057600080fd5b506100906004803603602081101561006757600080fd5b50357fffffffff000000000000000000000000000000000000000000000000000000001661026b565b604080519115158252519081900360200190f35b6101b8600480360360808110156100ba57600080fd5b8101906020810181356401000000008111156100d557600080fd5b8201836020820111156100e757600080fd5b8035906020019184600183028401116401000000008311171561010957600080fd5b91939092909160208101903564010000000081111561012757600080fd5b82018360208201111561013957600080fd5b8035906020019184600183028401116401000000008311171561015b57600080fd5b91939092909160208101903564010000000081111561017957600080fd5b82018360208201111561018b57600080fd5b803590602001918460018302840111640100000000831117156101ad57600080fd5b919350915035610304565b005b3480156101c657600080fd5b506101cf6110b5565b6040805160208082528351818301528351919283929083019185019080838360005b838110156102095781810151838201526020016101f1565b50505050905090810190601f1680156102365780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561025057600080fd5b506102596110c7565b60408051918252519081900360200190f35b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a70000000000000000000000000000000000000000000000000000000014806102fe57507fffffffff0000000000000000000000000000000000000000000000000000000082167f8564090700000000000000000000000000000000000000000000000000000000145b92915050565b6030861461035d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806118056026913960400191505060405180910390fd5b602084146103b6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603681526020018061179c6036913960400191505060405180910390fd5b6060821461040f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260298152602001806118786029913960400191505060405180910390fd5b670de0b6b3a7640000341015610470576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806118526026913960400191505060405180910390fd5b633b9aca003406156104cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260338152602001806117d26033913960400191505060405180910390fd5b633b9aca00340467ffffffffffffffff811115610535576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602781526020018061182b6027913960400191505060405180910390fd5b6060610540826114ba565b90507f649bbc62d0e31342afea4e5cd82d4049e7e1ee912fc0889aa790803be39038c589898989858a8a6105756020546114ba565b6040805160a0808252810189905290819060208201908201606083016080840160c085018e8e80828437600083820152601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01690910187810386528c815260200190508c8c808284376000838201819052601f9091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01690920188810386528c5181528c51602091820193918e019250908190849084905b83811015610648578181015183820152602001610630565b50505050905090810190601f1680156106755780820380516001836020036101000a031916815260200191505b5086810383528881526020018989808284376000838201819052601f9091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169092018881038452895181528951602091820193918b019250908190849084905b838110156106ef5781810151838201526020016106d7565b50505050905090810190601f16801561071c5780820380516001836020036101000a031916815260200191505b509d505050505050505050505050505060405180910390a1600060028a8a600060801b604051602001808484808284377fffffffffffffffffffffffffffffffff0000000000000000000000000000000090941691909301908152604080517ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0818403018152601090920190819052815191955093508392506020850191508083835b602083106107fc57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920191602091820191016107bf565b51815160209384036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01801990921691161790526040519190930194509192505080830381855afa158015610859573d6000803e3d6000fd5b5050506040513d602081101561086e57600080fd5b5051905060006002806108846040848a8c6116fe565b6040516020018083838082843780830192505050925050506040516020818303038152906040526040518082805190602001908083835b602083106108f857805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920191602091820191016108bb565b51815160209384036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01801990921691161790526040519190930194509192505080830381855afa158015610955573d6000803e3d6000fd5b5050506040513d602081101561096a57600080fd5b5051600261097b896040818d6116fe565b60405160009060200180848480828437919091019283525050604080518083038152602092830191829052805190945090925082918401908083835b602083106109f457805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920191602091820191016109b7565b51815160209384036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01801990921691161790526040519190930194509192505080830381855afa158015610a51573d6000803e3d6000fd5b5050506040513d6020811015610a6657600080fd5b5051604080516020818101949094528082019290925280518083038201815260609092019081905281519192909182918401908083835b60208310610ada57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101610a9d565b51815160209384036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01801990921691161790526040519190930194509192505080830381855afa158015610b37573d6000803e3d6000fd5b5050506040513d6020811015610b4c57600080fd5b50516040805160208101858152929350600092600292839287928f928f92018383808284378083019250505093505050506040516020818303038152906040526040518082805190602001908083835b60208310610bd957805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101610b9c565b51815160209384036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01801990921691161790526040519190930194509192505080830381855afa158015610c36573d6000803e3d6000fd5b5050506040513d6020811015610c4b57600080fd5b50516040518651600291889160009188916020918201918291908601908083835b60208310610ca957805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101610c6c565b6001836020036101000a0380198251168184511680821785525050505050509050018367ffffffffffffffff191667ffffffffffffffff1916815260180182815260200193505050506040516020818303038152906040526040518082805190602001908083835b60208310610d4e57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101610d11565b51815160209384036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01801990921691161790526040519190930194509192505080830381855afa158015610dab573d6000803e3d6000fd5b5050506040513d6020811015610dc057600080fd5b5051604080516020818101949094528082019290925280518083038201815260609092019081905281519192909182918401908083835b60208310610e3457805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101610df7565b51815160209384036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01801990921691161790526040519190930194509192505080830381855afa158015610e91573d6000803e3d6000fd5b5050506040513d6020811015610ea657600080fd5b50519050858114610f02576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260548152602001806117486054913960600191505060405180910390fd5b60205463ffffffff11610f60576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806117276021913960400191505060405180910390fd5b602080546001019081905560005b60208110156110a9578160011660011415610fa0578260008260208110610f9157fe5b0155506110ac95505050505050565b600260008260208110610faf57fe5b01548460405160200180838152602001828152602001925050506040516020818303038152906040526040518082805190602001908083835b6020831061102557805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101610fe8565b51815160209384036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01801990921691161790526040519190930194509192505080830381855afa158015611082573d6000803e3d6000fd5b5050506040513d602081101561109757600080fd5b50519250600282049150600101610f6e565b50fe5b50505050505050565b60606110c26020546114ba565b905090565b6020546000908190815b60208110156112f05781600116600114156111e6576002600082602081106110f557fe5b01548460405160200180838152602001828152602001925050506040516020818303038152906040526040518082805190602001908083835b6020831061116b57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909201916020918201910161112e565b51815160209384036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01801990921691161790526040519190930194509192505080830381855afa1580156111c8573d6000803e3d6000fd5b5050506040513d60208110156111dd57600080fd5b505192506112e2565b600283602183602081106111f657fe5b015460405160200180838152602001828152602001925050506040516020818303038152906040526040518082805190602001908083835b6020831061126b57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909201916020918201910161122e565b51815160209384036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01801990921691161790526040519190930194509192505080830381855afa1580156112c8573d6000803e3d6000fd5b5050506040513d60208110156112dd57600080fd5b505192505b6002820491506001016110d1565b506002826112ff6020546114ba565b600060401b6040516020018084815260200183805190602001908083835b6020831061135a57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909201916020918201910161131d565b51815160209384036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01801990921691161790527fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000095909516920191825250604080518083037ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8018152601890920190819052815191955093508392850191508083835b6020831061143f57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101611402565b51815160209384036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01801990921691161790526040519190930194509192505080830381855afa15801561149c573d6000803e3d6000fd5b5050506040513d60208110156114b157600080fd5b50519250505090565b60408051600880825281830190925260609160208201818036833701905050905060c082901b8060071a60f81b826000815181106114f457fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508060061a60f81b8260018151811061153757fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508060051a60f81b8260028151811061157a57fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508060041a60f81b826003815181106115bd57fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508060031a60f81b8260048151811061160057fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508060021a60f81b8260058151811061164357fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508060011a60f81b8260068151811061168657fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508060001a60f81b826007815181106116c957fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535050919050565b6000808585111561170d578182fd5b83861115611719578182fd5b505082019391909203915056fe4465706f736974436f6e74726163743a206d65726b6c6520747265652066756c6c4465706f736974436f6e74726163743a207265636f6e7374727563746564204465706f7369744461746120646f6573206e6f74206d6174636820737570706c696564206465706f7369745f646174615f726f6f744465706f736974436f6e74726163743a20696e76616c6964207769746864726177616c5f63726564656e7469616c73206c656e6774684465706f736974436f6e74726163743a206465706f7369742076616c7565206e6f74206d756c7469706c65206f6620677765694465706f736974436f6e74726163743a20696e76616c6964207075626b6579206c656e6774684465706f736974436f6e74726163743a206465706f7369742076616c756520746f6f20686967684465706f736974436f6e74726163743a206465706f7369742076616c756520746f6f206c6f774465706f736974436f6e74726163743a20696e76616c6964207369676e6174757265206c656e677468a2646970667358221220dceca8706b29e917dacf25fceef95acac8d90d765ac926663ce4096195952b6164736f6c634300060b0033'}), - - ), - 'eth_maxPriorityFeePerGas': ( - ((), {'jsonrpc': '2.0', 'id': 14, 'result': '0x3b9aca00'}), - ), - 'eth_getBlockByHash': ( - (['0xf7b1887b32ad3b9346f907947e2dffb5012de2b7cb7b6b84b950356237944d0c', False], {'jsonrpc': '2.0', 'id': 0, 'result': {'baseFeePerGas': '0xffbf193d7', 'difficulty': '0x29aa4945316813', 'extraData': '0x486976656f6e2065752d6865617679', 'gasLimit': '0x1c9c380', 'gasUsed': '0x65fe32', 'hash': '0xf7b1887b32ad3b9346f907947e2dffb5012de2b7cb7b6b84b950356237944d0c', 'logsBloom': '0x092000900100008810000000805c080000000000000008000001606044086000080101400080020080005883004901909220824588002c900088840040212040880004004021410a8822000810002020800100088240050104000c03802844101a00002012004482014408221000189000008840081064082000003404288c0800820120104030000044008a0821000241000401910080180021084201100401071880289001a00202000080080810401000001021802010183c1000100c2000210003032200081028010d20005600400000024203991230848a000201026008a131202a0400090000419000010008a00000a880305102502000090000001220', 'miner': '0x1ad91ee08f21be3de0ba2ba6918e714da6b45836', 'mixHash': '0x98630b099b638f63942ba8ff6b65b8a7b26dd38c6e125528104aeff50c01d02a', 'nonce': '0x0000030ab4a3b4d8', 'number': '0xd17320', 'parentHash': '0xc2ea9185d4821a13da4a2975c85673eff34944e92c0b5d3516a3b4482ac2ab58', 'receiptsRoot': '0x3f30031d0a235a05e183de7416a42a2bdef7cbcbabd581282cfc8b2e239b9abe', 'sha3Uncles': '0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347', 'size': '0x63ff', 'stateRoot': '0x22b47b4d4370336d5a0ffb7423b1a40257b23fdcfe28a3ec45a21e60590e1dd8', 'timestamp': '0x61a88d67', 'totalDifficulty': '0x78d36e1e439ded9742d', 'transactions': ['0x65af93227a93216f5f27c5015f6f9396b90e4167be8e9372592c3b9650729c79', '0x0b8654b18d570962dfb3be131f294fe07ba5672c8e3648aec621c8ed51d59eb0', '0x4e5cdd826e957db5b1052a7a5d2cf993247ce6d17ea130b182ccaeebef6094e0', '0x35dcf51285cfc36f5fb4c0fd416f2d3bcc15d1480cf8a55c61efb9b695421355', '0xec4dbb6f8897b7d9f4c6cc59817f426e2efb6117fb9b60f669be676c0b808f30', '0x5784b40994e35ce5187655c613bb8270ba3b2a57c3b1536c7cc38c38c47a877b', '0x4e2cf3c48c1e4dedbd8770dbb0e11539d7224546130333642def3ab9f78cc7d8', '0x77afae22c5634e4f4c19e6beabf0b101db4e07cb6a482956725168afcaae6344', '0x4fe23160878453cbe977da19be25155ef46744ecf1d2981df5368cefc75604e8', '0xaf37fa5dfe43fae7c11b439279a2ce81fbd020cf9f89a4b01b6ba2dbf818f049', '0xa9afcffd6d3795362d7033f89aa10fcc0401ef1f1d96901b2edd46183f48fa21', '0xf797252a8371ea17a9af50bc10703712975807e3a8e58e34efa769ad68322ec2', '0xec9cd815126ef1f986e728d62f3cb367882be23172349672d21790e84630d52c', '0x3362d72d2b51bb41490481d4c769dcfb624f69a875a9e49bfcc325bc93405002', '0x562b3f8e433c3d71359a9fc067937ac597565a4699758838a48c53dc9664d9ce', '0xdca4669a396179c7ce92e23854080e9409380097e1a8063c5a305f15b960ccec', '0xbd265c019c17f35b09af4861d45ebde43d6b434a0bb0cc056a73f4bb619e1b3e', '0x7fa9303a4fa0b2762b806d686577f946d65061d6a0715691a480983b0c1bd3eb', '0xef0ce7a2ee102797454b4c15bffde48b11f69d9ef0f326f37841e7b8a0c5710c', '0x61bbbf3b653531b5705bd7f3958763af9f2b6c1645ebd516667ae47d03ea8e3f', '0x254fcdf47fbb9cff345400c5dc9216c4f33f7e2cef1ba056ce7ce06c1333f9f4', '0x8d6b3838aed7e0e875064211047fcc25a0dabb17c3c5133310eb6404fd066610', '0x5720197fa128bb7f5b7da15917b691b30a34dfaba6a4b6dbfed7e9fc62ce56ee', '0xfdcab88e7d59ad2a72702b25324884405906629da49a2970ce41dd94d7d2f693', '0x3139b8d1f05d220af2d9973fa7e7bc2f72f7dd5103533358d551e17bffe8c283', '0xd1d52415e2543f8f3ada618c6d38d8aeb4391d70e3d6e173fa5e0b59ca543642', '0x32d7cb13171ca1f8af20f9538562dc55f243c7c4932ecf6b13af07ccd0a5e911', '0x3f3561d30bf4595321e675850a026a62c38f88a211a52a98281a311e42382688', '0x9caf0cba2e321a488d09d9b180ea0df6c918a938e46f01a7b6c643f5dd08aa9c', '0xb065aebb4295617d35a7a6948147ce62fe65ccdc8bbe1970634e3da659a5a0e4', '0x17b5caf0210df90353f3cf30c33acfa60f57877acf28003396d1b9b079d8d033', '0x21834b1993e2d674b0956b86dea553d9462b5bf796ea641e5dd48b901345f8d6', '0x8e1b15ed802463a0324cc8a58d9fdd91c3858bd02743375dcafdfd1707200582', '0xc9c5971bff493ef3b62a4b2b4608dc608e5e7756204504211ac68498b7b34cc1', '0x707b3f3d0375a33e079e6317df5c89780f8a68abdf9c4f8ed303e326e2540403', '0x6afa5f502e2b36ffe30212d5825e40cf8570659f6b99c6a8f8924e956d84484f', '0x801d005f71330472eb94cb1a4b5fa1a4da54aa1dce6ec5e73653602c83cc3367', '0x10472a4f28d9e87344e4b4fee3e2ae18ce1017c58c81071e7ae763095069fd7f', '0x8675fe1441c22218c98dbdd08d28bdd2a91d6d5ff222f4aae52956db9f1a3847', '0xfcbd8ae334bb76c318948956597d56059072534039365adedc1cfc9ef184d846', '0xbb51f7a9e8b2344869516da8eb34940a8915eacf234c39649f09eade995c30c8', '0x7f0ed378838d0b72c8e4860efede754e85c2cc629d085f12a52920babc1707d3', '0x6b89090098ee6e1b6a16ac96c5dffad80322a6a136d85f139845f17b7301f2f4', '0x227f1a11a48aad6c4dbb7e3401219f0d26ea68ea5ba2160414b83fdb7e260a62', '0xa04141d8c2c600db65812ede705b10985399fcea8e7218d841b8a7a373f62d66', '0xfbe4fbeccb9cf51a8f8b77b84d42ec726bf33be845a8fe20372baf7f975fcfbd', '0x0f290cf9677c21190bdc81a3abab32e5e0c622470076404c7f9cbe9b85a76604', '0xcc88c425c5085ce25e5b231ea7a26e3fb3e7cb484b8babbe9d607973b41dfa9e', '0x006be29bbb258a38d2d606ba06a3bdf8b31046258d359f18aa995a6712da1357', '0xc2f104387aa55579c237f280e0ba1df680157e84ca8c91035d70d816b824c12d', '0xc62822e1042eab62bb258221e8025a9fc4d74bc58b09cd298e38d99d1f5124c7', '0xe2807ffcd149dc3d326e64f487dc52cdc9d8a4e467c357e5e4673e739a65d780', '0xac02ad169d2d0d7f965354ab5ebaa1674ade7405f13ed19e2df23f8e2dbd1e18', '0xbf35e37b9c35abe09c718124d017a000d1c709946f036999c2e88e43f83134fb', '0xbd60fbfaa148b42ea09bd873d892d85c9618af88f9b0492d00eb79095b4f5679', '0x39650ea365f331e083e5284a9bfe68bd0228734ab530449c4c1859267951d045', '0xe4fe2034919cd8550d43ca8eff8de469e97e3b7717d49ab170d7b0b3901031d1', '0xbad1ca6b0529eb796b3ec742470648eeb03c6f009acbcd7dff1c58593059a9a1', '0x39db5a0be5d0a5dbe9d366633ee7ebb5237f29a139318690b4b7a3df33fff669', '0xf5b5baa969befd31e539297ccd8a99bddf465183f44864fb89c73e7474ae56ea', '0x50a0a44e9cc1142a9fe7768bac30350650722de6ccf97aa5df00b0314316466d', '0xcdada45a8aa9f4cd9ad0a0b79045c3b96653230097de4dc05abefefbe02f4c7a', '0xd9167adec79e13b9a4327b6282dbbffcbbbf488ae9d31996403c52a586220d8f', '0x53a65c847879b49ed1df04080cb96cd751d0513bcc343d1bae174f49863a454b', '0xc7861a45ea4e9dfcd003917fb53df16f0558c38c2befc617cd018d71c817b587', '0xf83da1327dc6bcc1cf3eaeec6b1c1304758332059357f19a6b3a20de5b09ad08', '0x0b010e62fe93852e435c29da6ed3c49c56c26a05cf8cafa2e158374886752997', '0xcb5dd543f711f14d24111fc17d73b2c5bd058075e1bf4773ba7cdafd716d4dd3', '0x7d068f0129639e102f755e0b452b3ad98e6703b9b6a40fb48acce0f0f9eaf658', '0xd583e71f7c03e78e4b87fe45b7a64f7e61b91f6e5548159d11ceff37ca8a3362', '0xccc0f66457d1062975a192bfa84a98c259a3acfcf51edc135d460ce5fc44c999', '0x1dd110c83d242003f88e5a24193d100aad1a7f27a9ad87dcb0f37e945e445318', '0x6e48d8489c3a8d61ab67d8f54806d3469b1d1a15f90c43161f6cfc553c09a183', '0x150ed16197ed67682530cea4c6fd28b9149e744795154b050e9f758c7dc006c6', '0x6ad00ef83e6ae5b52d9ebf33140cd512fb551322de33a8fedb6906a644dd3452', '0x440518eead820d331fd3976fa370609dd4bfe59e0a0436668dd0526d1b4647d5', '0x42b3c2ab4d2996054a21817bcbe98b4e8dc0c83d7bce5bc3b8a8243b1e081585', '0xcbe3d82f95ecda55e7ba9d1f31c3f8f9576a0026aee4b55b706e7d7c65abdcbb', '0xa02785b22b85b9300ca384e2b6ecabf4bd14205b68a3913258140739dc2322ce', '0xf173c2b8d9cb3999be697dc582d8af92023577a8b15265a96f35ecf1c62cacd7', '0x9b56ddd6e4431c6199bbd94dff647fac2eca072d8c9fef1f9ab919343d684daa', '0x1a073ec19b0b8a0fa1344d7916d6aab03983bd63b1b3c31168f763170c9d106c', '0x13566558636a2f49e00c2babf517c3a18cc2a2ff01c971d4fc051751bf6b0b4b', '0x488688bdf3baddcb0b04c259ebfe57ef0543b575bbf66295d4f5b9c2b412f939'], 'transactionsRoot': '0xfa0b8a5325ea94fd117575c1aedf498ccaccdca636334f938b3b3184426f749c', 'uncles': []}}), - ) -} - - -LIDO_LOCATOR_CALLS = ( - (({'to': '0xC1d0b3DE6792Bf6b4b37EccdcC24e45978Cfd2Eb', 'data': '0x23509a2d'}, 'latest'), - {'jsonrpc': '2.0', 'id': 0, 'result': '0x000000000000000000000000ae7ab96520DE3A18E5e111B5EaAb095312D7fE84'}), - (({'to': '0xC1d0b3DE6792Bf6b4b37EccdcC24e45978Cfd2Eb', 'data': '0x472c1776'}, 'latest'), - {'jsonrpc': '2.0', 'id': 0, 'result': '0x000000000000000000000000710B3303fB508a84F10793c1106e32bE873C24cd'}), - (({'to': '0xC1d0b3DE6792Bf6b4b37EccdcC24e45978Cfd2Eb', 'data': '0xef6c064c'}, 'latest'), - {'jsonrpc': '2.0', 'id': 0, 'result': '0x0000000000000000000000000000000000000000000000000000000000000000'}), -) diff --git a/tests/fixtures/contracts.py b/tests/fixtures/contracts.py new file mode 100644 index 00000000..2f497af5 --- /dev/null +++ b/tests/fixtures/contracts.py @@ -0,0 +1,51 @@ +from typing import cast + +import pytest + +import variables +from blockchain.contracts.deposit_security_module import DepositSecurityModuleContract +from blockchain.contracts.lido import LidoContract +from blockchain.contracts.lido_locator import LidoLocatorContract +from blockchain.contracts.deposit import DepositContract +from blockchain.contracts.staking_router import StakingRouterContract + + +@pytest.fixture +def lido_locator(web3_provider_integration): + yield cast(LidoLocatorContract, web3_provider_integration.eth.contract( + # ToDo provide lido locator address via env variable + address=variables.LIDO_LOCATOR, + ContractFactoryClass=LidoLocatorContract, + )) + + +@pytest.fixture +def deposit_contract(web3_provider_integration): + yield cast(DepositContract, web3_provider_integration.eth.contract( + address=variables.DEPOSIT_CONTRACT, + ContractFactoryClass=DepositContract, + )) + + +@pytest.fixture +def lido_contract(web3_provider_integration, lido_locator): + yield cast(LidoContract, web3_provider_integration.eth.contract( + address=lido_locator.lido(), + ContractFactoryClass=LidoContract, + )) + + +@pytest.fixture +def deposit_security_module(web3_provider_integration, lido_locator): + yield cast(DepositSecurityModuleContract, web3_provider_integration.eth.contract( + address=lido_locator.deposit_security_module(), + ContractFactoryClass=DepositSecurityModuleContract, + )) + + +@pytest.fixture +def staking_router(web3_provider_integration, lido_locator): + yield cast(StakingRouterContract, web3_provider_integration.eth.contract( + address=lido_locator.staking_router(), + ContractFactoryClass=StakingRouterContract, + )) diff --git a/tests/fixtures/depositor_fixtures.py b/tests/fixtures/depositor_fixtures.py deleted file mode 100644 index cf8bfd67..00000000 --- a/tests/fixtures/depositor_fixtures.py +++ /dev/null @@ -1,139 +0,0 @@ -from fixtures.common_fixtures import COMMON_FIXTURES, LIDO_LOCATOR_CALLS -from fixtures.gas_fee_fixtures import GAS_FEE_FIXTURES - - -DEPOSITOR_BASE_FIXTURES = { - 'eth_call': ( - *LIDO_LOCATOR_CALLS, - (({'to': '0x710B3303fB508a84F10793c1106e32bE873C24cd', 'data': '0x062b662e'}, 'latest'), {'jsonrpc': '2.0', 'id': 11, 'result': '0x0000000000000000000000000000000000000000000000000000000000000001'}), - (({'to': '0x710B3303fB508a84F10793c1106e32bE873C24cd', 'data': '0xc6dda2c3'}, 'latest'), {'jsonrpc': '2.0', 'id': 12, 'result': '0x1670745baff8f26a6c2e451bc4eedecf0009a8271dcf5d224e8ab295f22b0863'}), - (({'to': '0x00000000219ab540356cBB839Cbe05303d7705Fa', 'data': '0xc5f2892f'}, '0xd17320'), {'jsonrpc': '2.0', 'id': 0, 'result': '0x4eff65af4dac60f23b625a5d9c80f9cc36b0754cd1db072cd47bd6d053e2f94e'}), - (({'to': '0x55032650b14df07b85bF18A3a3eC8E0Af2e028d5', 'data': '0xd07442f1'}, '0xd17320'), {'jsonrpc': '2.0', 'id': 0, 'result': '0x0000000000000000000000000000000000000000000000000000000000000043'}), - (({'to': '0x710B3303fB508a84F10793c1106e32bE873C24cd', 'data': '0x39443b8e0000000000000000000000000000000000000000000000000000000000000001'}, '0xd17320'), {'jsonrpc': '2.0', 'id': 0, 'result': '0x0000000000000000000000000000000000000000000000000000000000000001'}), - (({'to': '0xae7ab96520DE3A18E5e111B5EaAb095312D7fE84', 'data': '0x47b714e0'}, '0xd17320'), {'jsonrpc': '2.0', 'id': 0, 'result': '0x0000000000000000000000000000000000000000001111271e5ec338bae335ab'}), - (({'from': '0xae7ab96520DE3A18E5e111B5EaAb095312D7fE84', 'to': '0x55032650b14df07b85bF18A3a3eC8E0Af2e028d5', 'data': '0x41bc716f0000000000000000000000000000000000000000000000000000000000000001'}, '0xd17320'), {'jsonrpc': '2.0', 'id': 0, 'result': '0x000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000030a6c073f8bc871eea37b7b6dacaaac419473076fb05d7a4631173d1dc70c2adb47b9c0235d0ffb29e240ccab19e6152e8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060a9d0b8d92e82182d933a26786a7b394843d5d19ef565b0214b2d9b7e82f6eb66d5cade6cbad25256ee7555b33c2c2f861148ec0ab495baefd06ff503c6c9006ff68e307f8a0f911573093d8258522d2666619a396d7fbe2cefb84940a1a48826'}), - (({'to': '0x710B3303fB508a84F10793c1106e32bE873C24cd', 'data': '0x0665f04b'}, 'latest'), {'jsonrpc': '2.0', 'id': 0, 'result': '0x0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000600000000000000000000000043464Fe06c18848a2E2e913194D64c1970f4326a0000000000000000000000007912fa976bcde9c2cf728e213e892ad7588e6aaf00000000000000000000000014d5d5b71e048d2d75a39ffc5b407e3a3ab6f314000000000000000000000000f82d88217c249297c6037ba77ce34b3d8a90ab43000000000000000000000000a56b128ea2ea237052b0fa2a96a387c0e43157d8000000000000000000000000d4ef84b638b334699bcf5af4b0410b8ccd71943f'}), - (({'to': '0x710B3303fB508a84F10793c1106e32bE873C24cd', 'data': '0x0df9a86d0000000000000000000000000000000000000000000000000000000000d1731f432e218931e9b94f0702ecb1b0d084c467a86b384767ce38c4fe1644630705324eff65af4dac60f23b625a5d9c80f9cc36b0754cd1db072cd47bd6d053e2f94e0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001c2235eb6983f80d19158f807d5d90d93abec52034ea7184bbf164ba211f0011675354ffc9fb6e7a4b4c01c622661a1d0382ace8c4ff8024626e39ac1a6a613d0'}, 'latest'), {'jsonrpc': '2.0', 'id': 0, 'error': {'code': 3, 'data': '0x08c379a0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000146465706f73697420726f6f74206368616e676564000000000000000000000000', 'message': 'execution reverted: deposit root changed'}}), - (({'to': '0xae7ab96520DE3A18E5e111B5EaAb095312D7fE84', 'data': '0xf2cfa87d'}, '0xd17320'), {'jsonrpc': '2.0', 'id': 11, 'result': '0x0000000000000000000000000000000000000000001111271e5ec338bae335ab'}), - (({'to': '0x0000000000000000000000000000000000000000', 'data': '0x19c64b7900000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000001111271e5ec338bae335ab'}, '0xd17320'), {'jsonrpc': '2.0', 'id': 11, 'result': '0x0000000000000000000000000000000000000000000000000000000000000001'}), - ), - 'eth_accounts': ( - ((), {'jsonrpc': '2.0', 'id': 0, 'result': []}), - ), - 'eth_getBalance': ( - (['0x3f17f1962B36e491b30A40b2405849e597Ba5FB5', {'blockHash': '0xf7b1887b32ad3b9346f907947e2dffb5012de2b7cb7b6b84b950356237944d0c'}], {'jsonrpc': '2.0', 'id': 0, 'result': '0xffffffffffffffff'}), - ), - **GAS_FEE_FIXTURES, - **COMMON_FIXTURES, -} - -DEPOSITOR_BASE_FIXTURES_SMALL_BALANCE = { - **DEPOSITOR_BASE_FIXTURES, - 'eth_getBalance': ( - (['0x3f17f1962B36e491b30A40b2405849e597Ba5FB5', {'blockHash': '0xf7b1887b32ad3b9346f907947e2dffb5012de2b7cb7b6b84b950356237944d0c'}], {'jsonrpc': '2.0', 'id': 0, 'result': '0xfff'}), - ), -} - -DEPOSITOR_FIXTURES_WITH_HIGH_GAS = { - **DEPOSITOR_BASE_FIXTURES, - 'eth_getBlockByNumber': ( - (('latest', False), {'jsonrpc': '2.0', 'id': 15, - 'result': {'baseFeePerGas': '0xffbf193d7', 'difficulty': '0x29aa4945316813', - 'extraData': '0x486976656f6e2065752d6865617679', 'gasLimit': '0x1c9c380', - 'gasUsed': '0x65fe32', - 'hash': '0xf7b1887b32ad3b9346f907947e2dffb5012de2b7cb7b6b84b950356237944d0c', - 'logsBloom': '0x092000900100008810000000805c080000000000000008000001606044086000080101400080020080005883004901909220824588002c900088840040212040880004004021410a8822000810002020800100088240050104000c03802844101a00002012004482014408221000189000008840081064082000003404288c0800820120104030000044008a0821000241000401910080180021084201100401071880289001a00202000080080810401000001021802010183c1000100c2000210003032200081028010d20005600400000024203991230848a000201026008a131202a0400090000419000010008a00000a880305102502000090000001220', - 'miner': '0x1ad91ee08f21be3de0ba2ba6918e714da6b45836', - 'mixHash': '0x98630b099b638f63942ba8ff6b65b8a7b26dd38c6e125528104aeff50c01d02a', - 'nonce': '0x0000030ab4a3b4d8', 'number': '0xd17320', - 'parentHash': '0xc2ea9185d4821a13da4a2975c85673eff34944e92c0b5d3516a3b4482ac2ab58', - 'receiptsRoot': '0x3f30031d0a235a05e183de7416a42a2bdef7cbcbabd581282cfc8b2e239b9abe', - 'sha3Uncles': '0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347', - 'size': '0x63ff', - 'stateRoot': '0x22b47b4d4370336d5a0ffb7423b1a40257b23fdcfe28a3ec45a21e60590e1dd8', - 'timestamp': '0x61a88d67', 'totalDifficulty': '0x78d36e1e439ded9742d', - 'transactions': [], - 'transactionsRoot': '0xfa0b8a5325ea94fd117575c1aedf498ccaccdca636334f938b3b3184426f749c', - 'uncles': []}}), - (('pending', False), {'jsonrpc': '2.0', 'id': 0, - 'result': {'baseFeePerGas': '0x994a1533d7f', 'difficulty': '0x29be4af025287c', - 'extraData': '0xd883010a0c846765746888676f312e31372e33856c696e7578', - 'gasLimit': '0x1c95111', 'gasUsed': '0x1b68674', 'hash': None, - 'logsBloom': '0x57aa6b0f5ba66e9fbecbbec7849fcff758cddfdfbeb53b3ee5e9bb7d7f7bdfcf79fe7df2bdccb9b3d3e9dff8fcffd7d5ba2bf9139feffdb5f73ffe3bb23ef82d26fa5fa7af73bf2ce9afb63efaff5f7f6ef6387464cfb554b5f7b7ff96e35f753a41fbbf7fb5de9abf76d7d87dbefff6fffaf271ffbf37cf769f5d37b4affeed7f12b75b57fef817f3d72fbd0ff366cc5575ad3ddf361f2dcbae546fe9bfedd6bb5babcb6eee27f9eefd4fd3fdb94f29fb7eca707fffa7f355f3973e1efdbe93efebfbf7cda9997baf3bd9af57fbfd55ffeeff585f0efd7f779fbfab78de60fd8cfe3debfef5c3bdf9d53f9f97adff87c3e3cdc9f1f6f3f9255ffa56e8db7bef', - 'miner': None, - 'mixHash': '0x0000000000000000000000000000000000000000000000000000000000000000', - 'nonce': None, 'number': '0xd18e3e', - 'parentHash': '0x01802ffbfec338704593f416bb06005afb88c2a343d5a405d6d3f5359422a41c', - 'receiptsRoot': '0xa67cb02111fe0430601215c03aa86a2a95a032487c1644f7561e7d7ef58a4677', - 'sha3Uncles': '0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347', - 'size': '0x19b97', - 'stateRoot': '0xdbffeb5d663c710239c0b8bf57b562848e8bd6d55117ad29cbb9fe930ac0e11a', - 'timestamp': '0x61aa03ce', 'totalDifficulty': None, 'transactions': [], - 'transactionsRoot': '0xaeade20445251ded37c5efce433e9a526683d340da591774ac14acb4ca7a11d3', - 'uncles': []}}), - ), -} - -DEPOSITOR_FIXTURES_WITH_DEPOSIT_PROHIBIT = { - **DEPOSITOR_BASE_FIXTURES, - 'eth_call': ( - *LIDO_LOCATOR_CALLS, - (({'to': '0x710B3303fB508a84F10793c1106e32bE873C24cd', 'data': '0x062b662e'}, 'latest'), {'jsonrpc': '2.0', 'id': 11, 'result': '0x0000000000000000000000000000000000000000000000000000000000000001'}), - (({'to': '0x710B3303fB508a84F10793c1106e32bE873C24cd', 'data': '0xc6dda2c3'}, 'latest'), {'jsonrpc': '2.0', 'id': 12, 'result': '0x1670745baff8f26a6c2e451bc4eedecf0009a8271dcf5d224e8ab295f22b0863'}), - (({'to': '0x00000000219ab540356cBB839Cbe05303d7705Fa', 'data': '0xc5f2892f'}, '0xd17320'), {'jsonrpc': '2.0', 'id': 0, 'result': '0x4eff65af4dac60f23b625a5d9c80f9cc36b0754cd1db072cd47bd6d053e2f94e'}), - (({'to': '0x55032650b14df07b85bF18A3a3eC8E0Af2e028d5', 'data': '0xd07442f1'}, '0xd17320'), {'jsonrpc': '2.0', 'id': 0, 'result': '0x0000000000000000000000000000000000000000000000000000000000000043'}), - (({'to': '0x710B3303fB508a84F10793c1106e32bE873C24cd', 'data': '0x39443b8e0000000000000000000000000000000000000000000000000000000000000001'}, '0xd17320'), {'jsonrpc': '2.0', 'id': 0, 'result': '0x0000000000000000000000000000000000000000000000000000000000000000'}), - (({'to': '0xae7ab96520DE3A18E5e111B5EaAb095312D7fE84', 'data': '0x47b714e0'}, '0xd17320'), {'jsonrpc': '2.0', 'id': 0, 'result': '0x0000000000000000000000000000000000000000000011271e5ec338bae335ab'}), - (({'from': '0xae7ab96520DE3A18E5e111B5EaAb095312D7fE84', 'to': '0x55032650b14df07b85bF18A3a3eC8E0Af2e028d5', 'data': '0x41bc716f0000000000000000000000000000000000000000000000000000000000000001'}, '0xd17320'), {'jsonrpc': '2.0', 'id': 0, 'result': '0x000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000030a6c073f8bc871eea37b7b6dacaaac419473076fb05d7a4631173d1dc70c2adb47b9c0235d0ffb29e240ccab19e6152e8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060a9d0b8d92e82182d933a26786a7b394843d5d19ef565b0214b2d9b7e82f6eb66d5cade6cbad25256ee7555b33c2c2f861148ec0ab495baefd06ff503c6c9006ff68e307f8a0f911573093d8258522d2666619a396d7fbe2cefb84940a1a48826'}), - (({'to': '0x710B3303fB508a84F10793c1106e32bE873C24cd', 'data': '0x0665f04b'}, 'latest'), {'jsonrpc': '2.0', 'id': 0, 'result': '0x0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000600000000000000000000000043464Fe06c18848a2E2e913194D64c1970f4326a0000000000000000000000007912fa976bcde9c2cf728e213e892ad7588e6aaf00000000000000000000000014d5d5b71e048d2d75a39ffc5b407e3a3ab6f314000000000000000000000000f82d88217c249297c6037ba77ce34b3d8a90ab43000000000000000000000000a56b128ea2ea237052b0fa2a96a387c0e43157d8000000000000000000000000d4ef84b638b334699bcf5af4b0410b8ccd71943f'}), - (({'to': '0xae7ab96520DE3A18E5e111B5EaAb095312D7fE84', 'data': '0xf2cfa87d'}, '0xd17320'), - {'jsonrpc': '2.0', 'id': 11, 'result': '0x0000000000000000000000000000000000000000001111271e5ec338bae335ab'}), - (({'to': '0x0000000000000000000000000000000000000000', - 'data': '0x19c64b7900000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000001111271e5ec338bae335ab'}, - '0xd17320'), - {'jsonrpc': '2.0', 'id': 11, 'result': '0x0000000000000000000000000000000000000000000000000000000000000001'}), - - ), -} - -DEPOSITOR_FIXTURES_NOT_ENOUGH_BUFFERED_ETHER = { - **DEPOSITOR_BASE_FIXTURES, - 'eth_call': ( - *LIDO_LOCATOR_CALLS, - (({'to': '0x710B3303fB508a84F10793c1106e32bE873C24cd', 'data': '0x062b662e'}, 'latest'), {'jsonrpc': '2.0', 'id': 11, 'result': '0x0000000000000000000000000000000000000000000000000000000000000001'}), - (({'to': '0x710B3303fB508a84F10793c1106e32bE873C24cd', 'data': '0xc6dda2c3'}, 'latest'), {'jsonrpc': '2.0', 'id': 12, 'result': '0x1670745baff8f26a6c2e451bc4eedecf0009a8271dcf5d224e8ab295f22b0863'}), - (({'to': '0x00000000219ab540356cBB839Cbe05303d7705Fa', 'data': '0xc5f2892f'}, '0xd17320'), {'jsonrpc': '2.0', 'id': 0, 'result': '0x4eff65af4dac60f23b625a5d9c80f9cc36b0754cd1db072cd47bd6d053e2f94e'}), - (({'to': '0x55032650b14df07b85bF18A3a3eC8E0Af2e028d5', 'data': '0xd07442f1'}, '0xd17320'), {'jsonrpc': '2.0', 'id': 0, 'result': '0x0000000000000000000000000000000000000000000000000000000000000043'}), - (({'to': '0x710B3303fB508a84F10793c1106e32bE873C24cd', 'data': '0x39443b8e0000000000000000000000000000000000000000000000000000000000000001'}, '0xd17320'), {'jsonrpc': '2.0', 'id': 0, 'result': '0x0000000000000000000000000000000000000000000000000000000000000001'}), - (({'to': '0xae7ab96520DE3A18E5e111B5EaAb095312D7fE84', 'data': '0x47b714e0'}, '0xd17320'), {'jsonrpc': '2.0', 'id': 0, 'result': '0x0000000000000000000000000000000000000000000000000e5ec338bae335ab'}), - (({'from': '0xae7ab96520DE3A18E5e111B5EaAb095312D7fE84', 'to': '0x55032650b14df07b85bF18A3a3eC8E0Af2e028d5', 'data': '0x41bc716f0000000000000000000000000000000000000000000000000000000000000001'}, '0xd17320'), {'jsonrpc': '2.0', 'id': 0, 'result': '0x000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000030a6c073f8bc871eea37b7b6dacaaac419473076fb05d7a4631173d1dc70c2adb47b9c0235d0ffb29e240ccab19e6152e8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060a9d0b8d92e82182d933a26786a7b394843d5d19ef565b0214b2d9b7e82f6eb66d5cade6cbad25256ee7555b33c2c2f861148ec0ab495baefd06ff503c6c9006ff68e307f8a0f911573093d8258522d2666619a396d7fbe2cefb84940a1a48826'}), - (({'to': '0x710B3303fB508a84F10793c1106e32bE873C24cd', 'data': '0x0665f04b'}, 'latest'), {'jsonrpc': '2.0', 'id': 0, 'result': '0x0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000600000000000000000000000043464Fe06c18848a2E2e913194D64c1970f4326a0000000000000000000000007912fa976bcde9c2cf728e213e892ad7588e6aaf00000000000000000000000014d5d5b71e048d2d75a39ffc5b407e3a3ab6f314000000000000000000000000f82d88217c249297c6037ba77ce34b3d8a90ab43000000000000000000000000a56b128ea2ea237052b0fa2a96a387c0e43157d8000000000000000000000000d4ef84b638b334699bcf5af4b0410b8ccd71943f'}), - (({'to': '0xae7ab96520DE3A18E5e111B5EaAb095312D7fE84', 'data': '0xf2cfa87d'}, '0xd17320'), - {'jsonrpc': '2.0', 'id': 11, 'result': '0x0000000000000000000000000000000000000000000000000000000000000001'}), - (({'to': '0x0000000000000000000000000000000000000000', - 'data': '0x19c64b7900000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001'}, - '0xd17320'), - {'jsonrpc': '2.0', 'id': 11, 'result': '0x0000000000000000000000000000000000000000000000000000000000000001'}), - ), -} - -DEPOSITOR_FIXTURES_NO_FREE_KEYS = { - **DEPOSITOR_BASE_FIXTURES, - 'eth_call': ( - *LIDO_LOCATOR_CALLS, - (({'to': '0x710B3303fB508a84F10793c1106e32bE873C24cd', 'data': '0x062b662e'}, 'latest'), {'jsonrpc': '2.0', 'id': 11, 'result': '0x0000000000000000000000000000000000000000000000000000000000000001'}), - (({'to': '0x710B3303fB508a84F10793c1106e32bE873C24cd', 'data': '0xc6dda2c3'}, 'latest'), {'jsonrpc': '2.0', 'id': 12, 'result': '0x1670745baff8f26a6c2e451bc4eedecf0009a8271dcf5d224e8ab295f22b0863'}), - (({'to': '0x00000000219ab540356cBB839Cbe05303d7705Fa', 'data': '0xc5f2892f'}, '0xd17320'), {'jsonrpc': '2.0', 'id': 0, 'result': '0x4eff65af4dac60f23b625a5d9c80f9cc36b0754cd1db072cd47bd6d053e2f94e'}), - (({'to': '0x55032650b14df07b85bF18A3a3eC8E0Af2e028d5', 'data': '0xd07442f1'}, '0xd17320'), {'jsonrpc': '2.0', 'id': 0, 'result': '0x0000000000000000000000000000000000000000000000000000000000000043'}), - (({'to': '0x710B3303fB508a84F10793c1106e32bE873C24cd', 'data': '0x39443b8e0000000000000000000000000000000000000000000000000000000000000001'}, '0xd17320'), {'jsonrpc': '2.0', 'id': 0, 'result': '0x0000000000000000000000000000000000000000000000000000000000000001'}), - (({'to': '0xae7ab96520DE3A18E5e111B5EaAb095312D7fE84', 'data': '0x47b714e0'}, '0xd17320'), {'jsonrpc': '2.0', 'id': 0, 'result': '0x0000000000000000000000000000000000000000000011271e5ec338bae335ab'}), - (({'from': '0xae7ab96520DE3A18E5e111B5EaAb095312D7fE84', 'to': '0x55032650b14df07b85bF18A3a3eC8E0Af2e028d5', 'data': '0x41bc716f0000000000000000000000000000000000000000000000000000000000000001'}, '0xd17320'), {'jsonrpc': '2.0', 'id': 0, 'result': '0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000'}), - (({'to': '0x710B3303fB508a84F10793c1106e32bE873C24cd', 'data': '0x0665f04b'}, 'latest'), {'jsonrpc': '2.0', 'id': 0, 'result': '0x0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000600000000000000000000000043464Fe06c18848a2E2e913194D64c1970f4326a0000000000000000000000007912fa976bcde9c2cf728e213e892ad7588e6aaf00000000000000000000000014d5d5b71e048d2d75a39ffc5b407e3a3ab6f314000000000000000000000000f82d88217c249297c6037ba77ce34b3d8a90ab43000000000000000000000000a56b128ea2ea237052b0fa2a96a387c0e43157d8000000000000000000000000d4ef84b638b334699bcf5af4b0410b8ccd71943f'}), - (({'to': '0xae7ab96520DE3A18E5e111B5EaAb095312D7fE84', 'data': '0xf2cfa87d'}, '0xd17320'), - {'jsonrpc': '2.0', 'id': 11, 'result': '0x0000000000000000000000000000000000000000001111271e5ec338bae335ab'}), - (({'to': '0x0000000000000000000000000000000000000000', - 'data': '0x19c64b7900000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000001111271e5ec338bae335ab'}, - '0xd17320'), - {'jsonrpc': '2.0', 'id': 11, 'result': '0x0000000000000000000000000000000000000000000000000000000000000000'}), - ), -} diff --git a/tests/fixtures/gas_fee_fixtures.py b/tests/fixtures/gas_fee_fixtures.py deleted file mode 100644 index 4db5e10b..00000000 --- a/tests/fixtures/gas_fee_fixtures.py +++ /dev/null @@ -1,27 +0,0 @@ -GAS_FEE_FIXTURES = { - 'eth_getFilterChanges': ( - ('default', {'jsonrpc': '2.0', 'id': 15, 'result': []}), - ), - 'eth_getBlockByNumber': ( - (('latest', False), {'jsonrpc': '2.0', 'id': 11, 'result': {'baseFeePerGas': '0x1816eeb4af', 'difficulty': '0x27aca623255aa9', 'extraData': '0x486976656f6e2065752d68656176792d32', 'gasLimit': '0x1c9c364', 'gasUsed': '0x8454f8', 'hash': '0x2420cd3a3f572ba42a881457c88c5c3f58cf44a46e7f25aea53d3a7313922694', 'logsBloom': '0x5260400700da108048d93200854128614100802800081404698960db80801ec8464604e3940845a34200c3c2800a4971922881803c01a13902474008842a2518012005042016030f1a80920a703402e209a160240845ce0128a451c282e040c0be0401180a3a0608a355581942010aa06441180242406622780550b4460a02004c11890083047425054a21690dcc044450012c7389089a0a0c20674c419008840b790700804034120a000fc08c2394019087886200038c440c8124b090850d11404120a2818840537b410143518037f000006a0b063a2438148c25020023e606b81825ad000202011506060096a080810459c904a1000062108b191212013223', 'miner': '0x1ad91ee08f21be3de0ba2ba6918e714da6b45836', 'mixHash': '0x4889052c97da7a2386244f85d8061a0765e1c0f98a212c2eda929dc406713dbe', 'nonce': '0xf078269bfcafc704', 'number': '0xd1271e', 'parentHash': '0x857a1b6ee3a8f2b837f9ae69f5a0b1b181903f5e23df0ed9d166776333e14ec8', 'receiptsRoot': '0x1760ed19deceff14ce9cdfebd18ff257c3afc22359edb144d663cd6eb6523aba', 'sha3Uncles': '0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347', 'size': '0xa1cc', 'stateRoot': '0xa9d6469a301598d5de4f43f121c020da2814875c9154fffb72fb7a6edb8a88cd', 'timestamp': '0x61a4733a', 'totalDifficulty': '0x78150c58dfe2dc7fcb1', 'transactions': [], 'transactionsRoot': '0x46fdbd1a3ea670807040dd45f91ebe007c9521395d219150c2d8ac8b77055722', 'uncles': []}}), - ), - 'eth_feeHistory': ( - (('0x1', 'latest', [25]), {'jsonrpc': '2.0', 'id': 0, 'result': {'baseFeePerGas': ['0x48639c26c', '0x4cc965382'], 'gasUsedRatio': [0.7429978666666667], 'oldestBlock': '0xec38ea', 'reward': [['0x73a20d00']]}}), - (('0x400', 'latest', []), {'jsonrpc': '2.0', 'id': 12, 'result': {'baseFeePerGas': ['0x1d0ee0340f', '0x1e80eda479', '0x2007facf70', '0x1fb3b8b928', '0x1c72e60775', '0x1be78472de', '0x1abaeb9912', '0x187ecbf92a', '0x1ae433de3b', '0x1cbf6c8178', '0x1a982062ea', '0x180cf420bb', '0x1b0def7476', '0x1d7f25b2b2', '0x1e911fed9c', '0x1dca48b562', '0x1ba2717bb6', '0x1b4549a641', '0x18afd68002', '0x19c4496086', '0x1b9396e657', '0x1d28dd2bec', '0x1a7473795e', '0x1cfd90b8d4', '0x19e14dbde4', '0x1938c26edc', '0x19212a67d5', '0x1683c240bb', '0x1953e4065b', '0x1982ca677b', '0x17c3a5305d', '0x19a5e882e7', '0x18b46b86a9', '0x1733a3a821', '0x1568dcfff6', '0x1612eb0583', '0x18d4c00e61', '0x1bee92a48c', '0x1eb62a6156', '0x1ead4fff40', '0x203c9219db', '0x1c8a275a93', '0x1bfbfe0641', '0x1c56b4eb7e', '0x1a805afe1f', '0x1d95b4c675', '0x1a9de9ae1d', '0x1bb43a2fe4', '0x19f8ff0813', '0x18264f2346', '0x1a7c1eb5f2', '0x1dcb6c5a0b', '0x1ca4cf5114', '0x1dff403962', '0x1c18bfe181', '0x1adcdd560e', '0x19c6e7538d', '0x19acf0d71c', '0x1702489ccf', '0x165a3826e1', '0x1577e341ca', '0x14a672ecb4', '0x173a93feef', '0x162589c853', '0x147bad337d', '0x15fefb0079', '0x167fe3ee07', '0x151880a95a', '0x12ecbc915f', '0x11e17c55b9', '0x141d2e7341', '0x169eca18d6', '0x13caf0d5bc', '0x141a3dce05', '0x144c10cafe', '0x14618e5df8', '0x156993dfea', '0x15475d430e', '0x176b8137a9', '0x147e1110b4', '0x170c0c8bf1', '0x195dd93331', '0x1918b17004', '0x16a601d63e', '0x197aa3e9e3', '0x19d53d43bd', '0x17a286d25e', '0x15f37f14af', '0x18a3506ed9', '0x168411521a', '0x15ab9cab86', '0x13ea3aa5ff', '0x154edab671', '0x1356c248a9', '0x1267b90354', '0x14b49ff9ba', '0x15d38b0ccb', '0x131919ab32', '0x157bc74278', '0x178e84e7b7', '0x1a7def1fbf', '0x1dcd6ba973', '0x1c18a5a851', '0x1b6ab446aa', '0x1a56f8a628', '0x19dfc4e8c8', '0x1d1bbacf53', '0x1b502bb3d0', '0x1879656035', '0x17d79b991d', '0x170bd3596b', '0x15cad65073', '0x1883ae8c1b', '0x1734a699f7', '0x16ead94424', '0x19c7b6f3bd', '0x1939814e5b', '0x176354b516', '0x199d367279', '0x1744a16fb6', '0x16811e55db', '0x1939ae2c6a', '0x1ba61faaa6', '0x1abd92ee14', '0x1993ad620c', '0x1afc143b30', '0x19402a9ab2', '0x17ef500f29', '0x1aeca301ea', '0x1e494795e9', '0x1a903e3a23', '0x1a23a4abfe', '0x17ad1bd184', '0x15fb09f309', '0x1822918d8d', '0x1b25e29cf7', '0x195aee52a9', '0x1662c96e7f', '0x1777cf6644', '0x1604f93ef1', '0x18c4ea10be', '0x19bff19c79', '0x17a5285ad4', '0x163973f2ed', '0x1891db1f22', '0x19548108e6', '0x169024908f', '0x19538fea82', '0x199d235261', '0x1cca718725', '0x20629b66b3', '0x1cdd2ccefa', '0x1bcbe95bfd', '0x1c9c3a9f96', '0x19ffd23496', '0x179b67cbd1', '0x1a8da63ae0', '0x1d7243f0a7', '0x1a248bad17', '0x182b5611a0', '0x172dda125f', '0x14f4e7f233', '0x17931ef1ff', '0x1642709872', '0x14546ab9c9', '0x16578edeae', '0x158ce100da', '0x1380a55585', '0x15f0b97504', '0x16957bf2bf', '0x15d5ceaad5', '0x1556026b70', '0x13c5bffc11', '0x1339d1c452', '0x1564954215', '0x141257854c', '0x11d901eca8', '0x1335aff23d', '0x146ed69c46', '0x12b77d8b17', '0x12b6d76321', '0x1163021cfc', '0x138f36c00f', '0x15954b94ea', '0x1847528aa1', '0x16b28962ec', '0x189c5ab5b7', '0x15ca546a9d', '0x18839363fd', '0x187390f017', '0x15c8c0a1fa', '0x17f4b61d23', '0x1af29013c1', '0x1e508b78f7', '0x1bb1b78b9b', '0x1c3e1d6e3a', '0x1b1c3fac3d', '0x1ceb533163', '0x19cbaa5c33', '0x1d04195b85', '0x1e1f864dc8', '0x1b38cdb010', '0x1a8af5bdf4', '0x1bf770d431', '0x18cc01321a', '0x19f133faf3', '0x1766319608', '0x1624fb5409', '0x1871049637', '0x17ab5b72f7', '0x14b5f00499', '0x121f320406', '0x1462fef3b1', '0x169b5fead3', '0x196e137a95', '0x19124624bd', '0x1b1ec51ec3', '0x1819bf1987', '0x163c5c1dcf', '0x18828db725', '0x15ba6750d5', '0x15203467f3', '0x16b1a81eca', '0x149b37d8e3', '0x13fdb0f37b', '0x162b906510', '0x187de464e8', '0x169e2bbd83', '0x14f21b6f16', '0x178fd97840', '0x18506cefdb', '0x15b1e583fa', '0x14747fca36', '0x154b9b25b8', '0x1730f53e93', '0x15f4efb3a1', '0x16bd0e378a', '0x18adbe67c9', '0x1a8a45f95b', '0x1a5733974e', '0x184ac7ba31', '0x1b530b1ee5', '0x1ada7c4c68', '0x182035f63d', '0x15d37a262e', '0x1466d17f72', '0x14f1a85460', '0x178fc06bb2', '0x1a818a10c4', '0x19077f647e', '0x1af9596f39', '0x1b165a8a5e', '0x17b38f3913', '0x18dd276211', '0x16f07e8c55', '0x19cda8409d', '0x18f6b01316', '0x1704997b76', '0x17b471604f', '0x17e709aa6c', '0x15f180286a', '0x14462f826b', '0x1321c469e6', '0x1585582fee', '0x1835bd4b84', '0x1b3b7f57d0', '0x1a73bece7b', '0x1dc22bb349', '0x1d1ea41009', '0x1a72217030', '0x1c9addfd69', '0x19f954ad85', '0x198a0db22f', '0x17a16cb7ad', '0x1a94dd7cf5', '0x1de6a15965', '0x1a29cd2e39', '0x1ae98c2f6d', '0x1a44505369', '0x1d3d6345aa', '0x20c5579493', '0x1e2b8be3da', '0x1ac30fc3a3', '0x1e1b4ea844', '0x1b9a5dac87', '0x1f0cb3db4a', '0x20ad2e2fee', '0x1d2ead4dc5', '0x1d3355a1f9', '0x1a08dae8c0', '0x1c983daa39', '0x1d926d2f8a', '0x1b0377e7dc', '0x1bedf1e28f', '0x18d6bfe004', '0x1bec55ebf6', '0x1f69c1e7a2', '0x2026b2560a', '0x1e126b9b23', '0x1ef9b3b245', '0x1d3e8c84b8', '0x1a785f985a', '0x1d401fe018', '0x20e6f0c9e3', '0x211a9b1849', '0x1d9389264a', '0x1d2ce8a208', '0x1c003e6ae2', '0x1c1449be56', '0x1b37d8f523', '0x1ae7bcc773', '0x17b7822418', '0x1aadf8bb7b', '0x19b2adf465', '0x1cc77319b9', '0x1cf23a543d', '0x208d4fb06a', '0x1e6af48a07', '0x1dc5e744cf', '0x1a93a22d23', '0x1b9bda3963', '0x1c26ea5cae', '0x1fa9d4aa0a', '0x1fc60cc6b6', '0x1bcd4b2de0', '0x1a48258a25', '0x1be5e1d785', '0x1a2f80a73e', '0x175e92f70c', '0x1a4a364867', '0x1846e77dad', '0x1b3b002246', '0x1ea19dac57', '0x223f40a97d', '0x1e9a9fb973', '0x1dc92dfacf', '0x1a10083b76', '0x1cab8f8629', '0x1c3f1e6c1b', '0x1cb12bf5c9', '0x19e6dfa88d', '0x18bc57fe18', '0x1b7be93b93', '0x19a48f8f82', '0x166ffd9d92', '0x16da751fbb', '0x19b5af9ec1', '0x18e0e0a83e', '0x1b7ebbdac5', '0x1eee4ca296', '0x1fc8ed12e0', '0x1c339b3310', '0x1e29eea2c4', '0x1b13856aa9', '0x1ba33b6262', '0x1c5cb8fbdd', '0x19d4784b75', '0x1b95747ec9', '0x1822c5eef0', '0x151e6d3112', '0x17c1da1628', '0x159dcb0d83', '0x1472a29ff5', '0x15b5686316', '0x13554b44fb', '0x11d518807c', '0x10294f7e22', '0x122e373b75', '0x1473e8274b', '0x1701cfb223', '0x1932f75ae9', '0x16acfb4d28', '0x1982995635', '0x1b507d397c', '0x1b25d280ba', '0x18867cf091', '0x19f919437c', '0x1934bd5491', '0x17aead1b38', '0x152dc0b281', '0x17d3381ae7', '0x15d07529c2', '0x180d97956d', '0x175a88603b', '0x154c406e28', '0x17f517b378', '0x1af3982a3f', '0x1e51990592', '0x1b88100848', '0x183b8d7ca3', '0x1b425c8ce1', '0x1a02e66197', '0x170ccc327c', '0x177a670105', '0x151d3d1da3', '0x152331bf65', '0x17c6c61cc2', '0x1abefcb7c0', '0x19ca28c70a', '0x185de1ac3b', '0x1ababde0e0', '0x19986c791c', '0x1bde32b812', '0x19218766fd', '0x169a059757', '0x1830a5eb5b', '0x15f8e3f4cf', '0x13a1e245fc', '0x1615a3724b', '0x17ee502cfe', '0x15c5ab59d8', '0x172243e29b', '0x14fc6a124a', '0x179bd3fee2', '0x1a0b64f75a', '0x1ce459e832', '0x1b73e67855', '0x19d3125449', '0x1705b56910', '0x19e5aced3f', '0x1d21784509', '0x20c57b1195', '0x1d8415fcf6', '0x1d24afcfd5', '0x1fbf23e9a9', '0x1cade1885e', '0x1918255753', '0x1c3a53dae4', '0x1fc065ccc4', '0x219a07e823', '0x1dccc2a80e', '0x1cb431fefb', '0x1b76128fd5', '0x1dc5704667', '0x1a4e95c696', '0x1aab046672', '0x19b3762192', '0x17697715df', '0x1a564cd77f', '0x1a834d08d2', '0x1b6aaebce3', '0x1a23316ddb', '0x1a17281d1e', '0x19ad17f3f6', '0x1b3b63ab9a', '0x1e8244d4ef', '0x1b419a8aa6', '0x18228fc610', '0x1b2475769c', '0x191f9bf437', '0x15fba875b1', '0x18251b2edd', '0x1806c807b9', '0x19df0ef96b', '0x1a2aafbcab', '0x189665135f', '0x1675cfd87f', '0x19442fc68d', '0x1a6cce3f83', '0x17ef89ce81', '0x1a053dce1c', '0x19144ffef2', '0x1625c04dd0', '0x1751b4c003', '0x19e3ce4956', '0x1becf5178d', '0x191b30f615', '0x172c93a87f', '0x165ee2250f', '0x192a0eba28', '0x1c4f1235b8', '0x192637b8ad', '0x1c4aa41952', '0x1a6b2c3dd5', '0x1db83e0e08', '0x1afe3f0301', '0x1b8928113e', '0x1efa215eb3', '0x22d880eb6e', '0x1f6cd8cf2d', '0x22c3c0dda2', '0x1fe5396a30', '0x1e381d8678', '0x1c2abc71b0', '0x1da682c7a2', '0x215a1295c7', '0x1d2ed0430f', '0x1cfc7eb2e4', '0x1aaa8abd5f', '0x1deba51d48', '0x1bec717e7a', '0x1e65f5e32b', '0x1d8924043e', '0x1e05f10cf2', '0x1f2a18906a', '0x1e5f2a7bff', '0x1e51a5c5e3', '0x1b1ea06a19', '0x1b54115fc4', '0x185ae765e4', '0x1b65f67524', '0x1bae6009ca', '0x1b7fdd5536', '0x1979390767', '0x190dd69ca8', '0x1a5fd52fee', '0x192fd44d77', '0x165d6803f2', '0x1929115101', '0x1907f5037b', '0x1b8fa2734b', '0x1dda789dff', '0x1b28945450', '0x1c896b20b4', '0x1df4008f2d', '0x1fb7fc5e59', '0x1c317a678b', '0x1a2de0e787', '0x19ba9e28f6', '0x1cf1273a1c', '0x208e7d4f87', '0x1ec727e42f', '0x1ddf824f73', '0x1ca832d4e5', '0x1bc70f36d9', '0x18be4c7224', '0x191cead633', '0x1703b33d71', '0x189633fb9b', '0x16741a3047', '0x18ae691940', '0x174f4d1872', '0x15de6ee00d', '0x164d1cf841', '0x16a89b186e', '0x149cc39207', '0x173040c179', '0x1a159685de', '0x1ae7b3d241', '0x17dc962b36', '0x16cf7aebc6', '0x177516cbf0', '0x150aefc5e3', '0x150ec1defe', '0x17b0630aa5', '0x17fbef057d', '0x1afb49d599', '0x1e59dde26d', '0x1b57d9d66c', '0x1c0014a897', '0x1b38951656', '0x180c564afa', '0x1a604edeef', '0x19b36ec857', '0x1aa0cc5a10', '0x1adb32ba73', '0x17a1a7ab8a', '0x1a95b7d580', '0x1a99723792', '0x1786660006', '0x16dda0bc3b', '0x1767d88d9d', '0x1530107013', '0x174043fea7', '0x17c93df149', '0x1ac1ca789b', '0x199f5983a7', '0x17a1aef98c', '0x15b1554b46', '0x16370d3b7e', '0x1785c3700e', '0x150072a15d', '0x14ae97bb00', '0x16ea2a6ab3', '0x19c6f5057b', '0x180d2be0ca', '0x15d805aa7e', '0x15bb778c4a', '0x1356cfd91e', '0x1584a76845', '0x15e07a9730', '0x1583da6eac', '0x14ad468a97', '0x13293d7315', '0x1506e61e47', '0x17a73081ea', '0x1664f35fbb', '0x15d720e07c', '0x138caffc85', '0x123316374a', '0x1479588bce', '0x156c3f2065', '0x13d9b296e1', '0x146283cd8a', '0x15f5a4a889', '0x18088c5348', '0x16b4eef257', '0x1667505057', '0x15dbb0e85b', '0x1602304e08', '0x14ce332ff7', '0x1767a71aae', '0x16522b1053', '0x191c3ead04', '0x1be0d1f531', '0x18b0f63954', '0x16232ef086', '0x145b94a747', '0x16e7042642', '0x1502fed120', '0x13d2922448', '0x157feb2bb3', '0x13120f4fbc', '0x1142fc9e9f', '0xf9153cb3f', '0x11837291c1', '0x13b36b4392', '0x15beca0777', '0x17fd3ecbde', '0x172363c1e7', '0x18b75b56c7', '0x15a06febef', '0x18283f1c14', '0x15660975d4', '0x12c91bd78c', '0x15220892c7', '0x140debf21d', '0x168f2aab46', '0x157a7e4080', '0x15ebb2e9b8', '0x164ca9dcf5', '0x1746079313', '0x16c4c56747', '0x199cef3ac0', '0x172b672aa6', '0x17b4053c9a', '0x1aaa58445b', '0x1b08a395a2', '0x1865da0e95', '0x19b0e6fcda', '0x18653c3241', '0x1b70ce51b4', '0x1ea4ecd718', '0x1be82c67b3', '0x194d46ef69', '0x186ae41b5f', '0x1660b0687d', '0x161a1bae5e', '0x155c2cdcb6', '0x1807ae412b', '0x1b07ab68d9', '0x1c03ebb9d3', '0x1ded840e90', '0x1af70f3376', '0x18f36f0abf', '0x1c119e34b2', '0x1aab2b7728', '0x1aaafeffe7', '0x199e88872d', '0x1cd22fed9e', '0x1dfcdfacbc', '0x1ab5608570', '0x17db2258f3', '0x1a00779c4b', '0x176ce115db', '0x19c67c8e63', '0x1cff4be2cd', '0x2095eb7ef0', '0x1cb5303a0f', '0x1a5bad76d9', '0x1da6b4914f', '0x19f1ddff26', '0x188ee1039c', '0x194d847963', '0x166767fd73', '0x183b5c3dc6', '0x1691d97669', '0x18b9bedf97', '0x17aca6d2f6', '0x18782b434d', '0x1595964902', '0x171387ad3e', '0x16eb06cf95', '0x17966eb884', '0x182c30bdb3', '0x16a48d6072', '0x1467050743', '0x1674360261', '0x163c6d9f1c', '0x1760994deb', '0x1612b2daa9', '0x13e4e36ccc', '0x13dbbebb88', '0x15e471d9f7', '0x18814f367d', '0x17c7a808af', '0x16a3e77e8c', '0x14b03ee8fe', '0x145ecee5f9', '0x139aa7cbd0', '0x1557dfa3bb', '0x13a6568372', '0x128c7e4693', '0x14dd4dd754', '0x12967a5a16', '0x1377f09b34', '0x1585cd7949', '0x1835916e3c', '0x166934610b', '0x18acb66a8f', '0x1618275756', '0x164482db04', '0x13eab6f8b5', '0x13bf28104d', '0x1147430e44', '0x136ff644c8', '0x15dd3be88f', '0x17ef3a4211', '0x14f152f9cf', '0x1253289a96', '0x149d217967', '0x1698eae0c8', '0x18d4a1f0c8', '0x197269a8fd', '0x16fe913855', '0x19c079ac7b', '0x174487efff', '0x16c07e2eb4', '0x149c2de143', '0x16c4c83202', '0x13ec2f2bc2', '0x142c9720ee', '0x16b1ff32f9', '0x158dcca50f', '0x16cf141482', '0x1634010903', '0x136d80e7e3', '0x1354565295', '0x155b0d8476', '0x1805e92639', '0x15b2e01ca0', '0x16e7014957', '0x145e9e7ad4', '0x1464cab6fd', '0x13e2dbcec1', '0x12325b1441', '0x12ade8e4af', '0x15014927ed', '0x17441b581e', '0x1599b8586f', '0x184c803a67', '0x17a848a9b8', '0x1576e3bfbe', '0x131394704a', '0x15755d028e', '0x16757c14be', '0x15f1ac7edf', '0x14447e4d05', '0x141a35c20a', '0x13e84470d2', '0x11bad8910b', '0x1393d25f05', '0x156abaf1da', '0x141e44af53', '0x14b22f7bde', '0x174853431c', '0x16d8073e51', '0x19b21677c0', '0x1a0beb9b71', '0x16f8184973', '0x1717e15f7d', '0x145864b3ca', '0x140f2228bc', '0x13c19e8833', '0x16394da85f', '0x18a167f841', '0x18e4f722f3', '0x15e8e06e17', '0x132cc0647a', '0x159223ea79', '0x158642be96', '0x18313965a0', '0x17e79a81e4', '0x1ae41a5914', '0x19c40ae989', '0x1cfc591b14', '0x1d4b259417', '0x19f5461170', '0x17e23c1d1f', '0x1ade77e73d', '0x188bd0750f', '0x188a16e2f7', '0x17fcd4e6b9', '0x1afbc4e00a', '0x1e5a7e59e7', '0x1b80d19aa2', '0x1a49a746da', '0x188fdb6abf', '0x16dfae4b72', '0x1950b13d0f', '0x16d5fa2f05', '0x155c630319', '0x140127c665', '0x160d7f105f', '0x1420354fa9', '0x16a436c110', '0x1482e14792', '0x1243c14dd8', '0x148c26723d', '0x13ef055bcb', '0x15c7900486', '0x1795d8dd1f', '0x18951f7108', '0x1a35542b59', '0x1d7bd9f0e9', '0x1ba6cf0e7b', '0x1920d4e0c8', '0x1674529d97', '0x1942287223', '0x1c69a616b5', '0x1dff5e76dc', '0x1a9f43f106', '0x19308be76a', '0x1667a58700', '0x17277d8769', '0x19a4477fb3', '0x1c3779872a', '0x19b87f23a9', '0x1821c7c133', '0x1754d9d206', '0x16cbedb7fa', '0x188ebfcd00', '0x170ce97105', '0x16f7de3f38', '0x1504a30b68', '0x17a4e55a44', '0x16a0be1ea5', '0x191e71dcd5', '0x1664753241', '0x1584300559', '0x14fb2b7a94', '0x14720125e1', '0x12916dd376', '0x14e3441dee', '0x177f4079f5', '0x18087edc24', '0x1a73c10d1a', '0x1a3a10fc48', '0x18029c3e7c', '0x1682b0a80d', '0x18717b1d25', '0x193581a5b3', '0x17fbdb2af7', '0x15bbc10cde', '0x14583f2ca2', '0x11cd37470e', '0x1406a2cebe', '0x167d02c069', '0x148e289f7e', '0x171f6379d3', '0x18aed9186e', '0x1bc44d9a80', '0x18a7b155d0', '0x1b2e53723a', '0x1957f3582a', '0x179dc6c561', '0x1703ad1749', '0x17eb8ade42', '0x1527eb4242', '0x14c2c4e763', '0x14b6cdc201', '0x174cd6886f', '0x1a35672fb7', '0x180dd4d774', '0x19c674a0ae', '0x17bbea800f', '0x1776838e42', '0x15af8d029c', '0x174fe8497a', '0x18146e976c', '0x18631bad59', '0x15e0dfc1b6', '0x189c526230', '0x186447a795', '0x166d75f61a', '0x1437f13aeb', '0x162355035c', '0x16c8d9980d', '0x15afb43b66', '0x13f14e602a', '0x12de6eda8f', '0x1538f4c3f5', '0x15f5943532', '0x13cebe6e42', '0x12035d5e8a', '0x13fa03ee2b', '0x11d6553456', '0xfc864f56a', '0x11c0dc8376', '0x13f83e00b5', '0x167712502a', '0x14b09a4ca2', '0x1608599ddd', '0x14385a9e21', '0x12151749b3', '0x1457a69b76', '0x13c00173b0', '0x117098b69b', '0x1298bf2a5e', '0x14eb8c6eb7', '0x1414af6c11', '0x120bc5e59f', '0x10a9d7fdd8', '0x12be5ec813', '0x121685dd05', '0x10c5104d21', '0xfc2f7fa16', '0x11bb0b1779', '0x11de6d06db', '0x10e0ba9282', '0x12fc26da0d', '0x141294ccc2', '0x11c157a925', '0x13c01aa71c', '0x120a36b6d2', '0x108ff721c2', '0x1084411de8', '0x1294b4a2d5', '0x126d3885c2', '0x14ba6510db', '0x16564356f7', '0x15cc6e138a', '0x13580db6f2', '0x15c2459180', '0x1309fcdf50', '0x156ab303c3', '0x1815b6cff2', '0x1a9227209c', '0x17cabd3e81', '0x1552b44406', '0x17fcf5dbb5', '0x190a8fd93b', '0x165437f50e', '0x17246ca99f', '0x145fd11a2f', '0x1341e59f25', '0x1496e2afe4', '0x1327655a9b', '0x11b1130895', '0x13cc60cb9d', '0x138e23b3b4', '0x1479601b7e', '0x12f3e2e0b9', '0x10b9ecdeed', '0x111449ba03', '0x108854e182', '0x1298cbb6ba', '0x12cce7cdc0', '0x11faa1147b', '0x12ae32a36a', '0x116841bac2', '0xfba909609', '0xf6a934786', '0x11574ae9cc', '0xfa0870ba1', '0x11942792e2', '0x120e0df6bd', '0x14160fa69a', '0x14e81c1683', '0x1410f850f6', '0x12cdf27819', '0x13c6855c1e', '0x12c47a41a4', '0x138a6173ba', '0x15fb1d43e0', '0x1812d2a907', '0x16235568f9', '0x15018caf4e', '0x13146f09e9', '0x1328747eb3', '0x12aedac1f6', '0x146130b678', '0x13feb3165f', '0x12ba6a7e9e', '0x11bf4e61c8', '0x13ebc2d76d', '0x138b7c3c13', '0x119847b7f7', '0x1161b60877', '0x128e2dcf89', '0x1148008f3f', '0x10da52cc48', '0x12f59acaa1', '0x1096e7714d', '0x10842aa227', '0xf8330d028', '0x1173060996', '0x11e74cb43a', '0x1033a0efdc', '0x110279fb7c', '0x1322b95c62', '0x1586615e53', '0x1443a4e543', '0x1456819ef2', '0x156dbcbf7e', '0x181b370d53', '0x196024f540', '0x169dec0d18', '0x1662c774b6', '0x14b3c886a0', '0x14ba020f91', '0x1520d6f131', '0x140bdb066e', '0x131fb30925', '0x1583347c4c', '0x163a501874', '0x15798e9dd0', '0x16333d44d0', '0x140a6d5f0d', '0x12224cb58f', '0x1465f18094', '0x130c0b4d25', '0x156ce04eb8', '0x1816eeb4af', '0x16d1c17fdf'], 'gasUsedRatio': [0.69898302207346, 0.7003098897358982, 0.45889834525131734, 0.08952607414796689, 0.4234474172062155, 0.33168118605119756, 0.16556761279225637, 0.8912777667487565, 0.7761227510594937, 0.20035841676218702, 0.11741434503849763, 0.9995858623044163, 0.861084419024391, 0.6451315470030967, 0.3983577975587281, 0.21055851794423977, 0.44732837794389463, 0.12101558827554956, 0.6749720214707206, 0.7809476338444791, 0.7296306089950793, 0.12897494536673765, 0.8833850952077835, 0.07083897450161264, 0.3982421305312438, 0.485383452243286, 0.08377764017821616, 0.9997654806797761, 0.5289331778554855, 0.2261309332031, 0.8170881646635965, 0.35288358300833966, 0.256638078154804, 0.19104116826023135, 0.6241079990023047, 0.9996229730039787, 0.9995147372534449, 0.8980619111035039, 0.49549586732188766, 0.7033578666666667, 0.0412741, 0.4221689146117851, 0.5506502139401996, 0.2406641998777672, 0.965394668736715, 0.098720451465699, 0.6633801241310142, 0.2500186766233506, 0.21924358517605133, 0.8867880258492049, 0.9998750994171306, 0.3454978, 0.6889813333333333, 0.24658916666666666, 0.3243314666666667, 0.3383211, 0.48426233333333335, 0.08456516666666666, 0.3858701355206693, 0.34178752536868806, 0.34756690172754195, 0.9994877656934215, 0.313647519127858, 0.19954403333333334, 0.7954445182387267, 0.591571885467093, 0.2504204025821639, 0.08835980002277782, 0.27934741749947145, 0.9995718634497232, 0.9984155264831568, 0, 0.5626024003796789, 0.5387266320151705, 0.5165436895092016, 0.7024101, 0.4750339373064464, 0.9024995726658152, 0, 0.998645821911721, 0.9025725084957371, 0.4574025648397644, 0.10982669278755826, 0.9999187413017624, 0.5555597263028814, 0.15964475232679826, 0.2150461351817213, 0.9895938608035424, 0.15548154671085576, 0.34978963021843557, 0.17598101263389562, 0.7798032109378205, 0.13035095046525813, 0.3068690229621553, 0.9999463631923252, 0.716516554103138, 0, 0.9996240741361705, 0.8860088666666667, 0.9984080788223033, 0.9998494331928043, 0.2710057, 0.4032662561658126, 0.34285822000100535, 0.42928806753757925, 0.9999936, 0.25331417204433204, 0.08423514067628989, 0.3967099961750647, 0.3664513, 0.2823743, 0.9996343095699617, 0.28645760069376064, 0.45030706666666664, 0.9996658333333334, 0.4138086508141867, 0.20875797615331634, 0.8807250760983297, 0.13363574758213775, 0.36870958132982806, 0.9836296062897691, 0.8843134360221879, 0.3685811188822176, 0.32593325905779313, 0.7201707238621083, 0.2429603202947664, 0.2915563, 0.9996147571436842, 0.9994563994926395, 0.008318233333333333, 0.4361200333333333, 0.12309133333333333, 0.21353768045503566, 0.8920567623215369, 0.9993497333333333, 0.23584929316522416, 0.03156543333333333, 0.6933579359755199, 0.25309703333333333, 0.9995167280849749, 0.658355381131689, 0.17306385838397978, 0.25965951503285917, 0.9221164898418721, 0.6237853885255902, 0.06304370536940315, 0.9898904436380964, 0.5453921916664213, 0.9961344056830755, 0.9993802999365691, 0.06508275027198822, 0.352073622753795, 0.6170994885191114, 0.13496068121470806, 0.1319518460816841, 0.9992177589152299, 0.9358071240638939, 0.051239051914533214, 0.19804648694448976, 0.33612698246189326, 0.1164745435078481, 0.9997029144512735, 0.27685215546456005, 0.15322231968746075, 0.895926121344864, 0.3582553545466924, 0.11990604015683175, 0.9999982983773327, 0.6173351, 0.36738568121562626, 0.4085493615977162, 0.20687746666666668, 0.3894212031381978, 0.9508606208032461, 0.2529546, 0.05679526666666666, 0.8052564666666666, 0.7547140666666666, 0.1640325, 0.49945816666666665, 0.21626436666666668, 0.9998468162505979, 0.9138679500723518, 0.9995405, 0.23949169697542985, 0.8371927226741749, 0.04159747527764591, 0.9999675699975386, 0.48979562567372237, 0.06366708226580751, 0.8987689046552098, 0.9995189373375933, 0.9998037883247741, 0.1542367286583982, 0.5792121828097432, 0.3396339403571404, 0.7668931472239291, 0.06794574859062406, 0.9993793748385127, 0.6526234527442525, 0.1147474369407218, 0.4002161204933931, 0.7145594801554631, 0.046648348901296446, 0.6847499442134686, 0.10789673333333333, 0.285508132024255, 0.9149148414314636, 0.37363902976714797, 0, 0, 0.999914702112826, 0.9356230511989408, 0.9995020398165756, 0.44359384442337546, 0.8268766666666667, 0.054631066666666665, 0.19049836666666667, 0.9091053413658438, 0.04600754294037341, 0.3891135, 0.7969206930567699, 0.132034323232035, 0.38055323333333335, 0.9360347379215804, 0.9188680583744843, 0.19395243055823694, 0.20428250433427417, 0.9996112959985308, 0.6277061333333334, 0.06909823333333333, 0.27140563333333334, 0.6643134687689195, 0.856116665708888, 0.2870817666666667, 0.642409846548488, 0.8413045852176129, 0.8017087, 0.469932422343752, 0.18891848147039564, 0.9993025849667188, 0.43106094305715537, 0.09370064650255966, 0.11870884029867552, 0.23894564873685126, 0.6063327707311954, 0.9999156333333333, 0.9998797492418013, 0.277148625338717, 0.8107932333333333, 0.5168010562314099, 0, 0.6961872, 0.19040212767767725, 0.9993877327618839, 0.36982706666666665, 0.18824121754893652, 0.6193655428306416, 0.5333494980226672, 0.17214639374481477, 0.19572586666666666, 0.27463746666666666, 0.9994742866409049, 0.9998017129304211, 0.9993807877722134, 0.38538926109677674, 0.9999746845191794, 0.41413695433298525, 0.13270651298129307, 0.8265736005982427, 0.1320914364441328, 0.43305956560175785, 0.20105546950992959, 0.99951230114185, 0.9995044333333334, 0, 0.6145128666666667, 0.40406693803165455, 0.9527296225476477, 0.9830501, 0.18255166169764775, 0.04814287826668638, 0.99992, 0.16735913333333333, 0.999457063510815, 0.7095827859300264, 0.07227296666666666, 0.5024937518153143, 0.06631806189685777, 0.8933383119774038, 0.6367089592641094, 0.15393858103497204, 0.6356243320244873, 0.05736981479889826, 0.9966926691231953, 0.999932736967846, 0.5939790517570889, 0.24132138250040702, 0.6201709405017403, 0.27645916049233293, 0.12055922365289289, 0.9201368482585489, 0.9993592538570556, 0.5245354797366384, 0.07375239807057446, 0.4457827200878277, 0.3389778666666667, 0.5111850054911955, 0.3773334801087376, 0.45401158118689083, 0.025981316031167125, 0.9996868666666666, 0.35282977160530593, 0.9795917476189644, 0.5232255333333333, 0.9982753333333333, 0.2377484, 0.41521622531068253, 0.07056926586464814, 0.6553399, 0.5787017022122102, 0.9989181548327772, 0.5139253600021904, 0, 0.28129494285750894, 0.7459729467942687, 0.25447387894904877, 0.06981982824448896, 0.9998770762685758, 0.19373458752864323, 0.9866341803947543, 0.999564059404813, 0.9721662911085345, 0.07449444553451033, 0.3930673292013003, 0, 0.900194973725176, 0.4409001115067707, 0.5630900333333333, 0.11101083125661125, 0.31991516666666664, 0.9444277666666666, 0.2320317, 0, 0.5741413666666667, 0.9999462, 0.37066628896450715, 0.9207059926589265, 0.9998430198113061, 0.610441226504997, 0.04905829863938878, 0.7783120624930426, 0.09056308670361732, 0.5829317399250461, 0.6048675651874174, 0.14287152296630107, 0.7715990635336524, 0, 0, 0.999720339754896, 0.1395448348933404, 0.283759231857166, 0.7466437186230653, 0.062304033333333335, 0.18949243333333332, 0.12516869389625637, 0.9997499997666665, 0.9999262, 0.9995538977144515, 0.8811021367777994, 0.09944940848181069, 0.9999962593610742, 0.7829082882282763, 0.47559272040323886, 0.11361070583575164, 0.7361145543277239, 0.38187324407391, 0.25820293333333333, 0.07713494439346645, 0.9998136, 0.16240826666666666, 0.9105210905115512, 0.383682191436712, 0.14788614885142568, 0.9994933772324015, 0.9999121093580232, 0.9997414614996729, 0.1322741071088953, 0.020713711354979437, 0.9995904, 0.31688446666666664, 0.04460809313628091, 0.574298236011687, 0.09725582775457492, 0.5044072748935798, 0.9993940071167629, 0.9995837321677834, 0.3569719, 0.2792978009693132, 0.8878625620050579, 0.3302914120414594, 0.8551506289832415, 0.10714900591217133, 0.09741716666666667, 0.7811094, 0.13326986197977675, 0.07403147156375585, 0.999617259216976, 0.8344215854010123, 0.1391670944185124, 0.7501732921576612, 0.12862126666666668, 0.9998972333333334, 0.9126962145201456, 0.9373263415045854, 0.30073907564909924, 0.2627577659064219, 0.06596267121084602, 0.999493176350149, 0.999447825885745, 0.999907318814461, 0.10264770988770637, 0.44949812506621284, 0.8573148085094803, 0.11351261213580734, 0, 0.9994790955747237, 0.9993242222449995, 0.7330757920488276, 0.04742291656157002, 0.3528908559113969, 0.3268294312122707, 0.8364779333333333, 0.03454796942547731, 0.5548999683983113, 0.35495525693180896, 0.14374209977893826, 0.9997676059512496, 0.5266975670460079, 0.6363614907433214, 0.31336126697368755, 0.4928046385032767, 0.4364811114775588, 0.7423794926383731, 0.9813270333333334, 0.07355363333333333, 0.041938979919441996, 0.9984313318169541, 0.2024666, 0, 0.8933772333333333, 0.4803758, 0.8071330654384006, 0.545675561741557, 0.2585845240403581, 0.15392515428487374, 0.9997552887455868, 0.683432552925334, 0.12318659917341282, 0.8483964308364457, 0.3553249, 0.032383322314239855, 0.7116176584437929, 0.940959537147515, 0.8145243262900967, 0.09615586089561673, 0.1921738, 0.3613125884092483, 0.9995206662192885, 0.9998487187993784, 0.053555660872350364, 0.9997801515669598, 0.23519703305826034, 0.9998065883185072, 0.13303153333333334, 0.5804083312645202, 0.9999030893601599, 0.9995495394392924, 0.10735101014385572, 0.9250703180340377, 0.1698654113926009, 0.2897870536649833, 0.2283498420077277, 0.7106718333333333, 0.9993401666666667, 0, 0.4730585666666667, 0.1798310717081897, 0.9881552222782075, 0.2330416, 0.8544923451083316, 0.38649656706534935, 0.5660222678994627, 0.6520460722208705, 0.39825642595393196, 0.4930453426215133, 0.07791387378868354, 0.5307902013624386, 0.06480469687116604, 0.9998048324030344, 0.5412961558745545, 0.47374646702152867, 0.20531148361170976, 0.43413232754885034, 0.7107907181351952, 0.3198986946053284, 0.05183491048856097, 0.9999899, 0.4794378289600205, 0.9042957408192162, 0.8326910333333334, 0.13891691903810738, 0.7029974979825618, 0.6985286268890359, 0.7357764496793244, 0.05541416127630373, 0.21424943038817848, 0.4312069033176503, 0.9995191410040597, 0.999563809174547, 0.2814701480959311, 0.38240019316945706, 0.33717026666666666, 0.3772448, 0.06306886666666667, 0.5597500626027982, 0.16574952078119962, 0.7732677434436247, 0.15295001648052034, 0.8968671186917315, 0.27772295758394616, 0.2527404425459986, 0.5790793100300446, 0.5641028818094909, 0.1387674559470795, 0.9999192442841368, 0.9995306190650071, 0.6258624596617641, 0.04753223378923298, 0.3237847993095219, 0.6134408438553671, 0.08824761101625218, 0.5028370080187208, 0.9998404, 0.5498298, 0.9999107666666667, 0.9995177666666667, 0.10358866666666666, 0.5961333241910726, 0.3886740627624586, 0.03376727192382074, 0.887224415951019, 0.39759036908377826, 0.6443075588714168, 0.5342682333333333, 0.019697801569899673, 0.9999049665779688, 0.5021911333333333, 0.03767298767246216, 0.3879047492642137, 0.5944494878927655, 0.12096374622850915, 0.8895244108879558, 0.5920498769744447, 0.9996017202003831, 0.3303941, 0.18919713333333332, 0.17181733333333332, 0.5963158357469402, 0.7354202197255384, 0.0713444, 0.4391009821090295, 0.9318164030286429, 0.9996731521951568, 0.23220876666666668, 0.13285136666666666, 0.47957436666666664, 0.0595156170000005, 0.9507075111088519, 0.5666768395206049, 0.433844486734137, 0.3441660013464419, 0.20677096922048682, 0.8895090329293243, 0.9995750806563576, 0.28713214254446373, 0.4010476236538671, 0.08044892719760526, 0.22377842219195343, 0.999891150797165, 0.6853727498494548, 0.2063961465964054, 0.6076941216760092, 0.8089985199446773, 0.877757811681771, 0.2792038339600541, 0.44658828788594956, 0.4026224500288941, 0.5275194754324241, 0.28134296154321303, 0.9997579977336232, 0.3147525830891319, 0.9998639049341699, 0.9409137107307417, 0.04273285802851208, 0.0862791302252187, 0.1784274233651436, 0.9999907154038498, 0.16978032255251072, 0.2736198, 0.8384308, 0.048061033333333336, 0.1205921, 0.10745799940308377, 0.9999541332905244, 0.9995900332831967, 0.9150915386739235, 0.9127737578446752, 0.3581032812926303, 0.7727945568026288, 0, 0.9680333297398106, 0.04322029981038915, 0.011556273118935841, 0.9998220851836903, 0.2958520290580084, 0.9996141779709649, 0.30837019279580746, 0.5823539663081629, 0.5691160552148672, 0.6747281541010841, 0.41322063814776006, 0.9997028496934607, 0.11840003333333333, 0.5921316333333333, 0.9998824852468435, 0.5552531182362437, 0.1099856, 0.7120130192866666, 0.29828366666666667, 0.9993059666666667, 0.9669847, 0.1426980780065067, 0.12660684500190003, 0.3601967803462291, 0.16583838789951402, 0.4507175303889836, 0.3657269304220447, 0.999987954869666, 0.9993684653708512, 0.6458169040321496, 0.7730621580436562, 0.10401754254842085, 0.201219065589452, 0.9998465492653433, 0.3004635342048352, 0.49989823326949945, 0.34270516897516085, 0.9999007022678621, 0.6619294827335946, 0.06258407940669695, 0.07279356297457969, 0.8597976029942153, 0.10364080705694736, 0.9012802250851747, 0.9999993988408249, 0.9949949042075941, 0.02397935677585349, 0.17261103694776958, 0.9997439069993901, 0, 0.2862117962446751, 0.6212929449532488, 0.04173106052433705, 0.8263615861279451, 0.2256255753229008, 0.8820772, 0.3299496, 0.6343204333333333, 0.02837674322309068, 0.7764903943491291, 0.47257506558281476, 0.61686046739032, 0.5992031367951396, 0.24684803359512217, 0.10422500421145808, 0.9022127645547949, 0.4611825055127474, 0.7053047254150361, 0.276827015575386, 0.10513889712236522, 0.4928187470777644, 0.909697685045567, 0.9773815635592927, 0.38162352587003345, 0.30829922747665506, 0.1551644, 0.4384941333333333, 0.3495417274969007, 0.8548505311938291, 0.18261663333333333, 0.2758841, 0.9993675, 0.06353270635442176, 0.6895244102227829, 0.9220458333333333, 0.999303119496188, 0.20287475601643895, 0.9040350339767099, 0.08170717411103885, 0.5313693584469712, 0.07772458688632951, 0.4658280676208901, 0, 0.9998121825554864, 0.9994185972674071, 0.8787538999933401, 0, 0, 0.9996395642998056, 0.8848960785049089, 0.8953142256194391, 0.5992853500940042, 0.11448836933486037, 0.9796738, 0.1141393, 0.4113321992258774, 0.12344280191218605, 0.9189416099913673, 0, 0.5505127328996013, 0.999870416800021, 0.2988312321296255, 0.7329037267728994, 0.39376789791749217, 0, 0.47975965196681225, 0.9193049779372654, 0.9996168588256067, 0.11297954799447452, 0.7218804666666667, 0.057642566666666666, 0.5047349737018199, 0.40044940708611326, 0.16017296666666667, 0.6060923158130581, 0.9980236420174609, 0.9305674135774604, 0.21364736196491949, 0.9996859004746926, 0.39440266962135734, 0.1292154, 0.054997571795524995, 0.9994561383457935, 0.6864951261025944, 0.4082972424314273, 0.194407, 0.4674021817695021, 0.4611810124749787, 0.06248654518169693, 0.9168246891787891, 0.8758381492398212, 0.2574478865035613, 0.6148811479296156, 0.9998992329470596, 0.42463703333333336, 0.9993542666666667, 0.5546253249631599, 0.02739359223401942, 0.5216224178052434, 0.024018111500474802, 0.44373700416030365, 0.4396205225263149, 0.9995900652038563, 0.9331656789190522, 0.5428579636617776, 0.020418736325755, 0.0007020573556789051, 0.9998328061684437, 0.4913949481180415, 0.9957757719792875, 0.45245083333333336, 0.9997051666666666, 0.3326229, 0.9998787517322668, 0.5424770845260722, 0.04454920742984527, 0.18035093333333332, 0.9999700040422806, 0.1541938967660805, 0.4989019970385395, 0.41005681855944026, 0.9995658192986165, 0.9995676666666666, 0.1243869, 0.3232220596746056, 0.23740322157634014, 0.22507246014363255, 0.9269436611929562, 0.10824243773441268, 0.24164078464888983, 0.24600816666666667, 0.9095489666666666, 0.1504908876851579, 0.9999841666518888, 0.123662, 0.06188303333333333, 0.9999364045657251, 0.3805134884792559, 0.8704014593997993, 0.831650519080969, 0.6691170084438278, 0.764546540730314, 0.999914382821764, 0.2514299119538816, 0.13497968275034408, 0.07436544951761273, 0.9995093767876377, 0.9995181333333333, 0.7231178245556786, 0.049909059144053136, 0.28476618278479937, 0.05779187647123196, 0.6337905, 0.9297190626686375, 0.901686368226032, 0.14616581037978085, 0.2529248666666667, 0.36731193333333334, 0.4083035582420433, 0.8089966486967604, 0.2545075666666667, 0.4857352538086775, 0.16037928302066415, 0.9997616336794795, 0.3280801405144247, 0.9403455556487171, 0.06582351475960595, 0.34350850933347393, 0.40049884187897106, 0.3978506664132627, 0.1327282610238525, 0.9997125512790668, 0.9996839648758009, 0.5912638, 0.902606395144859, 0.4659244823177831, 0.1619300486089288, 0.25015805868861885, 0.843444359294467, 0.6253063277208222, 0.30559385510189163, 0.12468044195198667, 0.24441190513766997, 0, 0.9997963757695122, 0.9918428266727288, 0.15617429848887276, 0.9995895331145181, 0.7699329136114419, 0.9997461900339271, 0.05172962624634899, 0.9098001771136245, 0.22960427534867864, 0.22738749443537296, 0.3980443063668422, 0.6574195727516758, 0.037768551790345266, 0.42529443333333333, 0.4909945771287671, 0.9993843333333333, 0.9993027475337, 0.17116498266270982, 0.7862203491753678, 0.18323523333333333, 0.4543100003820397, 0.1970202172188694, 0.7999929666666666, 0.6317209421666924, 0.5510516562364173, 0.08851645521776019, 0.9995275439442413, 0.4644196369868158, 0.17790097664946639, 0.10601073333333333, 0.8797490082398796, 0.6168224423676129, 0.30719823333333335, 0.17837054550435166, 0.2846372976474944, 0.9989391964332069, 0.638873047192123, 0.10805668795192205, 0.13762386118840209, 0.9360103, 0.07162230584832756, 0.03929029727964301, 0.9994235365261698, 0.9993602505479953, 0.9998427461375792, 0.18390669386585576, 0.7595983252798348, 0.17094518292502844, 0.07710541977634008, 0.9999338706598279, 0.38352126997151403, 0.032113549713900034, 0.7653321091976539, 0.999755031708377, 0.3395209610408313, 0.09467488303994834, 0.19355263536337325, 0.9993398943891023, 0.3600797118495051, 0.2084914667695032, 0.2595237, 0.9997061203068537, 0.531180613474593, 0.2781605, 0.9993814292990438, 0.729152913876053, 0.038208079183529954, 0.9494813723652284, 0.15357486666666667, 0.17238556666666666, 0.4889518, 0.9999238, 0.4667965, 0.9995941666666667, 0.8104693666666667, 0.4035839666666667, 0.04958566666666667, 0.9993630446797965, 0, 0.9995593102479925, 0.9983055243133301, 0.9128888705537288, 0.08165385131111974, 0.08492061342415824, 0.9999400593335708, 0.675608682168117, 0.06675041036628195, 0.6456948345942691, 0.021568609442382595, 0.280728613079995, 0.7766699098152647, 0.22111737765434872, 0.19464300194629175, 0.9763037023806049, 0.45088080339446535, 0.6879579518471318, 0.20275803146153185, 0.0301118479915781, 0.5844131666666667, 0.37196046666666666, 0.9994544333333333, 0.5437823666666667, 0.3252396368279708, 0.6560574, 0.2273713281018915, 0.11430232576003864, 0.4205382419213565, 0.9993871883485352, 0.10465312898508, 0.9995611815427191, 0.6083517786396256, 0.9500220276928337, 0.6633963880352134, 0.3392112571471152, 0.24847207444616867, 0.7065446552684569, 0.29611471159071295, 0.6647655591160393, 0.9995490633864184, 0.8808051539064139, 0.1784011045853303, 0.29547059277985455, 0.1332040782480012, 0.5163959986444528, 0.4008244261727984, 0.8632439666666667, 0.42448752126881434, 0.2465891, 0.2904981, 0.9899118489204708, 0.4244860250199072, 0.10091407347635402, 0.4515402245930934, 0.7701010262065258, 0.22533517929418065, 0.400833, 0.9999914666666667, 0, 0.4823518162354126, 0.2568914399362176, 0.9994299341132884, 0.6041194782962301, 0.11977527045175553, 0.6994853699283283, 0.9999430234692877, 0.999441300557545, 0.2657248942752059, 0.5145439493511206, 0.7145246333333334, 0.9998253961660228, 0.7106096240267418, 0.06514372062235475, 0.45914074720096915, 0.1991712152429386, 0.5046981134543234, 0.5775208339421467, 0.2951619419122867, 0.3159291749004754, 0.9996268100961532, 0.6329951013071274, 0.364502510200756, 0.6351016333333334, 0.1109176, 0.11942538555566178, 0.999445332815644, 0.23504176666666668, 0.9994475333333334, 0.9974086361999159, 0.28908373647815405], 'oldestBlock': '0xd1231f'}}), - (('0x400', '0xd1231d', []), {'jsonrpc': '2.0', 'id': 13, 'result': {'baseFeePerGas': ['0x22d0b84596', '0x2049c3d3e5', '0x1f997c9826', '0x1dfacbc934', '0x1dbe40e7e2', '0x1ee609699c', '0x1bd2f0db58', '0x1cc19025dc', '0x1c2c116d4f', '0x19234c3580', '0x1c46e2c0db', '0x1f5648da2d', '0x1e1e9ec321', '0x21e1e7bbf9', '0x261dd52f24', '0x23be1055c3', '0x207627cb1d', '0x2484280aae', '0x279ef0e1ad', '0x256d0dc5d2', '0x2426046bb1', '0x1fa143de3b', '0x2394a779fa', '0x2805ae7f0f', '0x24894794ba', '0x23fa96f5ae', '0x27d75d7ca3', '0x2732755146', '0x27f18211e1', '0x23a8d38063', '0x1f9d621024', '0x238faf381c', '0x241158b835', '0x243fb3a9c9', '0x22ca86b8f9', '0x2344685f94', '0x23c87254ba', '0x28096f24b2', '0x26b1d50606', '0x23eff7df6d', '0x1fd45a0f5d', '0x2213df96a9', '0x1f5306fa90', '0x1edbba980e', '0x22b5e24fbd', '0x270c335f70', '0x269e77b146', '0x2424c1340f', '0x26b0c90d12', '0x21daafeb70', '0x2494c3734e', '0x2925e454dc', '0x2c23f7f2eb', '0x2763b307b5', '0x2c4e886c35', '0x28ef921770', '0x2e0c587032', '0x2cc6b17cdb', '0x2c4581ad6b', '0x2e700c18af', '0x343ce8f0cb', '0x34159decb1', '0x2fa158e01e', '0x2c868842bc', '0x2b56dab869', '0x280e7a00b5', '0x2c4507956f', '0x2cc5cb3ec8', '0x2987f5e154', '0x2e399a928f', '0x340096b55c', '0x2f1327a15c', '0x2bf57145df', '0x2ec7a836c0', '0x2bb093b11b', '0x28fb723a0d', '0x24e1acf22b', '0x297c9743be', '0x279ca0e53a', '0x2556863aa9', '0x21385dd8e2', '0x24c226a8c3', '0x29596ee337', '0x28ac2607d4', '0x25ea37b87c', '0x23a3725730', '0x22fe14669a', '0x261c9a34ea', '0x251d917b9e', '0x29c11b97c3', '0x2ef8512de9', '0x2afb5a42d4', '0x290ba6fb29', '0x2c9e072381', '0x2b9dc1ec2c', '0x284bfc9430', '0x241b2edaf0', '0x202885378e', '0x241e82211a', '0x223a18ce1a', '0x22943f8671', '0x2038be18e1', '0x1e7f0ae534', '0x1ccab9c90a', '0x1f38b218df', '0x231f31e689', '0x2782af4cce', '0x25194589e0', '0x293d225cf0', '0x2899a6894f', '0x2daba5b276', '0x2c8250ff25', '0x297ecf0b6b', '0x25a4c16a18', '0x2a57e09e0e', '0x2991962ea1', '0x253f86f912', '0x23159f80a1', '0x24c373ba81', '0x295bd75a0d', '0x2961dc4fb3', '0x2bb7202771', '0x272a4f751e', '0x27184990a6', '0x22fe5bd156', '0x258f154312', '0x2790374ed2', '0x2b381cef54', '0x2619657ef9', '0x2adc56146d', '0x290dd59aff', '0x278557cdf1', '0x246e3d5b8b', '0x266c140a78', '0x27a75c5725', '0x2440b456ff', '0x2122cf3706', '0x25466d98ef', '0x226dad38ae', '0x26ba100221', '0x2b9044ccb4', '0x2d05ebc5a7', '0x295a1540ec', '0x26794665fc', '0x22b10ecfad', '0x258c80b056', '0x242c26b256', '0x248c6f5824', '0x27418358f6', '0x23083fd385', '0x2535065c7b', '0x22034c001d', '0x2064e33b00', '0x1ea52afcce', '0x2278d9290f', '0x26c7bb7def', '0x2a27189201', '0x26250eec0b', '0x25fe6d6ce0', '0x273fa1c606', '0x2404df87f7', '0x242f5acefa', '0x233a50295b', '0x1ffb35e2ed', '0x23f9ae7796', '0x224fff1fe0', '0x26991a93c8', '0x2b6b460d26', '0x29434f342b', '0x2765725417', '0x2907ac80df', '0x286359ad2a', '0x2820b92242', '0x23e1b98ec4', '0x285d87d3f1', '0x2d68c5af48', '0x2dfac524f1', '0x283b6c8053', '0x29a44c1d1d', '0x250d9a29e8', '0x26084c1a22', '0x2a2d5cb390', '0x26608d441d', '0x249160ab72', '0x2192000315', '0x2020285e07', '0x1db85c3c06', '0x216e95dcbf', '0x2367b76fc7', '0x220b039dc1', '0x20a1566783', '0x1d066f78bc', '0x1ecf2a5db0', '0x1bedb2fe92', '0x1f6addd9d5', '0x1ff7d78b60', '0x1d6ac0fced', '0x1cb7ece81a', '0x204db7b453', '0x2456ae4795', '0x25766ffb24', '0x21f0c4cdf2', '0x262e02963d', '0x2851fd2912', '0x2d5c20fe6d', '0x2a28c0f87a', '0x2f6d397076', '0x2b2d7a60fa', '0x25c7cb14db', '0x2617dca3ac', '0x27c70f7d24', '0x250fb838ff', '0x27b1565cea', '0x22bb2b914d', '0x26883df987', '0x22e7956219', '0x274415a320', '0x23b3283e91', '0x2829512a85', '0x25f3b30cb6', '0x2670215ed7', '0x2341755ad7', '0x22c3200973', '0x1fc63b9aef', '0x1d3427d125', '0x20d9dcbae4', '0x24f4ee780f', '0x20eabedff4', '0x1f421d494a', '0x2329bbc5af', '0x278e528aa4', '0x2c7fe93193', '0x27c2048e73', '0x296f6cb036', '0x24417f1a30', '0x26e942d611', '0x228def4c9a', '0x205d2699bf', '0x2467c98c91', '0x2186b5eca7', '0x1d55df2f13', '0x1ec551444e', '0x1bd894474a', '0x1e82fab430', '0x1c4d694e70', '0x1d9b5d0203', '0x214e48cc8e', '0x23f08026ce', '0x2071eb05ab', '0x1d6792d6bb', '0x1e5c168ced', '0x1b1ffd1be6', '0x1e83f4dbbd', '0x1d538d93e0', '0x1b588a428e', '0x1dc1616050', '0x217892b4f7', '0x217a3e2c41', '0x1fe820382d', '0x1fbb7faf6a', '0x1ec772bf93', '0x1bea49d3fa', '0x1f30cc4a21', '0x1fd3a452cc', '0x1d7b2f1544', '0x1a50f14b23', '0x1706d321bf', '0x19e77e279c', '0x1d2461106f', '0x20c87bb849', '0x20314b9baf', '0x1c4d97f75f', '0x1b99f951e5', '0x1e7ccc25d2', '0x21ba7cd414', '0x21f86e5c82', '0x2282ac5fc3', '0x1e4c74a6ea', '0x1b63a69993', '0x1d0957a94f', '0x1b6d4a7e9b', '0x1a215cd6b0', '0x1bef512728', '0x1b63b86bfd', '0x1bc28b754b', '0x19152e2356', '0x184c8b34d0', '0x17bc58e893', '0x15e660ca8f', '0x18a30534ba', '0x1b48170a52', '0x1bb9401d04', '0x1f2fb704dc', '0x1dc95c4292', '0x1ab05d5b2c', '0x1bdc90fda8', '0x19f2e371c7', '0x1d304ab24c', '0x1d819e615d', '0x1d7b37f13d', '0x1edc54fed8', '0x1bb1642a12', '0x196d8019c6', '0x1c24c0a360', '0x1c7660d42b', '0x19de419362', '0x1924c55a64', '0x170e141434', '0x19efa3310f', '0x1c95c8320d', '0x1b3ed6f9c3', '0x1b434e0e60', '0x1ccba9eec4', '0x1934cbc8e8', '0x18a61d3222', '0x1bbab6cd8b', '0x1f3150c9ba', '0x1c839184cd', '0x1a6ed0bfd0', '0x1833415d03', '0x19017de80a', '0x198fcc406d', '0x18f6255de7', '0x18ea05ecbd', '0x171edeadb7', '0x195511d151', '0x1c7ece26d7', '0x1cbc4bad3e', '0x1f383f96e2', '0x1c34be9246', '0x1b6dff8b58', '0x1eb88e87f3', '0x1c12efc83c', '0x1ca1b37032', '0x195a1b24d0', '0x1740921471', '0x1644695134', '0x18926a5998', '0x1ba3f31a4f', '0x1f174aad14', '0x1b47ef0ff1', '0x185be62727', '0x1b67082eee', '0x1be38d5889', '0x1d0ab2b6d6', '0x207ae13c9e', '0x1dcee1637e', '0x1a51182b83', '0x1d9a711239', '0x20967cb810', '0x1e9bcd2fd0', '0x209e2bca91', '0x236b03fdda', '0x20f90ab21f', '0x1d240caeb2', '0x203155e767', '0x1d9ddab6a2', '0x207c7b5191', '0x1dfe6b96e3', '0x1e2102cae6', '0x1b305d21ee', '0x1aa3d95450', '0x183aceb8f1', '0x17ba1fb27d', '0x18c80b29f3', '0x1993101d50', '0x19563a773e', '0x1728974c10', '0x1a0d5bd4ea', '0x180058d023', '0x15684815c3', '0x1814c50fa0', '0x15122c6dac', '0x165bd4cd77', '0x1926cc1010', '0x1bc718b9cf', '0x1b2b7d91b2', '0x1c3fed2f6d', '0x18b7ef8980', '0x1b29a33ff3', '0x1a0d8feefe', '0x195dc3eed7', '0x1c88b924ef', '0x201960cdb1', '0x1d7ab4e3cb', '0x1af2f61d06', '0x1e507b9c42', '0x21a2cbcca2', '0x226f20ed80', '0x2012a7d7db', '0x200f41c85c', '0x209964973a', '0x1c9e006215', '0x2030f12715', '0x1d3125f192', '0x1d6a856dfd', '0x1b997a4243', '0x1dbadcef22', '0x1c72dde16c', '0x1ae17b74f5', '0x1e3d7c004c', '0x1bd9597552', '0x1f5455ac9f', '0x20ffa4595f', '0x1f0c04b62a', '0x20ac2e1e49', '0x1cffcd9433', '0x1a2f3ae3a5', '0x1aadfd19a2', '0x1b78a44ccd', '0x1af684365d', '0x1e544784f1', '0x221d9d54ba', '0x25eef02c5d', '0x239f18f579', '0x23a36a66e7', '0x22c6aaa6da', '0x223ef319ae', '0x21d95fe82f', '0x23faddebc7', '0x208bb4cd40', '0x249c31394c', '0x2447a43a6d', '0x203297b252', '0x214af0cb5f', '0x1ee660ca6d', '0x20e2fc885a', '0x1cc69cf74f', '0x205ea7c680', '0x1f40887596', '0x1f6d9d233f', '0x1c04a4b348', '0x1db11e2f84', '0x1af8e87634', '0x1e57ce83fb', '0x21a81419a7', '0x1eab10946e', '0x1cfd9c9893', '0x1bb58447e3', '0x19659c526d', '0x1c9207b5bf', '0x196cacad5a', '0x1c7604e964', '0x1adcdd1e32', '0x188ca122fb', '0x188473589e', '0x186dc9c054', '0x1b7a3060ca', '0x1c84366e83', '0x1fd9b8cb9f', '0x1d5535c00b', '0x1ce79027b7', '0x1b00132ece', '0x1a79ac8173', '0x1838747d0c', '0x18b0a4e6c5', '0x16f521969a', '0x18ae220f76', '0x16824dbbb7', '0x15a7e240bd', '0x1641f05926', '0x13ea04a69b', '0x1666908533', '0x18a5cd7e20', '0x1b509c71d0', '0x1c44e6427b', '0x1bc859912d', '0x187c3c3e63', '0x1b7976815b', '0x1ee814b316', '0x22514879f3', '0x1e62c42a24', '0x1e3e0ad582', '0x1d38624fd1', '0x20dd800b2c', '0x1e8b8b6a93', '0x1c4172e15e', '0x19635e3bad', '0x1c8ef3c744', '0x1b2c374d0e', '0x1e909d3097', '0x1af3d4bfc9', '0x1d902eac09', '0x1bc4ff8b67', '0x19323d9c58', '0x1b84b8d9a8', '0x187d6eae4f', '0x19f0627573', '0x1a5dbd6cca', '0x1a7de82452', '0x176c3340d1', '0x1a58d5253c', '0x18fcfae4e3', '0x17e49ae41c', '0x1a325fd36f', '0x1bd193c66c', '0x1ab2c9b5e0', '0x19088a3a5b', '0x1bbba0ed18', '0x1f14715911', '0x1c55ed0f1b', '0x19f9cca6c3', '0x1c1fdccdcd', '0x1a801ddd0c', '0x1877ab0db9', '0x17743b5c4e', '0x18b4614304', '0x1af019f1e5', '0x17bad21041', '0x15bafead3a', '0x16490d3693', '0x15ee020874', '0x18ab28eeca', '0x1595c3d0f1', '0x17ea6f9365', '0x1a7b48acf4', '0x172bdf9756', '0x195c57eabe', '0x1773f8571a', '0x1a61e25387', '0x1dadd871d5', '0x1a72bc2d89', '0x1d03b26e20', '0x1fb25b68a5', '0x1ed5ccbe0a', '0x22b07079f8', '0x2199696b9c', '0x23288d7ea4', '0x20613a314f', '0x2233c7a39a', '0x1f5c8da19c', '0x2247b2e412', '0x21b242533b', '0x22730fdd35', '0x1e9778db50', '0x1d7b7da1df', '0x1dafae0503', '0x1a90eb50d4', '0x1de2d67ca0', '0x1b51f6ee45', '0x1afc9ce8f6', '0x1847537ad3', '0x1b4f417821', '0x1c4a6f7b7e', '0x1e263ae4c2', '0x1d06e02fb9', '0x19e7a9504a', '0x1c646bdfb6', '0x1d4254e3fc', '0x199a0a477d', '0x1acb175c43', '0x18fed0b080', '0x1632ed1b83', '0x16509edaaf', '0x1919b9c32c', '0x1c1c63beca', '0x1c74cf52e9', '0x19bfa828e2', '0x1cf718cb95', '0x1fbc51c62b', '0x1c28174fb1', '0x1995ce0ea0', '0x1bffe0b2f1', '0x1da5afe81b', '0x1a374b3a9a', '0x1d7e1fdb9b', '0x212ce6c195', '0x1ec2cd0abe', '0x21646c80b1', '0x1f277faffc', '0x209973d65e', '0x21cf97ed9a', '0x24b4839a51', '0x253fb49ac4', '0x25b3912880', '0x219af40f00', '0x1ea57b714e', '0x1dac9f08ad', '0x209b5bb508', '0x1f3207419d', '0x1fd9ce82aa', '0x1c37c54866', '0x1c064459a0', '0x19fbc1ab31', '0x1b26d9fea8', '0x1936f96e8b', '0x1877a8267c', '0x179078469b', '0x17f7edf8ff', '0x1587b3a10e', '0x15f3c4ed25', '0x1695a7af2b', '0x143c359580', '0x16c2ee7d6f', '0x1826cf78d5', '0x18fa87009b', '0x18cd303ca7', '0x16f3a3f79e', '0x16b7230b1b', '0x145dfe17d4', '0x158cd02550', '0x1561cffd88', '0x17719da71e', '0x1a5ecafa0a', '0x1b74f641b9', '0x19a0fb0932', '0x189124dc0f', '0x16ae9056dc', '0x1814b57459', '0x16d5f9c851', '0x147b234e45', '0x1709faf579', '0x19eb166b28', '0x1c7273bdc2', '0x19d541d400', '0x1a72d31be4', '0x18f986028b', '0x1a60f825d8', '0x17696a752f', '0x1a55cc7924', '0x1b6a9dff4c', '0x1b44747106', '0x19d610c410', '0x1a08f84d58', '0x17ca0f558e', '0x194be5c3fe', '0x17acb94ec7', '0x14f9b5dc54', '0x159fc7da9b', '0x133a01d369', '0x15a06d940c', '0x13f4107304', '0x160aee635f', '0x13e1e7795d', '0x15eb670b7a', '0x142add6e31', '0x124090c8d5', '0x14889511d4', '0x1719639423', '0x19fc01895c', '0x1c641c52f1', '0x195fa1d274', '0x1a594d399b', '0x197041dcf2', '0x18f7a08d30', '0x1a044fe576', '0x18ce907497', '0x1aa3403c57', '0x17a3b4a0f1', '0x14af3e0cd3', '0x17449977de', '0x193bb8ef8e', '0x175cf02708', '0x18c2c6f0e2', '0x17a776ca71', '0x15f0fa3f8a', '0x1630ee90af', '0x18f6a5f8a1', '0x1c149882ae', '0x1b99b98b52', '0x1ba15fd4e9', '0x19d6888074', '0x1c867632af', '0x19aa735eaf', '0x17076366bc', '0x194d66d815', '0x169246b2e3', '0x1692689b63', '0x18606c5a42', '0x19692bfdfc', '0x1c95ee4ea6', '0x2027d8bac4', '0x1d5a944429', '0x1eca62ed08', '0x1ba5e8ea21', '0x1a150c9b38', '0x1cd368ce34', '0x1b4c80862b', '0x18a38f67ed', '0x180949abb3', '0x1b0a66a2c8', '0x19e893e66b', '0x19fe2d2473', '0x1a7340c9a1', '0x1b092421bb', '0x19b9beb113', '0x172a31c141', '0x18c870b903', '0x165cd0c307', '0x16531529d3', '0x162175b3c3', '0x18e51cdad0', '0x1715191e05', '0x15efe3535a', '0x155a0994c4', '0x13e3796e7a', '0x165f69f636', '0x15049d6072', '0x17a4a076bd', '0x1a98ae8e97', '0x1deb7624da', '0x1af6e9d2a5', '0x1854e336f0', '0x1b5ed1ecd6', '0x18ca3cb843', '0x198096b21d', '0x16fb6f5bb9', '0x19da859bfb', '0x179785f5a8', '0x16fe43824e', '0x1635b92b61', '0x17dd6f3ef4', '0x179e93e35a', '0x1a91acc72c', '0x173f772e47', '0x152e1601c4', '0x17d3545bbd', '0x1acd1cb5a0', '0x1c6b6fbae8', '0x198a85acec', '0x1cbb413929', '0x19f1f2a971', '0x1a6513780f', '0x17e2c3cc78', '0x1ade83f911', '0x1e39c8bbbc', '0x203f48f5e6', '0x1da7a0aa4f', '0x1b1a1ade1d', '0x1e7d5c8620', '0x20c69baf14', '0x1eb510271a', '0x1cd942e6e0', '0x1ad02d87be', '0x1c090b46af', '0x1b94bc55b0', '0x1b9a57b952', '0x1ad00c4330', '0x1aa30b8f7d', '0x177811d056', '0x1a667c1647', '0x1719ac937f', '0x1745743f3e', '0x14d616050f', '0x1770b9c083', '0x1545bed7a4', '0x12fcfb05a1', '0x155c3e0dd7', '0x158634a2fb', '0x1739df8605', '0x179e919342', '0x178a87ba38', '0x178dfb327e', '0x1537bc27ff', '0x13e49af749', '0x163dc09cbc', '0x1904a9e761', '0x1a175c4e12', '0x1d599a337a', '0x1b050e00bb', '0x191e82c7cf', '0x198f3dae9f', '0x1cc0b132ba', '0x1de15bd292', '0x1ada089965', '0x1e35465861', '0x1caa695779', '0x1b9f70349f', '0x192a0f194a', '0x1b8cf00d58', '0x188ff6a32a', '0x16facb9146', '0x19d93cf9cd', '0x1ba860bbad', '0x1a8d26e328', '0x19d6fdcbf6', '0x19b1278843', '0x19c57be9c2', '0x17a8c25a5f', '0x1562ab82e5', '0x180e21b1ce', '0x150c5d7b95', '0x17add91ce3', '0x1aa383c2cb', '0x1d3334f9b4', '0x1ab5240849', '0x1bfe4ae6f0', '0x19f60d863c', '0x1b687ac445', '0x1e171e2131', '0x21d97f855c', '0x1f175386d5', '0x22a2f6a482', '0x210ee04353', '0x22d1e2f649', '0x1f105b6c91', '0x1edfc56db9', '0x1dca53bdbe', '0x1e23cee443', '0x1c5276be9b', '0x1efa8333bb', '0x1c8dd3786b', '0x201ef7a0db', '0x1e39cf2caf', '0x1dd91b808b', '0x1ccbafa90e', '0x1aa3bf4a22', '0x1df7dd2be8', '0x1d39e8d3e2', '0x1da1f34d7d', '0x1b4704db98', '0x1d2980a818', '0x1d6bdc4252', '0x2118e509a5', '0x20aabd918a', '0x1d3a28d7bc', '0x1d813218fd', '0x1cda537eaa', '0x1da5645f1f', '0x1c5807fb1c', '0x1adfc9f2a1', '0x1e3abd09fb', '0x1c59fc192f', '0x1ab0556c1a', '0x181d2f46fb', '0x1b20abad7d', '0x1b4fee098e', '0x19ea78b8e9', '0x1c804e5ee0', '0x1c991cd0ef', '0x1de9fe5c6d', '0x1aa190af50', '0x1df4c5be8d', '0x21b2762a83', '0x20d204ed1f', '0x1da0d0bad6', '0x1cc878d14f', '0x19950e18c3', '0x1cc757de07', '0x1e837ae0ec', '0x1d5f97f02e', '0x1b16e38ffd', '0x1b962d4adc', '0x1bd5067eb1', '0x19234ba9a2', '0x1937f264bc', '0x176efbac29', '0x1a5c143451', '0x1da689a7f6', '0x1ce4d9332a', '0x1aec63d67a', '0x1946e4d033', '0x177167e27d', '0x176c56188f', '0x15d9019c59', '0x166e71bcf1', '0x16fd592dca', '0x145a02af4a', '0x1457d7841f', '0x16e2ae6a21', '0x179fb93c02', '0x1620688795', '0x18e3d11db2', '0x1c00230946', '0x1ca5880bca', '0x1ae5e66213', '0x1b2de4bdf6', '0x18931ee0dd', '0x192f0f408d', '0x17a594d801', '0x19d1954232', '0x192176b884', '0x19f2ae277f', '0x1795a14761', '0x17114461ef', '0x167ffbd28b', '0x14ce11de48', '0x13f43e24a6', '0x12029aea7d', '0x14425acf0a', '0x159a6e1a4d', '0x12fa827440', '0x1559c1f54b', '0x1804aadc55', '0x18ae8d7eca', '0x167367fd7b', '0x17fd675bb7', '0x17c0ae6ba8', '0x15be33903c', '0x18753cefca', '0x1b830459f2', '0x1ab4459624', '0x19c6e6e986', '0x190ab1b093', '0x162a372b5f', '0x179c051478', '0x15a3bd9659', '0x179fdae345', '0x1a93a5bff1', '0x193fa79587', '0x1c668b7749', '0x1cf4dd7a75', '0x1f226b993f', '0x1bf3a9aeaf', '0x1a5d6a6b12', '0x198065410e', '0x1825bc5768', '0x163c45adf1', '0x18745846c3', '0x15e14662f2', '0x164b8e65ab', '0x1914a76b47', '0x1b12cc4767', '0x18320b87e8', '0x16f004ce41', '0x1439678aaa', '0x1691b4480a', '0x15482d993c', '0x1334c186a9', '0x1199e7192a', '0x128f5849a9', '0x13df720b0f', '0x15d940e8ee', '0x131e18cbd1', '0x111bc43f95', '0x133ecb86ba', '0x15a6a2e4fb', '0x185ae49947', '0x181b302092', '0x17db8f1583', '0x1ad6954b42', '0x1c1fcac44b', '0x19f4d8d98d', '0x1d3254ec58', '0x1b51372d7d', '0x1c266b1eab', '0x1bb0baa633', '0x1f25d23432', '0x21d395ea08', '0x1e647c8965', '0x1c882d776a', '0x18f727c87d', '0x1bf1525fe2', '0x1f6e621c03', '0x1fe92e8d4f', '0x2316e63907', '0x220ff30630', '0x20eee930a1', '0x1d92b792cb', '0x208a01ab44', '0x1f51336e78', '0x222ce325fb', '0x1ef6e76afe', '0x1bec17ffc7', '0x1d700d9e71', '0x1e237a7438', '0x1ed7d6b518', '0x1c874ef220', '0x1fcf1e9d66', '0x231973cd5a', '0x1eb64553af', '0x1fe3731f42', '0x1c68f97a31', '0x1be6d565b1', '0x1e1a155cbe', '0x21dc4116dc', '0x214e9ecefc', '0x23f2c858f7', '0x207e500de9', '0x1d6c4e4ea5', '0x1f390fd935', '0x1dfda488a1', '0x1e936dd4c4', '0x21aad38293', '0x241fa81638', '0x216436d986', '0x1f13f5d12b', '0x22f5d23895', '0x269c7cf392', '0x234fd9100a', '0x22b11dd884', '0x23a0946ffb', '0x215c0d5c66', '0x20dd363bba', '0x22b8a12102', '0x1f688afc09', '0x2308b87db3', '0x24319e0cf6', '0x20e78bf72e', '0x236e746152', '0x1fe2c387c3', '0x1e513e19ce', '0x1c2df8a7f6', '0x1f487fb5e5', '0x1bebc2b413', '0x19bf78fe7a', '0x1bd95f102f', '0x1efc5e6778', '0x1f7c7cdb9e', '0x1c828e49c3', '0x1f6dea6905', '0x1bfad529cd', '0x19d9bc98be', '0x1b84bc1c84', '0x1a874945d5', '0x1b8b399710', '0x18f1971bd2', '0x18a20183f8', '0x1bb5f4e70f', '0x1da4b932a2', '0x1bb2991eca', '0x1a518a1a19', '0x187772299a', '0x1b374da35a', '0x18b0ce498a', '0x163b6271da', '0x138bbfe97a', '0x15fd11cd98', '0x18bc8ac86a', '0x185a1556b5', '0x1a4f44254d', '0x1d9835b3f4', '0x1d1d2bf108', '0x1d998830da', '0x1a31468b15'], 'gasUsedRatio': [0.20964873865422806, 0.4146947511677008, 0.2949483455185905, 0.46844606666666666, 0.6553839666666667, 0.1019761, 0.634002063651511, 0.41876996666666666, 0.069183, 0.9994876997387949, 0.93288365107915, 0.34460066900059244, 0.9997185503193922, 0.9998567264830819, 0.2508590452410677, 0.13282950448684017, 0.9996301102234796, 0.8400818000422091, 0.2784125253071889, 0.3634653066400053, 0, 0.9996200637751286, 0.9993173831182657, 0.15159877274854758, 0.4389775706090325, 0.929408118476934, 0.43532658326900964, 0.5761575, 0.0710015, 0.046297366666666666, 0.9993221666666666, 0.5569712490914044, 0.5200816674202489, 0.33914330127221687, 0.5547380218479364, 0.5584992876530159, 0.9755172298160588, 0.365904, 0.21497038142254088, 0.042773874681412194, 0.7825217222327584, 0.17681963595730832, 0.44049234437640455, 0.9993361647858002, 0.999811450251272, 0.4560900666666667, 0.24360393333333333, 0.7818752321691201, 0, 0.822188294985405, 0.999373365476061, 0.7908997496483893, 0.0694610245265574, 0.9993538338330616, 0.19567212596144623, 0.999552828289333, 0.3895002899513821, 0.45491923041016047, 0.6957172322548906, 0.9996153333333333, 0.48824696017672076, 0.15792635266214092, 0.23926276666666665, 0.39343263333333334, 0.1970207, 0.9207149781761891, 0.5454474424176129, 0.2104001406361334, 0.9520871756323004, 0.9999271333333334, 0.12098013333333334, 0.2352246, 0.756708840483934, 0.23577059457824143, 0.2521119563828167, 0.09976132620523066, 0.9994517333333334, 0.3192332666666667, 0.2703873332309, 0.0588617216042735, 0.9260326017994188, 0.999580565883723, 0.43451958614576547, 0.22880490732040717, 0.2598359907190445, 0.4274980349920047, 0.8565597569777734, 0.3954414252413653, 0.9999340973775018, 0.9996523, 0.16036673333333334, 0.31980025161236614, 0.8480798915412321, 0.41025396990209584, 0.19557967160137604, 0.08402287796979731, 0.06263436687357166, 0.9926743325140532, 0.2904456781041177, 0.5411551031363494, 0.22729839103227695, 0.2858097651225147, 0.276449618311145, 0.8375352666666667, 0.9997058666666667, 0.9998177779398417, 0.2558349403876472, 0.9463861354453352, 0.43805754691125737, 0.9995344537059, 0.3982757883331195, 0.22916053983271215, 0.12870337747952657, 0.9993887426140707, 0.4268291351053526, 0.0842501856136322, 0.26764611369001323, 0.6914259609937714, 0.9999819652078802, 0.5022740701114563, 0.725513638056601, 0.08366467493022917, 0.4928097109518002, 0.08037627722996121, 0.7932342216239849, 0.7134700195234147, 0.8696196748314492, 0.02613768227352287, 0.9999036809410465, 0.33139347071266106, 0.35061936232753826, 0.1872288208533301, 0.7186684555725673, 0.6282146641228704, 0.15693022732744677, 0.1561058384155872, 0.9996545632535201, 0.19452157228332942, 0.9993992209830772, 0.9995756802000024, 0.6340183758597148, 0.17383500866400928, 0.2215937013502507, 0.10678643333333333, 0.8294403818662257, 0.3533778170574172, 0.5415905867455242, 0.7963000672413245, 0.06962541265164046, 0.7483318432807574, 0.1565980677451823, 0.30962667813869393, 0.28404641682087556, 0.9995076241459593, 0.9998993743726987, 0.8478593029111178, 0.11967247756263902, 0.48417587071978424, 0.6320955663320542, 0.17086423333333334, 0.5184284120109954, 0.3941888345762456, 0.13137113333333333, 0.9995454561379187, 0.31511415717575086, 0.9995936207279905, 0.9996080442177956, 0.3013672838418716, 0.31904806355594334, 0.6658735651804168, 0.4374224357098302, 0.4742238501908689, 0.0767438362718105, 0.9998214891227094, 0.9998258947640157, 0.5502367988332008, 0, 0.6401528831226792, 0.05922613333333333, 0.6057160183081222, 0.9359213, 0.13961186666666667, 0.31142173665918105, 0.17210912730185216, 0.3278602, 0.20049338487633492, 0.9995689333333333, 0.7360815830008663, 0.34611061140234023, 0.3339983831412765, 0.058067858203998984, 0.7458698739933842, 0.12599171823350305, 0.9996950968740104, 0.5701119997589325, 0.18079142983867086, 0.4050143206759995, 0.9993479268089801, 0.9996364645945148, 0.6237306333333333, 0.12393011775999263, 0.999606499632733, 0.7242595365381379, 0.9999578665866132, 0.21775198187239728, 0.9997688326783593, 0.1416353749104957, 0, 0.5331142666666666, 0.6768682048646164, 0.22686368596822976, 0.7839956333333333, 0, 0.9377699731776408, 0.12342426218476335, 0.999799924081602, 0.13672118941949807, 0.9998972333333334, 0.2799434981592859, 0.5512288144802269, 0.16883693333333333, 0.4440102426686326, 0.15619437911475384, 0.17639121064899535, 0.999565150739394, 0.9999222075875316, 0.06275513988589931, 0.2984364326840057, 0.9996774447047946, 0.9997210569321331, 0.9999202795366153, 0.07377014955260919, 0.6687584819966672, 0, 0.7929547081702809, 0.05213448907384339, 0.24642182544454969, 0.999513669568634, 0.18365086666666666, 0, 0.6957134, 0.1198004, 0.882909427722838, 0.21037282968130772, 0.6843660221622622, 0.9997364661747369, 0.8163001333333333, 0.11107223333333334, 0.1251615, 0.6299300266710443, 0.07380854586877224, 0.9999822480459478, 0.34413459486376896, 0.22986513337983216, 0.8524529486166877, 0.9994854666666667, 0.5007794778267645, 0.3123194350251314, 0.4781457398653392, 0.3798298410128314, 0.12781158118507743, 0.9693399255919449, 0.5815769577005747, 0.20521140110134636, 0.07057287657526055, 0, 0.9998744101003375, 0.999969699828299, 0.9997623333333333, 0.4279412487039739, 0.01672561869858359, 0.4008392013311281, 0.91824300860315, 0.9252205666430892, 0.5286958489281003, 0.5635857333333333, 0.011824546669823082, 0.11590452001670729, 0.7405662572462073, 0.27826855849474025, 0.3109018059506883, 0.7762321815008306, 0.42191836490311235, 0.5540947573142119, 0.11423473424257372, 0.3750158288189603, 0.4072772399440092, 0.19062386666666667, 0.9998894, 0.9294069659022035, 0.5648104142493089, 0.9996100855382775, 0.32045724220209354, 0.08402190703384191, 0.6757527146326915, 0.22538472677575572, 0.9994232725555188, 0.5435351608515161, 0.4966108172912018, 0.6871489182528725, 0.08941434299508841, 0.17281203598174127, 0.9272229862550573, 0.5453177048568251, 0.13541717947668028, 0.38796250683505995, 0.16772625981803208, 0.9998638992604948, 0.9085431168711453, 0.312543054955056, 0.5025607231144613, 0.7248698963229167, 0.0014054952521868418, 0.41155338717190887, 0.9998958953203041, 0.999584288114688, 0.15649590212504333, 0.20806327882883338, 0.1621393819841718, 0.6331576845653458, 0.5889205258477813, 0.406077848175345, 0.49241153684058936, 0.21204036416661573, 0.8826404255941123, 0.9994461, 0.5337173082848735, 0.8458005590780242, 0.113873874583276, 0.3899026408150176, 0.9799537200530333, 0.15535495841023497, 0.5794576348256271, 0.04181219221966377, 0.1687047, 0.3305543863582789, 0.9140080379572951, 0.9995118045479771, 0.9993489952543985, 0.009826802279687345, 0.07156821714265962, 0.9997726067943231, 0.5710018903857103, 0.6653582325893532, 0.973553447233949, 0.17095163333333332, 0.03148996666666667, 0.9995312333333334, 0.9032731128613758, 0.25705773992055725, 0.7625740319446237, 0.8433915436848164, 0.2238457106432934, 0.0351321470442529, 0.9189173061306606, 0.1799153630587268, 0.8875713112547384, 0.19310991628283397, 0.5180196462341935, 0.10967402973355046, 0.4192485423476395, 0.1380908501013233, 0.4170158263650292, 0.6777506022081611, 0.6280062481929706, 0.4628324543156835, 0.15610993333333334, 0.9997934333333334, 0.18512006974810902, 0.06769020245453809, 0.9996007430729957, 0, 0.7444546325609854, 0.9996414656388681, 0.9176552876668981, 0.4124714007246561, 0.6589742666666667, 0, 0.8955172656666901, 0.33658886666666665, 0.39456766666666665, 0.9995300921983017, 0.9997614997694497, 0.17353502470214552, 0.15667395612544485, 0.9995078926233739, 0.93827849035115, 0.5949192097174842, 0.22571109101501646, 0.49834424516504444, 0.5673237993273229, 0.011399190329634885, 0.999557913793958, 0.12732717021444104, 0.5307088565446072, 0.2529819660346116, 0.8087607, 0.3276167510907735, 0.2795458942428346, 0.9998935038940511, 0.1837118490525132, 0.9998970666666667, 0.7131119666666667, 0.2634257685963677, 0.7094417621456447, 0.050283666666666664, 0.11174993333333333, 0.5756403127654154, 0.6186843107720233, 0.42598777465053594, 0.999390576462498, 0.9993819286122876, 0.9476146849082739, 0.2562168884060457, 0.5018940904677408, 0.4032165, 0.43902186666666665, 0.4536555, 0.7518031642101488, 0.1182072142669738, 0.9995308243631396, 0.4639142, 0.04991847872781104, 0.636048475694454, 0.21251118927047224, 0.7571853386521434, 0, 0.9995740343439736, 0.3618876540387771, 0.5225388856477655, 0.06598937879790993, 0.7389492889916108, 0.13362764955866885, 0.9998755326197204, 0.9368140388249101, 0.14484364411774167, 0.2812000827863777, 0.3231678, 0.166227, 0.9998266, 0.05955576666666667, 0.9777284, 0.2753750296169124, 0.1555207, 0.49479436666666665, 0.4855571201388511, 0.9991539991821992, 0.6512746659434708, 0.9676626385590132, 0.18381953333333334, 0.4415934, 0.23647731323695745, 0.4222224247893757, 0.15934104830993595, 0.577535653617297, 0.2193242132883958, 0.8001476937567221, 0.14810528271037712, 0.34838019051139063, 0.6111531666666666, 0.07885073333333334, 0.9994461333333333, 0.901242763558615, 0.9328556297129083, 0.6397408415295431, 0.4311585955756101, 0.025268266437961064, 0.9883209033963902, 0.9996786923624964, 0.9414526123786056, 0.04172593726963876, 0.481115798352805, 0.3648117490522262, 0.9989669708419405, 0.2176178385714631, 0.20018926314721422, 0.09406325575057359, 0.9994849647095325, 0.3059151552934008, 0.9993507969119869, 0.0272441714696862, 0.8874594935239835, 0.2573081149183421, 0.12933874308098076, 0.8686568537360003, 0.05978974550083734, 0.736673585030815, 0.5658728744053054, 0.5190625618630246, 0.03658661545906738, 0.9994045333333333, 0.2937072333333333, 0.3246828805005246, 0.8856840666666667, 0.7476467103459862, 0.3389180907076006, 0.2505420813993461, 0.9313547984897373, 0.9827374137056878, 0.14681867295319484, 0.1668691677739479, 0.830875, 0.26902566666666666, 0.19313706501064956, 0.3343230876219105, 0.7132816041615127, 0.8615984016784781, 0.023626034244520925, 0.16298544970207438, 0.6021440857647679, 0.4361662614244587, 0.9995731482238706, 0, 0.9319191301144393, 0.9291416443697026, 0, 0.8779379236548935, 0.1991081249998335, 0.9996120887258878, 0.9998376572992542, 0.06455528420509188, 0.8881184929862078, 0.869783567284437, 0.39127551795151627, 0.999956699548232, 0.3743181270368436, 0.6856164661275598, 0.18387478624219622, 0.7251367744056477, 0.1677730055016418, 0.8722441752080723, 0.4318847587432341, 0.5894027607166611, 0.05206579566326271, 0.354953773689202, 0.5276589829729346, 0.07958198938507761, 0.9998845666666667, 0.15657446162844685, 0.4511855442614346, 0.09859564061885023, 0.9993653321274644, 0.6437108, 0.7627815333333333, 0.35107759393714627, 0.06978726272265214, 0.8840726571103351, 0.6221229051250491, 0, 0.6861758875723079, 0.23158189340268936, 0.05248653347909024, 0.5209007103883915, 0.9993190493516555, 0.9797366333333334, 0.5491469753547673, 0.11939817319395281, 0.9996861932643761, 0.8825830102410528, 0.04889593978748808, 0.13469598163861465, 0.8774602927800627, 0.7353887032974491, 0.037059561586237605, 0.9999515997725189, 0.9994762423210457, 0.20888608368780756, 0.8421662809823048, 0.23191546397539556, 0.6855450927139805, 0.648651486507865, 0.8424008333333334, 0.5592523432465135, 0.5486011393307162, 0.06541205256868239, 0.14780877647642773, 0.3731188394586411, 0.895300450452331, 0.3268530588063993, 0.5840359333333334, 0.04375369214704826, 0.47258847441590945, 0.2086752, 0.6798592507749516, 0.21463800748340722, 0.38144491635757566, 0.3523629028228487, 0.5686019201186441, 0.09306709702344157, 0.5784277333333333, 0.6152259014260759, 0.0838937449674953, 0.999379238927144, 0.7442992808353003, 0.6369713127323774, 0.47163890297689176, 0.20166396290767424, 0.4588105287025606, 0.08649685953807183, 0.7323137329516693, 0.46882212389537026, 0.8856934248938323, 0.9993168957216445, 0.6648215433162373, 0.2336839577188737, 0.33427073333333335, 0.1930710004986536, 0.7467173302695083, 0.293188538917556, 0.08751946336966496, 0.999580489564974, 0.9999048664002926, 0.8902673388048916, 0.13243426108790807, 0.5953040034943586, 0.2771017931417013, 0.7248812029509322, 0.05009214885243853, 0.9994700128152529, 0.664240095176625, 0.4782508, 0.29004843333333336, 0.5307855666666667, 0.15496616666666665, 0.7534212333333333, 0.2435575993375802, 0.04393997580864328, 0.6237089333333333, 0.05650443333333333, 0.9993254586895897, 0.19051251749543358, 0.9188412064417425, 0.107986, 0.9098295485541631, 0.18026705998556247, 0.1201338584256591, 0.9999538097905208, 0.9997975018758353, 0.9996234655998192, 0.8704775, 0.07486694090112328, 0.6537461101630362, 0.3618034333333333, 0.4259058, 0.6681480465674732, 0.3139739930423935, 0.7952094201966369, 0.04977732791025636, 0, 0.9995858622611647, 0.8378591569316076, 0.20352638722661656, 0.739319659779694, 0.3212190783477401, 0.21035316693523043, 0.5455436133435265, 0.9997182824839401, 0.9994468949444393, 0.43163004723406856, 0.5043305002148644, 0.24052489787594783, 0.9160102783075532, 0.09903326718908313, 0.08903130896380801, 0.8948940263082773, 0.06826789737966449, 0.5000916909586357, 0.8198213362714462, 0.6696991030574041, 0.9997617333162188, 0.9995486982850534, 0.1514670498156009, 0.6957832933742553, 0.09175987117759517, 0.2734582162632255, 0.920760773873406, 0.2881091408687167, 0.11025016829671357, 0.4021666570237393, 0.9999688763198104, 0.3325302395872036, 0.5130257668619953, 0.5703779, 0.5885437666666666, 0.3061613, 0.10183666666666667, 0.7794147666666666, 0.1093431, 0.49319956666666664, 0.4652688016514793, 0.9996261329843907, 0.20876736666666668, 0.3015195328428456, 0.3932667, 0.2258979, 0.9996113333333333, 0.2577970333333333, 0.9995801333333333, 0.9996541666666666, 0.9998204666666667, 0.10490792407880371, 0.10942530577779558, 0.9995643, 0.12289150355321972, 0.6149351739394957, 0.1047209, 0.9997671392781718, 0.1500737539726716, 0.3984955828156829, 0.3637231244072697, 0.7980878333333333, 0.45884603333333335, 0.9995204, 0, 0.14420220125538785, 0.9996184270378677, 0.9995844992243985, 0.741549327973313, 0.09484806873619475, 0.9996435509175319, 0.11208311127423, 0.5693339501900565, 0.11976972643581074, 0.9996108276890365, 0.9996825800788941, 0.7675189071654374, 0.1784327055593324, 0.15566137770923658, 0.9999961333187688, 0.7999203686066662, 0.24755343016778847, 0.25789444484516616, 0.2177711340364262, 0.6823182333333333, 0.4351775666666667, 0.5031764333333333, 0.3854882626217835, 0.47377480885648826, 0.0242879, 0.9996047859265428, 0, 0.5296127, 0.08145337255163, 0.9999091332485244, 0.13005798968104723, 0.07047943156160558, 0.9997031666666667, 0.530695924570343, 0.8162622650254807, 0.5677414483410385, 0.4867438914800605, 0.5022905744313569, 0.10315215893111697, 0.2502605333333333, 0.9721724735795496, 0.9994325333333334, 0.6715605333333333, 0.9995938, 0.1824172304255105, 0.21864103521013253, 0.5701220085926657, 0.999722499472749, 0.6568692152628048, 0.0945672710928438, 0.9999924333333333, 0.2957588084764773, 0.3544790308470955, 0.14398793861079615, 0.879306508038815, 0.06615282171567256, 0.24225788909810508, 0.9993836964333738, 0.7799594761131871, 0.33999386152007843, 0.3928018469480134, 0.4771204558508335, 0.5123637568747978, 0.17216299956600684, 0.11557710516741834, 0.9993628164129666, 0, 0.9999534101639251, 0.9999574927984659, 0.8845975694777842, 0.15856935368924283, 0.6925669266310573, 0.20961845996845985, 0.72294540073414, 0.8914430756000117, 0.9997355475713418, 0.17403057289028354, 0.9561376561971631, 0.31771102459877304, 0.7131712868288796, 0.068525157836152, 0.4755615, 0.3595889946800283, 0.5469326953682722, 0.25875796061456874, 0.8751752294996027, 0.18693753333333332, 0.9996787470368519, 0.2639985551986034, 0.4500107371618845, 0.35896218202814584, 0.20050871105623075, 0.999793696890601, 0.40096044712150186, 0.5556226367556134, 0.18207995382863737, 0.7763753302374828, 0.5355543585263409, 0.9997619075689046, 0.44799690985323604, 0.07880746606995996, 0.537976282961296, 0.4116297, 0.6099685666666667, 0.32430164722518207, 0.2925905730845349, 0.9994045808710549, 0.25150797786515794, 0.2654163833895083, 0.11410022328396598, 0.9998949356310073, 0.5272204226593353, 0.2955023648497107, 0.8990277186987925, 0.5135994446817513, 0.6840599991419951, 0.06101899952800307, 0.99942006281975, 0.9995267, 0.39592843333333333, 0.11094880817785234, 0.3859070935132873, 0.05517676494261374, 0.9997900662747904, 0.7411380621400363, 0.35053459318134733, 0.18897010610668746, 0.5734189165712473, 0.5355971912787099, 0.1127846376067726, 0.5128362666666667, 0.21687266666666666, 0.99948183931724, 0.9993769666666666, 0.3979311797970718, 0.22720357872334015, 0.2553845880758716, 0.2097847582648821, 0.49662113333333335, 0.23094903333333333, 0.606874879986974, 0.5995423262395045, 0.04100397865553721, 0.4983350302253898, 0.9998918666666666, 0.6290681333333333, 0.24647303333333334, 0.9995462569198823, 0.9999013741424176, 0.5922943146160601, 0.2558439527701769, 0.5418208747088421, 0.11668116781934774, 0.5991485861536594, 0.25587124455836197, 0.8673868949526853, 0.39341578192787274, 0.6300801629582218, 0.13565893533110399, 0.41230804337774457, 0.4015905937024635, 0.19867005396292836, 0.3364069007041389, 0.11032579253997155, 0.9995002292888459, 0.7653697139085811, 0.014019349416739102, 0.9999459290719676, 0.999773183707984, 0.610518425128477, 0.1384320713598487, 0.7742089333333333, 0.46045046666666667, 0.1615643, 0.9994692183083219, 0.9994405, 0.38258145745987626, 0.3611115370374346, 0.38591561359123416, 0.04046873333333333, 0.7606910518545307, 0.16626232895130677, 0.8668868230079283, 0.9998747, 0.30011143333333334, 0.9993399, 0.5782996763005742, 0.8008581141342399, 0.0911094, 0.2729087287069156, 0.36901374441282814, 0.28759876666666667, 0.1832840769010939, 0.8991886725760944, 0.07889227860952223, 0.5758979286546626, 0.9997569622118281, 0.8178143171405652, 0.07479474899084504, 0.2920413666891479, 0.026831, 0.9637842979663692, 0.27186362946817516, 0.10983496001224664, 0.1657525869941525, 0.7178849692500799, 0.7829519777956697, 0.8976911688076913, 0, 0.07963213004374856, 0.9995959647542332, 0.9999933935174992, 0.9995865643238645, 0.45913003333333335, 0.45875730984639834, 0.9997245330762309, 0.6916628209633036, 0.19168832448487239, 0.9993250245202684, 0.2425235, 0.6219484007200302, 0.4346752535194117, 0.9994362166561114, 0.8440079650820659, 0.09393015879824053, 0.25512643333333335, 0, 0.9770132, 0.9993828, 0.5610453666666667, 0.8984327529165563, 0.3829108573834669, 0.36741278817291984, 0.09188570485331572, 0.901171709695042, 0.3497933395325573, 0.8650582804092808, 0.12418840110964419, 0.10700408023102327, 0.7170981333333334, 0.5952356, 0.5935057333333333, 0.19982653333333333, 0.9599620362617429, 0.9137641618949631, 0, 0.6532274082358649, 0.06367701767091255, 0.4284249031791401, 0.8154209366828266, 0.9994343760116382, 0.4346424758216468, 0.8172005676606278, 0.11556414320794527, 0.12203544856795133, 0.7446825609904048, 0.3421534952278016, 0.5780376407630636, 0.9044225103494498, 0.7918403529632622, 0.1974618052925235, 0.22286420719466368, 0.999681207624032, 0.9177365463505213, 0.15819567150030928, 0.4297637226859533, 0.6078527666666667, 0.2453988, 0.4405903666666667, 0.7260338, 0.11834993333333334, 0.9617488, 0.6324143, 0.13647510126972323, 0.8071902558587868, 0.09971540181476053, 0.30324250949410136, 0.21794657225963215, 0.9405492982230116, 0.07008756666666667, 0.18869246666666667, 0.8264209333747738, 0.9505291629613781, 0.5646056498692255, 0.1218928942188392, 0.9095932486482524, 0.06097824695505363, 0.19559753782835745, 0.7580931103970613, 0.35609189492819704, 0.6531013307623483, 0.12240053102443464, 0.45014753842207, 0.9998096993610601, 0.7789792813700157, 0.2374392109456167, 0.3008299571319996, 0.21853611176793566, 0.9495016212020848, 0.1288392, 0.1016829, 0.016718725835778638, 0.9998810332222977, 0.9998854783901319, 0.43780773183469046, 0.8215759632557827, 0.9994270471358686, 0.4350397300769797, 0.5667422433028408, 0.039556448601392735], 'oldestBlock': '0xd11f1e'}}), - (('0x400', '0xd11f1c', []), {'jsonrpc': '2.0', 'id': 14, 'result': {'baseFeePerGas': ['0x22d21c4e2b', '0x1e937d4d6c', '0x226548ee59', '0x20a953d2f3', '0x1dc99e40c0', '0x1c2a14fc29', '0x1de2422a66', '0x219de0c4e5', '0x212ab95619', '0x20d012483a', '0x1d3da1cb24', '0x1f6f08e9e5', '0x1eed647bb7', '0x210a67b48e', '0x24ed65248b', '0x2124566680', '0x1ebef012e0', '0x1ea798de81', '0x1bddd9b779', '0x1b290d5e59', '0x1ad892c43c', '0x1b522367e9', '0x1bdc18b813', '0x19fcf70d03', '0x1b2094997f', '0x18878f4f39', '0x1b403dabbf', '0x18a0b99089', '0x160b256abf', '0x15fa23ebe4', '0x13dab168f1', '0x152f006d6b', '0x14ca78f8d5', '0x147e1181ad', '0x1639a0eabc', '0x1900601e9a', '0x1a23b2e45a', '0x198ba0d63a', '0x19b08a8720', '0x192f078035', '0x1b76b5b984', '0x1b7240d548', '0x19cc3a2f2f', '0x1aa7981f8d', '0x1812a6dfd6', '0x188eff09de', '0x1b3f13bbbb', '0x1955cc89a3', '0x16a9a16244', '0x1915039de5', '0x17e20c919e', '0x1ade3a06e7', '0x1a7e18ef9d', '0x186de91ed4', '0x1805b1b6dd', '0x1591588a50', '0x14fbd30b80', '0x1748d61dd4', '0x15086043bd', '0x17a95fac11', '0x1a9d7e9501', '0x1ded990d95', '0x1cc2c851b4', '0x1c278b828b', '0x1c3da43f14', '0x1b576640b5', '0x1c0a855a89', '0x1b7e4771fd', '0x18bfb2bce9', '0x15a7bc654c', '0x185c58d695', '0x1b678f4bbe', '0x1c3fb4ca87', '0x1a430547ce', '0x1903fba04f', '0x1c23ea4588', '0x1e252741fc', '0x1a83c2ef08', '0x1743e88fea', '0x1a2c4a94db', '0x1aff49d8b1', '0x18f12dadbe', '0x1c067ca6b6', '0x1a7ee2e4c6', '0x192e1c1344', '0x17f2f1d345', '0x1af11b6313', '0x1df589fe59', '0x20e5f4540b', '0x1cec9ab207', '0x1b93991a85', '0x1ef5442555', '0x22a9436394', '0x2205928b38', '0x1e7f541c27', '0x224eb665b4', '0x24319d8027', '0x1ff36585bc', '0x203854c662', '0x1c71fefa44', '0x1ef14d6753', '0x20bfd87337', '0x1dba657c58', '0x1fd21ac22f', '0x1e985d894f', '0x1b6c09debe', '0x1b2c7b12c1', '0x1958377829', '0x185be1060f', '0x1b664dfe09', '0x1e750e2b3f', '0x1f7d6fc950', '0x1bf390cd51', '0x1de5dab66b', '0x1bc16ee837', '0x1b1f8a83bb', '0x19887a65d1', '0x16fd9726ea', '0x17b581c4ed', '0x14bed18c50', '0x1705f5b222', '0x1650205245', '0x18b02dc68a', '0x18871d9bf5', '0x1b0b7e43ad', '0x1b40458de5', '0x1b1f6fa631', '0x1a2545fb54', '0x1d698dd8b8', '0x2005bd5d65', '0x1dc9b479b4', '0x1c238c5ca0', '0x1b3a289be4', '0x1bc1beacee', '0x18949fa4df', '0x182f8f98fb', '0x18e35eab14', '0x1bff03cbe3', '0x1f143de3dd', '0x1b9b5114bb', '0x1838ba1ab0', '0x191ba0bdc1', '0x16d4810474', '0x19ae20ea7f', '0x1ce122a29f', '0x207ce8b33d', '0x1d62b5277c', '0x1f18bc1913', '0x1c7470fc65', '0x1dabd8fc5f', '0x1ab1580053', '0x1ca6d2a442', '0x19d55d7a51', '0x188306835b', '0x15b967a6a3', '0x1869d5fd5b', '0x17d4a4d514', '0x1ace89ac24', '0x1bf308e6a2', '0x191bf2eb2b', '0x19080c2bc0', '0x1aa3c125e6', '0x193dddde14', '0x18dc0dc117', '0x1b8821d9c0', '0x18d7534ea7', '0x18aebb92d3', '0x1bc3b07d4c', '0x1f3b538084', '0x22e7213fa2', '0x21707be5e7', '0x1efe9bd5ca', '0x1f2b9df72b', '0x1bafd0866b', '0x1f24c475a6', '0x1d4c9cef24', '0x20df1eaca4', '0x1dc57a993c', '0x1e1b1464d1', '0x1ce5ebf90a', '0x2081e8f123', '0x23908627d9', '0x252a944665', '0x20ca2b50c1', '0x1ed6884f89', '0x2159eabf8e', '0x21e294e1d4', '0x2402b8e9cc', '0x211e922dfd', '0x22204bb715', '0x1ee1ac93e9', '0x1cb11539e8', '0x1dc209c2ff', '0x1cbc097ec3', '0x19bf384878', '0x1cf6167461', '0x1a187b4db1', '0x18e4a3fa3b', '0x1796aeb315', '0x19472aaea8', '0x1a2824259d', '0x1c3c6143af', '0x1b71898646', '0x1b9a02583a', '0x192d7db80e', '0x1b062427e0', '0x1e65c7f6b6', '0x1e5286e96b', '0x1d3342259b', '0x1e49c86c2e', '0x1b52d156d7', '0x19cbe1d74a', '0x194873bfca', '0x17ef2b3510', '0x179e575f8d', '0x1796b84ecd', '0x15663ea375', '0x16f2d55ca1', '0x1992cbd2fc', '0x18b8c6f8f9', '0x179f636a92', '0x188fa2f470', '0x17cffdce37', '0x1606e3cc96', '0x18a20431eb', '0x1bb52bcf56', '0x190aecd1ec', '0x185206a671', '0x19fcdb4249', '0x16f95f6b03', '0x1633206933', '0x18f9717513', '0x18ec24c1f6', '0x1755ffdc68', '0x16c3e8a6c1', '0x15d1970bf9', '0x188ad6cde4', '0x1b9216c93d', '0x1f0428873d', '0x204fcf48f9', '0x1d0f75e3f9', '0x20b0af9a0b', '0x20e84a4a43', '0x1e3730e8a9', '0x1e5dafbf9d', '0x1e09196613', '0x1f87f516b5', '0x230d41957e', '0x222ee0cbe2', '0x240dee09db', '0x21ef0db7f1', '0x1de98d7674', '0x21a5d1250c', '0x25d9cc7c5a', '0x2975d2402a', '0x249fba3c87', '0x263cec77f0', '0x2423482ea2', '0x21a8585204', '0x1f1374c8d5', '0x1f9b7fedd1', '0x237242e3f1', '0x27e078dc1a', '0x2cd71b285e', '0x2e1bce8c09', '0x2a2b7674d1', '0x28b99ed749', '0x29cde783d3', '0x25506c9a7b', '0x29f61e407d', '0x26cd706bb9', '0x25cabde14b', '0x215d17aad3', '0x258846ba70', '0x2773624f24', '0x23c6fa8ea6', '0x2007c5d14e', '0x2407868a47', '0x28873e3577', '0x2d96e2ee22', '0x2a102fc86c', '0x2e0b4f6565', '0x2f9c07a556', '0x2b86eb365d', '0x2868f4b7bc', '0x28296860f3', '0x2d2e3a121c', '0x32d33d4a14', '0x2ed66b82a7', '0x3045e8e35c', '0x2b9483bb6b', '0x30ee963399', '0x311e061455', '0x31c4b65c01', '0x3025f69394', '0x3628c898bf', '0x3810f8da8d', '0x32e1558190', '0x2f0c751321', '0x2c80674d7a', '0x30703daf1c', '0x36514f0212', '0x3d19af561e', '0x35e9fc3aa3', '0x37188fdb1d', '0x321510d353', '0x3856043911', '0x3f608a3384', '0x38b7d39e62', '0x3f4c78530e', '0x3822755751', '0x341e1357a4', '0x3664e414d5', '0x3d30add38a', '0x3c04e979a2', '0x34ed4628e1', '0x305c4a0c55', '0x32596ebcae', '0x35a605f4f8', '0x2fe178402e', '0x317f9738ee', '0x30b24a5bca', '0x2ef49fb161', '0x2fe41d5619', '0x2e18107c52', '0x33d5adc147', '0x3277b04c54', '0x38c5edab6f', '0x3fdcb2ea57', '0x3c4c5a8695', '0x3a75f6d22d', '0x3a17d09429', '0x3e0ebb9b23', '0x39111dd237', '0x4032c88fd3', '0x39c8c12e54', '0x34f4803687', '0x3a244f48f4', '0x3411914446', '0x362cac2aba', '0x2fba2f5ae7', '0x35b14cd231', '0x355f6d96b8', '0x3ba2baddcb', '0x377ffddfcb', '0x34d8c17634', '0x3548095a3d', '0x325a35fa9c', '0x2f2cdcb8eb', '0x2eccd58b3d', '0x296a1b8e8c', '0x2e9693a8d7', '0x3467edc811', '0x3af304715e', '0x36453aaa7f', '0x34080efa40', '0x317f4d4e89', '0x36155c31bc', '0x36c36ce91b', '0x347f8dc5e5', '0x3b0d7a1704', '0x383d964cce', '0x350e1b0909', '0x2e927b8a72', '0x3463157b7a', '0x3109f473ce', '0x3689bd437c', '0x3d59bd4dbe', '0x3f8e4f8672', '0x3845689492', '0x35d3090ba9', '0x3bc15e7dc0', '0x38c4543e9d', '0x3912a9edbb', '0x36bde9e9ae', '0x35a662c811', '0x3518db24dd', '0x311495b833', '0x33fc38591f', '0x3320cd6896', '0x34f2736f57', '0x2e9cde71f3', '0x2e5d08974c', '0x2a35948280', '0x27e6689bea', '0x28ed02d87d', '0x2d73aba29f', '0x33111cca33', '0x2e001872d2', '0x323035976b', '0x35cc53b1f2', '0x2f780b8ece', '0x356091f494', '0x3541a3b43f', '0x30677e801a', '0x350a5ba30b', '0x2f15d1827c', '0x2e4d06a6cb', '0x2fb91179df', '0x2c10645430', '0x30e58576a8', '0x36b029b48d', '0x3761955e8e', '0x3b1d308e1a', '0x362ec5c0a8', '0x31c558fbbd', '0x2fe375ab17', '0x2c9a0d1e5c', '0x2acf39f3c5', '0x29dc9c6147', '0x29e3efa00a', '0x253809e8e1', '0x29dec47c41', '0x2ee25b304d', '0x30bb18cfdd', '0x313635efcf', '0x2e927fd61f', '0x2eeafcbb1f', '0x2b877007b0', '0x30f7c42314', '0x2b03277729', '0x2cde00f68c', '0x32795880ac', '0x33cd06393a', '0x2f26996ae3', '0x2941c63d87', '0x28e25a3b3e', '0x27f4340031', '0x28486a0ab0', '0x2d4ff54424', '0x32f9420574', '0x324ed5560c', '0x2ed7b488fb', '0x34b2a03806', '0x37b788de97', '0x330ed7d3fa', '0x2e4f9e71ce', '0x3375c1f1a0', '0x2d735cd8d4', '0x302bbd3e2d', '0x2aa8b82a55', '0x2b6ce48801', '0x2797ad6efe', '0x265c3e585d', '0x23ffc6eae4', '0x27bc5c9ae7', '0x27157a71b5', '0x2bf7b11337', '0x317627f5f0', '0x305012e2dc', '0x2b698c284b', '0x30a9fe2c40', '0x2a94be66b8', '0x2fe6188fd6', '0x2d7019a788', '0x2df0253f24', '0x2a895c9675', '0x2aadb612e9', '0x2af9e39ffb', '0x30578749b7', '0x2f12710a6f', '0x29584b08ee', '0x297b407c1c', '0x288e30f14c', '0x2aff30cf6d', '0x25d40a8405', '0x2a8dff5e1f', '0x2fde12b5c5', '0x3024b89d09', '0x2f404b02c0', '0x2cdfc12161', '0x2a3d87bb3a', '0x278ea4cd57', '0x2a05101287', '0x2f451f4d9c', '0x352c298bd8', '0x34725ae63d', '0x2ec09194d6', '0x3497a2be33', '0x2e853b01e4', '0x3454cedda5', '0x2e309d03a4', '0x30a7e4de2c', '0x2bbe651f6a', '0x2a88c20d86', '0x276f9e4c0f', '0x235c443bb9', '0x27c64729b8', '0x2b98c5e4d9', '0x28f17bbcad', '0x2b25dba54b', '0x2671b0fb4e', '0x2b3f02ab2b', '0x2b5c873538', '0x294ac2d2df', '0x2abdd98ffa', '0x26013f15f7', '0x231a9a8ba5', '0x277ccb398b', '0x2c6c1b68e6', '0x2b08b49604', '0x2620ecd165', '0x2ae3e6c4d0', '0x2cdafa2376', '0x273f9adf08', '0x25fd8dcf05', '0x2a3f08030d', '0x287f0240d0', '0x2668e29e04', '0x24b1bb6392', '0x21de917b82', '0x230e6ff32a', '0x2712287925', '0x2997e11e96', '0x2464e4fac4', '0x220baba24e', '0x1eec776943', '0x1b0ee87c1b', '0x1e6ffa3158', '0x223ccd587c', '0x2283037262', '0x26d28ddb09', '0x25d1ffb251', '0x225cdcdc9d', '0x21b217304e', '0x25e818f895', '0x2aa4cfe23a', '0x2da95552db', '0x294858cd94', '0x2e715fa357', '0x2ac7e69c04', '0x256ee9c884', '0x2a1bd8fead', '0x27706dcd3a', '0x2c5e664f97', '0x31e971718f', '0x2e448cfe9a', '0x2ed2f1de57', '0x2e8ec43cd3', '0x2950fa3767', '0x2adba15f8e', '0x2fe63ec7c0', '0x2adc9c6a52', '0x26f60b0cc7', '0x2b67fd348c', '0x30d3a9fc14', '0x303ebfc2d2', '0x2ba6cd7357', '0x277d609583', '0x2c6b6fee25', '0x2d76633d6a', '0x2ab1109b64', '0x26e455644c', '0x23e83f20d9', '0x2864eacffc', '0x23584d75fd', '0x275b03055c', '0x2c45ebccc9', '0x30ae2a867b', '0x2f62be1f07', '0x2d061eb1f3', '0x32a509d2fc', '0x354b4cd3bf', '0x3b57f38c92', '0x3851c55f4a', '0x339d827553', '0x31f9a59571', '0x2ed4923985', '0x2fe345c468', '0x2dc8fe215c', '0x2db519d4ba', '0x28cab93f09', '0x2de2f83102', '0x339ef1cbf6', '0x37dfbc5bbc', '0x3751be3fed', '0x333aa8148c', '0x2d41c44e8f', '0x30a8a02232', '0x2cc8914b6d', '0x3081cd23f6', '0x2c70b8d2d6', '0x2c8a1ff8ae', '0x2b786e50d2', '0x2618513c4b', '0x2adb23295a', '0x2ce93ec87c', '0x309afb0c26', '0x30d0f011e8', '0x2d25487336', '0x3283e6873f', '0x2c6996b4fc', '0x2d98843a1d', '0x2934d6abd2', '0x297c4266e9', '0x2eaa02949c', '0x347f0f800c', '0x31f65d6523', '0x34245dc877', '0x3150cf64b5', '0x35db25ebee', '0x2f3dd4faff', '0x33dbefd1e2', '0x3a55e4a8e0', '0x365340737c', '0x39bd327434', '0x37e169cb8f', '0x31a23bd754', '0x2db46e59ac', '0x2b7d578532', '0x30eb135c0d', '0x3682e0de3c', '0x373d0f51e2', '0x33cc4429a1', '0x309f04aaf4', '0x36b1d447a4', '0x3a666476e1', '0x35453b892c', '0x3a01f97727', '0x3513c03b64', '0x311fcd771f', '0x2d858d6ac0', '0x32b6e0f062', '0x381a2cba7c', '0x32522964cc', '0x2f372b621c', '0x2b68422cfa', '0x30d39319e4', '0x36ec3af312', '0x3dc7dd8918', '0x3970252d98', '0x3f09caaa39', '0x37289154f2', '0x3dcbec0071', '0x3e66b07184', '0x40a70a369d', '0x39e910b12b', '0x3576a02d52', '0x2ffa0172ba', '0x34132a8ba4', '0x3a8b1d92a3', '0x365109e0a4', '0x35b37de8cd', '0x308fc33d03', '0x2fc0ea2a07', '0x2c50b6f2f0', '0x2e73a7eb9c', '0x296a019305', '0x2be9e0fe38', '0x3165fa3501', '0x36fdf1fc1c', '0x311f3d3de8', '0x3742b98975', '0x36f295d0f7', '0x32ec2c3047', '0x384ad901f3', '0x34b39630ab', '0x32e2f9582c', '0x2fe58d56ab', '0x35e15ca19d', '0x34132dbe9a', '0x3108086ffb', '0x2c3770e0e0', '0x31ba9c129a', '0x2e3e8d42c9', '0x34051f1b6b', '0x3a843507b9', '0x3bbcac139f', '0x385139f95e', '0x35dbdd27ac', '0x3a3aa7fd90', '0x333b1f0020', '0x37db2c8770', '0x32879b91c9', '0x2e2ece09db', '0x31624a85e0', '0x30385040d7', '0x35a6e5d9d1', '0x3c5966b4da', '0x3b86ad07b6', '0x34383573dd', '0x3153d6a356', '0x377cfbc394', '0x3e29b3e9b9', '0x45ed97eb83', '0x3f15ba6fe5', '0x397d20459a', '0x36a47700c5', '0x3b0c43dc42', '0x354a3af7ef', '0x3652504f61', '0x32484c04b6', '0x2d261b1586', '0x32ca7f3faf', '0x3922b70095', '0x3d7fdf5da5', '0x37a08e8c83', '0x351b07b540', '0x384875a9a7', '0x350d7d94f2', '0x3b67ec23d8', '0x42ba8377b9', '0x3edd247008', '0x3fd7883460', '0x3e926ef6f4', '0x3bd490829d', '0x365c7e6eee', '0x35424cb06f', '0x32ed2135b8', '0x30ec4803e5', '0x2bf0f364bd', '0x2b6b6d265d', '0x2c0ef2da05', '0x277116f5bb', '0x25d4b2358b', '0x24e1ef1440', '0x297cf294d9', '0x2e656931a3', '0x2c282d7e8d', '0x294ac1eb69', '0x2e73341f99', '0x2ecad53cd8', '0x29efb06a48', '0x2ee267bc34', '0x2a976175f7', '0x2d45f1d750', '0x282ad2a311', '0x274c606336', '0x262f6ab49a', '0x2af470f523', '0x2d0b83c8e0', '0x2814acb1c5', '0x24fc3bc948', '0x218e762dc7', '0x25bf1a9932', '0x2a766d7a00', '0x2d13d5a105', '0x282cdf2175', '0x29beb6178f', '0x2b460b6463', '0x2acbee72f9', '0x290c1409dc', '0x258e5cf33f', '0x2852b45f8b', '0x2594dcff34', '0x217762541d', '0x25a4febbd0', '0x2793140a2e', '0x2c7f6db202', '0x31e08b75e9', '0x2d26a352fa', '0x2fdabaf3e1', '0x2a0c4d2c33', '0x2f4d177071', '0x3535e71658', '0x3b5a391a93', '0x36ecdc42b3', '0x336919f630', '0x301335adda', '0x30113a53b3', '0x2cc6ff2a36', '0x325efb435b', '0x2e8c04e196', '0x290f918ac4', '0x28b3be2d3b', '0x28584fb5ee', '0x269bb5cf85', '0x2b6f29be27', '0x282d87f80e', '0x2d036bd784', '0x32a1f71d36', '0x34aaa5eb8e', '0x2f3aa088ac', '0x352166aed9', '0x30a3624679', '0x2b3c89a995', '0x2c74937170', '0x2ad43835a1', '0x2824e9b6fd', '0x28749c4778', '0x23a9f284e0', '0x2614cccc7e', '0x22f62a2aae', '0x20d81bc423', '0x24edde577b', '0x23aae12375', '0x281fcb12ed', '0x2d223b7fac', '0x2aa5e22abd', '0x2ff9a2794a', '0x35f7ffa056', '0x3987cc7fbe', '0x3256d2efc7', '0x342e037597', '0x2e77f70438', '0x2f17379508', '0x297e541408', '0x2eac76d55b', '0x2bbec93ce3', '0x2646f01547', '0x27c9c15335', '0x2c4f9959df', '0x31d7ff3543', '0x2edb9af62e', '0x2d44f1cd1d', '0x32ecfad81e', '0x3275ea57f5', '0x2e90f68919', '0x2bc62efd97', '0x313dd317ea', '0x2f4fcf1d56', '0x3538ea369a', '0x2e91ccefc7', '0x3461fa795f', '0x3aedc809b5', '0x42498db0f4', '0x3d31dfef67', '0x3dc16f5cb3', '0x3e0ac2b80d', '0x3bb54a2af8', '0x36cfc69542', '0x38dfe99e30', '0x36cc232260', '0x37bf655991', '0x3e40085271', '0x4317bd196a', '0x3eaa8581fb', '0x3fc99e28f3', '0x3d05c3a69d', '0x3b534625e4', '0x33e8dd6128', '0x3a63feed4b', '0x3bdf636e16', '0x3743ad6585', '0x35f785d6b5', '0x30a1ee7e34', '0x2cccf2cb4b', '0x2aee88d577', '0x26f6023c6c', '0x2bd47c9b36', '0x30b4f4ad81', '0x317bf9ad41', '0x367bc5d46e', '0x338fb1d61d', '0x2f35bd8cdd', '0x2d43434f84', '0x2ce3c774be', '0x2cd5df4c4c', '0x2793de08c5', '0x260709f08d', '0x277314a9ca', '0x2c60e01ce2', '0x2d271777e4', '0x2b4360f5b6', '0x27a24d01b6', '0x286956c9aa', '0x281b16285c', '0x2a09f82cbd', '0x275ed42f80', '0x262fa43146', '0x253100d7b8', '0x2191e72b68', '0x25c3b2bec4', '0x210b3c66ec', '0x252c725c61', '0x22e694258b', '0x1fe05d8d5b', '0x1cde1c3d72', '0x1e9916679d', '0x1e48ac3abc', '0x1ba25f1cb8', '0x1f152b7bc5', '0x201ac7a6e9', '0x23c6241e97', '0x2686209188', '0x28fce3bddf', '0x23dd474624', '0x1fab4ca796', '0x23a030c8a8', '0x2813f2ff96', '0x29247d6dce', '0x24b680e23b', '0x23be793924', '0x25a81f2d9b', '0x221a39cc50', '0x1dd6f292c6', '0x2190fa7f04', '0x24ecb4860f', '0x24aacc9c09', '0x293fb68955', '0x27e4e65e6b', '0x23ae9b9b9b', '0x28237822f1', '0x2d2623c0c8', '0x28e735776b', '0x2df4e250ec', '0x295c200c38', '0x259d63972e', '0x23fa4f96e0', '0x24bcf88771', '0x231532e0be', '0x1f016b84e7', '0x22e0bc4753', '0x25bbd3e11c', '0x2a7252ac00', '0x29dea9f923', '0x2a57bc2f93', '0x2b022e981c', '0x2e8d9757a4', '0x2d2b1ccd05', '0x312cf97283', '0x34ffb30091', '0x2e5fbca07f', '0x2c274a27ec', '0x2890c25d68', '0x2da20a473f', '0x28aa11aa1c', '0x2ab1eee0b7', '0x26aea40c49', '0x2b839087cf', '0x30f2bf806a', '0x371071b9b3', '0x3df13b5e97', '0x3bb02d892c', '0x35e94f17b6', '0x38b97d2d6e', '0x347290a0da', '0x34a3def214', '0x307b7e8874', '0x30f17decf7', '0x2e92ee6ad9', '0x2ee86e0aa0', '0x296c2567c0', '0x2ade43e935', '0x2f099caafb', '0x2a783e15bd', '0x2853889824', '0x24cecb1bf5', '0x2967ff3834', '0x292f69931c', '0x2d1ad091da', '0x28179048a8', '0x2d195648aa', '0x32ba8d8702', '0x333b0d8e5e', '0x2cd3abdc93', '0x2a07f4065b', '0x2f47ca9ee0', '0x2c6dbd91bb', '0x2971001295', '0x2e8124d2d6', '0x2f00991f03', '0x29fb021cc8', '0x2e1269864f', '0x2b95216bb7', '0x2fa478aa7a', '0x35977b6252', '0x3c49898ec4', '0x3944cec195', '0x406b9ad596', '0x4876b2bbfb', '0x404e8fb894', '0x421cbfb92c', '0x41112cbcbb', '0x3fc6fbf908', '0x42718135f4', '0x4849fcdeb5', '0x42d1fa72a7', '0x46911c440a', '0x4037f0a98e', '0x46feedd17f', '0x480388783b', '0x4ecbeb76a1', '0x49f1cb1b53', '0x48aa0bf9c2', '0x43ac129d42', '0x44dc6556b3', '0x3cf93e960b', '0x40ae8fa3f0', '0x4824be8770', '0x5005bc1dda', '0x4ec136e121', '0x45fb0e9a0a', '0x44f57af2d7', '0x44220edf5b', '0x40c9aae74b', '0x3f20e968a7', '0x39ebcbe15b', '0x3bb583ff42', '0x400ee805d8', '0x3e0fc317e1', '0x39dc1602d3', '0x3df25d3278', '0x3a8ef07fc2', '0x393a75c9d2', '0x3cc07beb1d', '0x35a12e961f', '0x324be1479d', '0x3817304a99', '0x33dbf5a6d6', '0x3027c55dc3', '0x32375038d9', '0x2e42bc142e', '0x2aac742a73', '0x29fa63a16d', '0x2cb5772139', '0x2961880f5e', '0x27aa15f2a9', '0x2574a5d5ff', '0x2a227acade', '0x2f66a4111f', '0x31168b0b35', '0x2b3c2847b7', '0x262428924a', '0x2a3465cdc3', '0x2629de352e', '0x2489f25dd6', '0x28e3157fb9', '0x266380b67d', '0x24acc0c0ad', '0x23990dc42e', '0x27feb74d4e', '0x2860e49d30', '0x23b4a30c29', '0x22c57ff37f'], 'gasUsedRatio': [0.012404026017126223, 0.9996725264886994, 0.2983222680563394, 0.14804187950682066, 0.2820314569810398, 0.7442005201701616, 0.9996534692248241, 0.4464765666666667, 0.4572933530407557, 0.06455636240448366, 0.7999895333333333, 0.4355577112283189, 0.7733286416119117, 0.9705331458984046, 0.08996420726413404, 0.21080843333333332, 0.48813830038365796, 0.13619606044965643, 0.39862514792652115, 0.45370153333333335, 0.5707537, 0.5788993381296498, 0.23128152357213946, 0.6753296, 0.1169556, 0.9437769982387801, 0.11496969517629714, 0.08026482285551384, 0.48794582709707146, 0.113626905898064, 0.7678175754831306, 0.4258498308813319, 0.44257994847047083, 0.8382039, 0.9996789333333334, 0.6820664, 0.409099, 0.5225779359788499, 0.421228, 0.8621392333333333, 0.4974644740589185, 0.25974337576048406, 0.6328645666666667, 0.1125547, 0.5807083666666667, 0.9377803091385405, 0.2194135047859378, 0.078051323298436, 0.9270411446889107, 0.3087747355825582, 0.9999485995669806, 0.44409648515779787, 0.18848174328123302, 0.433343191886233, 0.09129783000585312, 0.3916775089632605, 0.938593604781716, 0.11316813875274971, 0.9999633617788874, 0.9993059876449785, 0.9978962560210566, 0.34399318672648616, 0.4156636577903312, 0.5122630361044715, 0.3726121164313709, 0.6023639184011875, 0.421854748991447, 0.10070870748390288, 0, 0.9997432154286421, 0.9997878855354067, 0.6232383085810046, 0.2186359143913265, 0.3101819228149296, 0.9996466516655047, 0.7849773870818826, 0.018272166666666666, 0.009792428973559347, 0.9999290332670977, 0.6259629370400942, 0.19550683161275234, 0.9944628826689739, 0.28167045534394164, 0.30139625735482756, 0.3044308550642032, 0.9998657437350782, 0.947974493850371, 0.8924174891498283, 0.016810431775386377, 0.3136261141661159, 0.9904914234297586, 0.9784682408339083, 0.4262094097576901, 0.08563114833495675, 0.9997273666666666, 0.7199332815160671, 0.031075427973766657, 0.5337113101843574, 0.03137907284088756, 0.8511709432781768, 0.7335692192628168, 0.13098123031641903, 0.7815664608115611, 0.34594394944369344, 0.0851435512069507, 0.4637849126833207, 0.2307465690380482, 0.3444332489113995, 0.9993205666666667, 0.9463739333333333, 0.6356313666666666, 0.05051632919545936, 0.778546093309687, 0.21338826666666666, 0.4088628787322513, 0.2655012233178492, 0.10168906433742102, 0.6249943874893362, 0, 0.9392100052367803, 0.37659671815693696, 0.9257977, 0.4740114, 0.9104893404923425, 0.5304923794759668, 0.481173, 0.3558853113268227, 0.9997738333333334, 0.8549669, 0.22088173333333333, 0.27856121502647335, 0.370402945709416, 0.5778095333333333, 0.0422739, 0.435758, 0.6161638173009277, 0.9995126995451863, 0.9404773205490153, 0.05309299910693167, 0.009522616610671327, 0.6463705315940327, 0.13711407647676477, 0.9993577605197669, 0.998321048177302, 0.9998007436210655, 0.1180305154761357, 0.7329092902324602, 0.16018543413340583, 0.6709979908331869, 0.09846279585395526, 0.7935482461798923, 0.10655754660978042, 0.2953600333333333, 0.04510427766046878, 0.9951489954723958, 0.40451458604021523, 0.9995498324930207, 0.670489085654152, 0.0935249, 0.48761573333333336, 0.7569936623553767, 0.2900875666666667, 0.43945219173189287, 0.9299640012997346, 0.10908405572553466, 0.4744672856722666, 0.9994398333333333, 0.9995360135839314, 0.9701765388314363, 0.33228183333333333, 0.20755146666666666, 0.5226896064006502, 0.052959749429099465, 0.9994221018097122, 0.2631164330604337, 0.9876970961722282, 0.12275478113854656, 0.5449260642589309, 0.3395460122899796, 0.9995933666666666, 0.8761704333333333, 0.6801544374748608, 0.02897128721740085, 0.26191247738289253, 0.8259899027141485, 0.5640271324900086, 0.7509127349472008, 0.17884863367529927, 0.6215887666666666, 0.11969161219263945, 0.2163600686027307, 0.6486465, 0.3624312140805497, 0.08411453050451351, 0.9993721196011728, 0.10420966466502952, 0.31567729199582206, 0.29038005962383634, 0.7864759149619165, 0.6390626951049081, 0.8179375575209712, 0.38775203535963404, 0.5230427666666667, 0.14873066883144725, 0.7933214162926978, 0.9993479292892826, 0.49010296452896596, 0.3519716, 0.6490380666666666, 0.1084671515067797, 0.2764427580132408, 0.4203922387205334, 0.2866135683453276, 0.44723337810858277, 0.49495802577122533, 0.12874564465731866, 0.7895736032901671, 0.9575194874612132, 0.3667935, 0.3221527488258952, 0.6589103816496895, 0.37808128982968514, 0.20006414678854556, 0.9732325440544362, 0.9993039313611388, 0.11526598382015454, 0.38463498212509933, 0.7742234, 0.036148866034349206, 0.36517016984955764, 0.9999477149406529, 0.4916792038817444, 0.24536990559571487, 0.402182326225808, 0.33368388706049296, 0.9993198924049994, 0.9935665975761729, 0.9998912569847599, 0.6670754564886409, 0.0975008, 0.9996197620309566, 0.5265772914721387, 0.1728037, 0.5199066666666666, 0.45647504788425897, 0.6991693192246979, 0.9466320639794504, 0.40087073333333334, 0.7189731, 0.26473222231823956, 0.025960791762098704, 0.9995143666666667, 0.9996538619962393, 0.8814413656418238, 0.03340318383208974, 0.6762833516050347, 0.2803060848067082, 0.22547070550033224, 0.19319296666666666, 0.568402611817106, 0.985824186769241, 0.9999682975944767, 0.9978743, 0.6131449360300333, 0.15829867623592428, 0.3629638183669931, 0.606001875195653, 0.070364267441504, 0.9981746332943027, 0.19887538649437453, 0.3958276367804755, 0.031295282446799036, 0.9997879448327289, 0.7044519399062245, 0.12753954503897103, 0.08108603690382454, 0.9994054290339162, 0.999469514111299, 0.9995134831659565, 0.1906148308838701, 0.8785682559433918, 0.6359834333333333, 0.1570041, 0.21355336819737808, 0.4754283344707759, 0.999861164292724, 0.9997351328300857, 0.18617303333333332, 0.6225944365327258, 0.11113321606691245, 0.9912186997844037, 0.5151476292854166, 0.5530263333333333, 0.3697877666666667, 0.9993753, 0.6408427333333333, 0.1300033, 0.1987788, 0.283451, 0.8538629666666666, 0.9854962666666667, 0.9994858666666666, 0.029539266666666668, 0.5876907666666666, 0.13600536666666665, 0.9994751, 0.9999365666666666, 0.0797198, 0.9640945949613535, 0.047282533333333335, 0.21375086104914784, 0.6747300513756219, 0.9997635021645824, 0.4234540198158343, 0.027328772715517285, 0.15489374402873288, 0.6645012666666666, 0.7621033, 0.06995746666666666, 0.6351407517226095, 0.43519352068707, 0.3570010335916968, 0.5796933, 0.3499034473830362, 0.9981716316268562, 0.39449929676263235, 0.999776666249777, 0.9994576666666667, 0.2767785, 0.3781086435762145, 0.4748364, 0.7729776, 0.17831866150629422, 0.9998705998792266, 0.10035278816024076, 0.16571370553357373, 0.8917851045281636, 0.0821795434839026, 0.6617771941783879, 0.023966682248550402, 0.9999482335154724, 0.4761745467144135, 0.9693702768257096, 0.22260248148866366, 0.30877353045780326, 0.5329019949658581, 0.28011035145001095, 0.2476073377538544, 0.4681943739194988, 0.03968930773545084, 0.9997002887534507, 0.9995069631734155, 0.9994327055945428, 0.1825162511789587, 0.33497840849289884, 0.30517906579770504, 0.8706195799707143, 0.5502884132711185, 0.33455195538943977, 0.9993984585228284, 0.3095211661386845, 0.27343938827645425, 0.011232477957647079, 0.9994266333333334, 0.24435204310342382, 0.9485548756876674, 0.9996512591174119, 0.6437872045367004, 0.041520215831667345, 0.3260727638868566, 0.9407663169712612, 0.2999551372188519, 0.5215615, 0.3366261487676049, 0.42021419219991274, 0.45878086201704493, 0.19740834174251598, 0.7367401, 0.4340504502646835, 0.6423043994841062, 0.0214614, 0.4786018213452103, 0.14160403216376335, 0.28116066666666667, 0.6028361, 0.9423625169978485, 0.9941501278734527, 0.1031497553425303, 0.8641661498239395, 0.7877031554339432, 0.029409431715925194, 0.997866777459618, 0.49094573226044924, 0.13556456666666666, 0.8831221, 0.05089133333333333, 0.43336801613224685, 0.6228521, 0.19332204564423827, 0.9386831387323481, 0.9737811996442923, 0.5506909995220666, 0.7696104325141127, 0.1663182723278014, 0.1743007925983145, 0.348716803010017, 0.2254664, 0.33926332396918923, 0.4114479404763392, 0.5027341391965934, 0.05393343379398077, 0.9998840865864524, 0.9790060731507431, 0.6575492818483328, 0.53947505000519, 0.285458, 0.529687673346356, 0.21108133034257498, 0.9997841772161805, 0.013516133333333333, 0.6724976666666667, 0.9998577333333334, 0.6051527, 0.14092516666666666, 0, 0.4638613939845593, 0.4089847817191296, 0.5329329, 0.9994151, 0.9997603666666667, 0.44775960391989444, 0.22446941259133912, 0.9999858194723402, 0.729169118754659, 0.16552706666666667, 0.12811146582029315, 0.9447304132393994, 0.032891083270861154, 0.7394000061920933, 0.04231278747798236, 0.5718536005076188, 0.14694622792294731, 0.3755154, 0.2537875666666667, 0.9151943539533021, 0.43437770089733163, 0.9998115491288885, 0.9998233216078776, 0.40709880269138604, 0.0942694660610344, 0.9838941959004167, 0, 0.9995446991584508, 0.29449003333333335, 0.5440316802691161, 0.20381869023077756, 0.5133523009840585, 0.527889418726915, 0.9994193986256353, 0.394925892198296, 0.0133295476810824, 0.5132115552789306, 0.41070529235455033, 0.7407967289459779, 0.019169012904038624, 0.9997733666666667, 0.9993853, 0.5230610691340094, 0.42586343080586875, 0.2987685666666667, 0.26523723749574796, 0.2459159295215342, 0.7490139778957946, 0.9997867996020259, 0.9994710333333333, 0.44539963274137195, 0.06569407254254121, 0.9996644386666487, 0.0381915392305912, 0.9996385189660824, 0.03057632098545349, 0.7135479917848877, 0.09617543213330877, 0.38939949777518074, 0.20863906117952496, 0.08661202282426335, 0.9993274839982706, 0.8843913786918638, 0.256543861572186, 0.7153796602360389, 0.06393911157454484, 0.9996372943099177, 0.5106648564233975, 0.3091020109153805, 0.6404208540760661, 0.0567098997915384, 0.1946761470529803, 0.999494633003838, 0.9998867944921823, 0.3749917886561735, 0.044045047657129556, 0.9995330997072922, 0.6832714676715717, 0, 0.3717899333333333, 0.9480885248887795, 0.3342963666666667, 0.29391409288829456, 0.3213532439748025, 0.19206543333333334, 0.6401841064466118, 0.9580658417274415, 0.7582327806019458, 0, 0.24187792809411154, 0.1332105485369058, 0, 0.9995412982569334, 0.999398143333243, 0.5320424040032431, 0.9996214952525748, 0.39674339403155406, 0.13431679710200684, 0.42234860743697344, 0.9998820506989139, 0.9998772595801569, 0.7830574256831098, 0.11640706776744947, 0.9999936604215479, 0.18460145986725074, 0, 0.9996118876749813, 0.24640876331484576, 0.9999671666666666, 0.9997336, 0.20795646949245938, 0.5480876115484374, 0.47724916666666667, 0.049688587572431143, 0.6492498059664855, 0.9705279852485243, 0.07931546092762631, 0.13597804246647885, 0.9563629415737659, 0.9995234666324376, 0.45234593948863766, 0.11914972726020305, 0.11863298541023419, 0.9993620916906362, 0.5939020694089013, 0.25621269689294085, 0.1439837, 0.19302475534025643, 0.9998432665203821, 0, 0.9538792595271899, 0.9998145185249248, 0.8981834448530938, 0.39362252098888845, 0.30063123733920777, 0.9993591559807791, 0.7092586643848451, 0.9540400451497258, 0.29616038521000293, 0.16589526666666668, 0.37289893333333335, 0.24828893333333332, 0.5903198, 0.3243681, 0.49321156666666666, 0.06982601844034032, 0.9995807329420174, 0.9998651, 0.8295635978134018, 0.46029214494907345, 0.20424923333333334, 0.03368516022562699, 0.8006650181597824, 0.1814360476887475, 0.8325842648220062, 0.16464937383408776, 0.5089315433040729, 0.4039849255177933, 0.005370126381278138, 0.9999098784045801, 0.6918152622313298, 0.8290302356231427, 0.5173454, 0.19923678805687087, 0.9757580107074767, 0.016757245757244656, 0.6065747656062291, 0.11493206666666667, 0.5270819666666666, 0.9993289333333333, 0.9999327666666666, 0.30692229038344054, 0.6745068333333334, 0.28317758958289435, 0.8682710437196408, 0.008726195941453041, 0.8909777631584912, 0.9995373, 0.22501706666666665, 0.7513638931583309, 0.3712462, 0.052846328893169155, 0.18336716666666666, 0.3061305, 0.999305121451097, 0.9573326268437851, 0.5533667, 0.25085499323422655, 0.2546812377024885, 0.9996573333333333, 0.7709826312060394, 0.14866209832674035, 0.8557149324959433, 0.16000652992455153, 0.2020998355426021, 0.20665882148421044, 0.9562818676851689, 0.9249584356876408, 0.08780252849116918, 0.25314943333333334, 0.17737327166644895, 0.9993822327567505, 0.9994267730421972, 0.9994612656610292, 0.21883418357687986, 0.8899978684942457, 0, 0.9813840959262312, 0.5391322666666667, 0.6443159411832321, 0.08287220540309387, 0.1928338604315296, 0.08949121094402952, 0.8416902676543729, 0.9968655226629829, 0.21119807986610734, 0.4546792338445997, 0.11717258298555956, 0.43344532171179073, 0.21199797112801186, 0.6928444200167857, 0.0662001, 0.7414156924236517, 0.9995956662892885, 0.9529401688190093, 0.0730325696607967, 0.9998665694560034, 0.477340469886649, 0.20698997194619356, 0.9218032747322257, 0.24484192593584714, 0.36225112577946733, 0.26497323234613934, 0.9997115289736227, 0.36596939692892444, 0.26621849317641105, 0.10720560801369299, 0.9986708216865691, 0.21971244662005493, 0.9995779, 0.9995330666666666, 0.5834341, 0.27101563333333334, 0.3253859393697946, 0.8245730696015316, 0.0192657309676388, 0.8611260124356201, 0.11856083325258766, 0.1558946750349126, 0.7772561261662254, 0.40572036154669516, 0.950599174016983, 0.9993129896556014, 0.4454411590327304, 0.009021095189145211, 0.27846833134418936, 0.9995771943129941, 0.981160527272427, 0.9996676585366636, 0.10855659249079162, 0.14516995358959797, 0.3019555710778638, 0.8224943236917508, 0.1099473672743407, 0.5774311410623402, 0.20257630904871532, 0.09162186666666666, 0.9998712409334382, 0.9996633428227462, 0.8055115472924212, 0.11805694132950292, 0.3186793593036987, 0.7393314333333333, 0.2704212330006918, 0.979014247079964, 0.9930564666666667, 0.2683312333333333, 0.5622351333333333, 0.4204337, 0.32473467007199197, 0.13436432144641816, 0.4188892502791729, 0.3248036504602692, 0.3426499, 0.09268543333333333, 0.45252023333333335, 0.5588451456180293, 0.08086201471018192, 0.33662874337569165, 0.3997336598287676, 0.999479710115324, 0.9732019374791029, 0.30695010517687943, 0.24047816467974095, 0.9996599757528779, 0.5294770160768483, 0.08488649365440959, 0.9719644886595619, 0.13373190971533602, 0.7518719666666667, 0.048877261979656465, 0.41346878530015824, 0.3867001865423389, 0.9996305992981387, 0.6946351666666667, 0.05917666666666667, 0.19107643333333332, 0.12917183629814513, 0.999457332826844, 0.9997664333333334, 0.7463221502463823, 0.0649979606647633, 0.656283773636478, 0.6464746984193463, 0.4559080662842168, 0.3364892297491099, 0.15979880796635193, 0.7947013712186884, 0.22803974854630651, 0.06200222425456432, 0.9993873854027798, 0.7050777132578926, 0.9976174034948222, 0.9835622423978516, 0.12097269342800851, 0.7395064984592779, 0.014664417968725474, 0.9997221676051699, 0.9997273718829514, 0.9617036, 0.20163326154656688, 0.24403871317069006, 0.24048016134170613, 0.49935585863711357, 0.22622007074036682, 0.9996894935809636, 0.19632762027701237, 0.028550419902141456, 0.46505728459508905, 0.4649006508163037, 0.3278126380502562, 0.9999955827586234, 0.20010982183288126, 0.9814102563032093, 0.9993461244082646, 0.6606802130544513, 0.0870185064015051, 0.9998165965726359, 0.16179448462847942, 0.055761461878430875, 0.6127658279899172, 0.3536606993458224, 0.24925470413585984, 0.5310200045566795, 0.026229887803455518, 0.7711308503660472, 0.17231441982575518, 0.25774468089654284, 0.9975007139885902, 0.36334097918750424, 0.9998045327736559, 0.9994022139957671, 0.27970012846947223, 0.9996393712903678, 0.9997262389060148, 0.763983871463266, 0, 0.6462546684518357, 0.0621958, 0.553548293424804, 0.024558147531661384, 0.9993766747412342, 0.24902946666666667, 0, 0.6579017473749642, 0.9546913805116914, 0.9994527311840024, 0.2603787545734747, 0.3643967324574086, 0.9997988625075385, 0.4634687, 0.19129619926142122, 0.260160484821802, 0.9995959666666666, 0.3432421333333333, 0.9997125526409872, 0, 0.9993131286061082, 0.9998674330814562, 0.9994828, 0.19270169346300003, 0.5366555187670015, 0.5185523676543031, 0.3495296974397585, 0.17196853280126523, 0.6505545315896573, 0.353907, 0.5693630666666667, 0.9665658515540425, 0.8111705904258844, 0.23608886112248983, 0.5715838336231561, 0.32660866666666666, 0.3887474452135844, 0, 0.9994049, 0.6015233333333333, 0.19212991486186262, 0.4060893134124019, 0.10462120026103751, 0.1848229376828619, 0.3331446190366491, 0.13003590623560035, 0.9998904487599231, 0.945067658504882, 0.5638447909874751, 0.9041048210239951, 0.28546306666666665, 0.1624303, 0.33501961331907276, 0.46703835667478627, 0.49515936844400843, 0.030921791289114015, 0.3433344965826063, 0.6495800460767005, 0.9997661709878655, 0.5697890508580283, 0.33261213333333334, 0.16445284513006383, 0.5784673, 0.469743861785633, 0.692803603043483, 0.24609086666666666, 0.3796735178568539, 0.3958071085296571, 0.11050311310962756, 0.999793932941806, 0, 0.9999084, 0.25542634284288057, 0.15338566666666667, 0.12244086666666666, 0.7397675496789281, 0.4589358616734709, 0.15002973333333333, 0.9991529333333333, 0.6315090647316229, 0.9571779333333333, 0.8074798958816716, 0.7558321624822484, 0, 0.032100462060893314, 0.9997428, 0.9998837, 0.6062542072333634, 0.06933773138188262, 0.39443853224922204, 0.7140427839748044, 0.12245455578992713, 0, 0.9995614270092829, 0.9001995840984057, 0.4721113, 0.9998141184867023, 0.36862781071929, 0.07767448830068137, 0.999577632544914, 0.999313561745026, 0.12383883950313315, 0.99418370390736, 0.09990804298696192, 0.13780701718748117, 0.325917042674002, 0.58454, 0.31976676666666665, 0.03512720171247223, 0.9995655853269305, 0.8275232564044267, 0.9995928482497568, 0.44564528216809635, 0.5451814306827398, 0.5628970560998511, 0.82966182460974, 0.3810233678279596, 0.8548739666666667, 0.8109783870616324, 0, 0.30847043333333335, 0.17495110642208783, 0.9996864663740352, 0.06446951465260528, 0.6997543395414338, 0.12404442759981607, 0.9996338989749172, 0.9995467746388674, 0.999793332554886, 0.9996402333333333, 0.3544376249925281, 0.11286604243717435, 0.7087280333333333, 0.19839896666666668, 0.5146890666666667, 0.184064461053781, 0.5380285, 0.3063574752587432, 0.5286837110609207, 0.032234021304416834, 0.639613, 0.8890362333333334, 0.11155716442893515, 0.2981248215206608, 0.1509954, 0.9997259333333334, 0.4786473333333333, 0.8806746, 0.05546143333333333, 0.9995432333333333, 0.9993239064613262, 0.5395794369408078, 0, 0.2505268, 0.9995703, 0.2587364227835148, 0.23105058231387682, 0.9886958333333333, 0.5428232666666667, 0.07263099082921139, 0.8898401971841841, 0.2838699639651116, 0.8726193923399065, 0.9994922134039614, 0.9997434654151902, 0.29972713277202806, 0.9995078314794986, 0.9994282561542969, 0.049744866666666665, 0.6123002666666667, 0.43676143087057845, 0.4207091259951843, 0.6672128666666667, 0.8519169, 0.19739318778120168, 0.7242799759946442, 0.14015268991087523, 0.9221399546612487, 0.5573546169451713, 0.8767477841187217, 0.2536919823480462, 0.43074479633568996, 0.22519709946293148, 0.5702659391260207, 0.04184115217282365, 0.7432703319631023, 0.9614369605825812, 0.9368440873306606, 0.4366348416516657, 0.05436070419183675, 0.4415962183102511, 0.4520950576006218, 0.30360332631162407, 0.3975607496449477, 0.1700395648411329, 0.623475988943973, 0.7913583427748985, 0.37532234238466416, 0.2291812158454372, 0.7825471232434947, 0.28120703085808946, 0.40915063333333335, 0.7462786666666666, 0.0310583, 0.25139028405428765, 0.9608022244801067, 0.19824783596109208, 0.2143141, 0.6711720333333333, 0.18493068185583444, 0.1898416, 0.4348014666666667, 0.7602087666666667, 0.20226326666666666, 0.33407014716795713, 0.2772569680150691, 0.9996875, 0.9999448127763427, 0.642370015762102, 0.02305553601793967, 0.028738587936650413, 0.9261459666666667, 0.11699681405559195, 0.32971264106513165, 0.9760074822467307, 0.2555838104231128, 0.3214196, 0.38254066666666664, 0.9940878333333333, 0.5383552, 0.03709257909651226, 0.39535209518441283], 'oldestBlock': '0xd11b1d'}}), - (('0x400', '0xd11b1b', []), {'jsonrpc': '2.0', 'id': 16, 'result': {'baseFeePerGas': ['0x187c1ef63a', '0x16000e99ad', '0x147a5d40d1', '0x1709896f9f', '0x14d3cfc49b', '0x123955cc08', '0x147d06e548', '0x16de3f7d8f', '0x1402778dde', '0x168261b882', '0x195208b45b', '0x196863b784', '0x181ff62e86', '0x1af8c42ae0', '0x1e57ac3c60', '0x1f0f72cd86', '0x1d8921e404', '0x1aded442a1', '0x1b9987b357', '0x18a0deefc8', '0x18f21fffd9', '0x17730a095b', '0x17d86fde9f', '0x1504f4c281', '0x16d70617fb', '0x14741a2a30', '0x141855dd8c', '0x156600df7c', '0x1462105d69', '0x16b437aa5b', '0x14150c19d1', '0x13a6f7071e', '0x1406559b13', '0x12dbee59e0', '0x13a68d2b2c', '0x15199d79fd', '0x14c1a40b9f', '0x1261f33e41', '0x140c382cd9', '0x1225a9b8c4', '0x13599d03c6', '0x12b71d6753', '0x12d4349bf6', '0x136ae63daf', '0x1397587e92', '0x118aaa496e', '0x13bbdc0f2f', '0x11f7930b55', '0x119cb41b70', '0x12d67b17e7', '0x1530d31e7f', '0x17d683ff93', '0x16629693eb', '0x13a353c725', '0x161718f210', '0x188d9117ad', '0x15a580f3ea', '0x183e144046', '0x1966071eba', '0x17bbeff5aa', '0x166edace16', '0x17903203cf', '0x15442459d2', '0x140e2aea8a', '0x15142c2814', '0x141b5f041d', '0x1225a5e966', '0x146a1a1c25', '0x16f68850e2', '0x19d4c461e8', '0x1845c42918', '0x1b4e47eeed', '0x18f9e670b3', '0x16d87cfbd7', '0x17dd111bc5', '0x152c4e61ad', '0x17b231301a', '0x171b95ba18', '0x14b015d306', '0x1744913951', '0x173b1e16bb', '0x161232a8d8', '0x1405065c0d', '0x1252a152e1', '0x146aef5d06', '0x13196f9acb', '0x12493056e3', '0x1490a1752b', '0x172232f9c9', '0x1a064401c0', '0x1765d19a5e', '0x16bcdf7b01', '0x17d505b360', '0x150fc0754f', '0x16dc8f8d25', '0x1546c5a7ac', '0x1350cb19f4', '0x15ba4cd106', '0x15d3168696', '0x14ea823630', '0x124d31ef6a', '0x14966733e3', '0x12922f21de', '0x14e3cd4d16', '0x1749f03923', '0x17b694400c', '0x1715061de4', '0x1670de3c4d', '0x193e9abe79', '0x1c24897dc4', '0x194b9cdee0', '0x17c8c7cf16', '0x1ac19fc0d1', '0x1de5f7b442', '0x1bf034045b', '0x1f5c15f44a', '0x1bc14f6b27', '0x1dce51ed03', '0x1b0e262a0d', '0x1b8845f2d4', '0x1aa56ff745', '0x1c19d4a6d1', '0x19753871b1', '0x1ca3759c7e', '0x1d0e5e3015', '0x1a07df49f2', '0x1961222b7d', '0x17c6deb6fa', '0x16c399fa6c', '0x156d88ebc7', '0x168a1e1c6f', '0x147fee608d', '0x168db25c24', '0x14df5b8b04', '0x172bbb8386', '0x1a1092223b', '0x16fb23ada9', '0x15516390ba', '0x16f4bd2882', '0x1716a21765', '0x19f8d1a643', '0x1c8d8443e9', '0x1925aa9b9a', '0x1901657111', '0x1730d2236f', '0x14d1fa802a', '0x14cdad0339', '0x12d9d13521', '0x15344be6a3', '0x1329d3a2fb', '0x158ed52a27', '0x18384dcbc4', '0x18ab8349fe', '0x1921c9c4ca', '0x16b483f795', '0x198a9df172', '0x188ceceac2', '0x16ccd3a8e0', '0x17445a7424', '0x1a2837e1fe', '0x175daca13e', '0x15d6d13b1f', '0x188c03f038', '0x15e195cea7', '0x15b56da375', '0x14ba3e7cf8', '0x162416753c', '0x174a64d5e7', '0x14802c2831', '0x170f127967', '0x194ad4ccc5', '0x17c8bb228c', '0x1ac1d23da3', '0x1b8e2ad6f2', '0x181c657c14', '0x162b136286', '0x1763b815b5', '0x18dde62947', '0x16392aadab', '0x144a7a710f', '0x156885e159', '0x13e5af4d93', '0x165cf570ed', '0x14bbdfc19b', '0x1276a62802', '0x13f634062c', '0x120368a00f', '0x12d61d8a9c', '0x1424968280', '0x15bb759d5a', '0x13f6a9e251', '0x144dbdf333', '0x151d47777d', '0x130497ae80', '0x13478d5c30', '0x155492f858', '0x12aa00994d', '0x137c77a26e', '0x11ae647d17', '0x10c6a54197', '0x12b1e19ece', '0x134fb38249', '0x157c461d2a', '0x14d07d70c9', '0x126d2387c2', '0x14ba99f5b5', '0x15280a362d', '0x15c6e98dd3', '0x1652612d86', '0x15a17b8ea8', '0x14273b29af', '0x1674e3c2ee', '0x1942a32bae', '0x1c3f3f5910', '0x1c36c66374', '0x194e802f60', '0x17fc15a327', '0x1adabd92b0', '0x1a2b664cda', '0x17ca2fa7b1', '0x17a55b1e29', '0x19d47f2b39', '0x19ad07a9a9', '0x16ac020fef', '0x15b90b5bf9', '0x1301e9f07a', '0x1562040640', '0x180d980110', '0x19fb20de86', '0x1a5d738ec4', '0x18d76839b0', '0x179079a8e5', '0x188a232c2d', '0x16b7ad3283', '0x17a5a31fec', '0x18f8ad1848', '0x1748165afc', '0x14d13ef50a', '0x162253c618', '0x16b3d1cfef', '0x197cf84fab', '0x1cab9f58b5', '0x1a1eabf9c8', '0x1d61a73bf4', '0x1ae6543e32', '0x1e4227df45', '0x1b587688e9', '0x1d0e38e000', '0x1d35a57e12', '0x1d799f5257', '0x1ad2da35e7', '0x191ecb46aa', '0x1c09b2399a', '0x18887bf267', '0x17c9eca173', '0x1a6a808507', '0x1bdb6d2a0f', '0x19eba457c5', '0x18e641c4f3', '0x18488cd852', '0x19e4db8b8b', '0x17810e6ae1', '0x1a4edf0276', '0x1cb7d1a11c', '0x1a8c37ca82', '0x1db8933445', '0x1d5ec5f8f5', '0x1b65b34090', '0x19e29f4455', '0x19b5866cca', '0x17d8ad165d', '0x1675555795', '0x18518c56e9', '0x1b5b9d236a', '0x193ff5b9a4', '0x1c2403e4d4', '0x1a2a2c671a', '0x18c11bb7cb', '0x171f16713c', '0x1a02317fde', '0x1b5ebf7249', '0x1951468ddc', '0x1c3938b966', '0x1fb7e6ee05', '0x1e70cbf1fc', '0x1b9468ee46', '0x1eb84d8ede', '0x1b90d559cd', '0x1ac50b0d2f', '0x1e1d92951b', '0x21e128fd41', '0x1efbc1e994', '0x2091c19158', '0x221a6a8d39', '0x1dd71d3b92', '0x1e37e4fe99', '0x1b8641a4ff', '0x1815797060', '0x190d38b6be', '0x19caad8860', '0x1cdbecb290', '0x2076d4537c', '0x201eb016cf', '0x2421565e24', '0x2167ded522', '0x20e30b4462', '0x1d8f45809e', '0x209d585031', '0x1da6033e65', '0x1a78e99bb3', '0x1b63d6866d', '0x19c3627920', '0x180e5ec698', '0x1b100e9ff7', '0x1e71867331', '0x223f0f2ad1', '0x1ebdf4b889', '0x1ea9e396a4', '0x1c307a1cb6', '0x1fb686adeb', '0x1cdf788897', '0x1ea1c36fe7', '0x1dacbebee7', '0x1b04a160df', '0x1ada258d87', '0x1a1629166c', '0x18eb3907d7', '0x1c08135122', '0x1f88e28e97', '0x2378b6c1ab', '0x20fe8a445e', '0x1cefa78aa0', '0x1f656df585', '0x1c9e70f4c9', '0x20312c726b', '0x1e9d35ae97', '0x1b46a015b0', '0x1af84ae3bf', '0x1c41451a97', '0x1a9c750076', '0x1b615efe08', '0x1ab25d6aa5', '0x1e07ee4e95', '0x1ff05a00e5', '0x1ce0634697', '0x1be2e88e7e', '0x19347611f6', '0x1760935a76', '0x147480ef28', '0x14b60fb254', '0x174c8efadd', '0x198a33adb0', '0x17dd970615', '0x178e927624', '0x1a80313100', '0x1d9d0b6e9d', '0x1c4caa06c4', '0x1fd5fb0b6e', '0x1feb044a82', '0x1ca020996b', '0x2033194c05', '0x1c74769299', '0x1ce8cf3fc4', '0x1ab66fcd1d', '0x1bf4041528', '0x18c3695e10', '0x1b54a17373', '0x18af75d6f2', '0x1b36918a64', '0x1a27047d8b', '0x1d2aae97b7', '0x20cf3ccfab', '0x1fc60c4986', '0x1cac8a9db8', '0x1c5362135f', '0x196fc5fd1b', '0x1c9be7a792', '0x1b2fd90221', '0x186238a41e', '0x1b6e767750', '0x1800a7a866', '0x17a5aecdb3', '0x16e5f5147a', '0x19c209ae58', '0x1a76cfd3bd', '0x180b810efd', '0x15e7f6ee24', '0x18a428b4d9', '0x1a03b2068d', '0x1d440f5adf', '0x1eaf344c5e', '0x226ee1e220', '0x1e847aa975', '0x1ba5556af0', '0x1a39822376', '0x1d7f99487e', '0x1ef2a9c621', '0x20b63fbc85', '0x1d53f50855', '0x1a82b60f0c', '0x1811a5073f', '0x1b13652773', '0x1c7ecff1a7', '0x1951afd139', '0x1b7d614a1d', '0x1eea2f410e', '0x22c769a570', '0x1eb62e4cb5', '0x1c877d7089', '0x1dc5e907c3', '0x1c3fb0a270', '0x1b164d897b', '0x18fd71e91c', '0x1c1c140bb0', '0x1d4a316a54', '0x20f23bbd47', '0x20551ababc', '0x1e7dfb9ade', '0x224db6d365', '0x259d59d926', '0x22cbbed49a', '0x209ec1e4c7', '0x1cf21267e3', '0x2031d470ab', '0x1d516e93bc', '0x1af770ca32', '0x1b6f409827', '0x1826e0e466', '0x18336f76e5', '0x16efa8c70b', '0x194d26cbf0', '0x1a1ad1862b', '0x189384e053', '0x16b72227d5', '0x1837b04e76', '0x1558e49294', '0x156f6dfed8', '0x134febfb3c', '0x15b9db55e2', '0x16cdad7d3f', '0x1865f19d42', '0x177cc1a95e', '0x1972a66fd0', '0x164451a1d6', '0x190c7aab81', '0x197731f71c', '0x16ebc6c2ce', '0x18ba6b620a', '0x1bd15358a3', '0x1d05da53ea', '0x1cd5af9068', '0x19aa657f7e', '0x1cdf31f682', '0x1b7929127d', '0x1860ffd9f2', '0x1b6ccb63b4', '0x1ed9d6a02e', '0x1bc74610e8', '0x1aa82aa058', '0x1cd05c75d9', '0x2069dac1e2', '0x1f2c6c7b5e', '0x22902f7a9f', '0x23c83fabb8', '0x1fe49fdee3', '0x22cb67a7ad', '0x242e275e84', '0x2105e72c57', '0x23ad086446', '0x242596c4bf', '0x2108f9ae70', '0x1dd322d67f', '0x218c7caad5', '0x1f9112bf3b', '0x1ee4b9037a', '0x229b15c903', '0x1f7da28386', '0x1cf32f6802', '0x1fdb429128', '0x208215193f', '0x1d6af95372', '0x1cad54f7b7', '0x2041e1faae', '0x244905d65d', '0x2140f04d8b', '0x20f2461cd9', '0x1faaefe7a4', '0x1c77e76b63', '0x1d3f4c815c', '0x1a504a1148', '0x1c7fd743a2', '0x1cf62729a1', '0x1d337d759d', '0x20d8c19fdb', '0x1f5b59c66f', '0x1d8647942b', '0x1b169863de', '0x19ba0a1d64', '0x1cf08ab14b', '0x208da0bf13', '0x1ed8fca281', '0x1bbdb18f64', '0x18e3e15b06', '0x1bff4d4dbc', '0x1bb3cee4ca', '0x1e54bc88d7', '0x1e322c80e4', '0x1ab1891df3', '0x1a0b1a894d', '0x178bc9ae40', '0x18b64047b0', '0x15df93a076', '0x189b802945', '0x1badfa4687', '0x1f0653c41a', '0x1d9bfa0eef', '0x21476e406f', '0x1d8827aa85', '0x1ac959955d', '0x1e226fa832', '0x21e625404c', '0x2027b60019', '0x1fc419d394', '0x1e24932104', '0x1b139a8edd', '0x1e74fa5698', '0x2242fee315', '0x1dfa9f06b3', '0x1f022a8d5e', '0x1b21e53bb3', '0x1d1b082c4b', '0x19e380a56d', '0x1a7a0fd39b', '0x17645af287', '0x19c813596a', '0x1d0103ebf2', '0x1af44ece1c', '0x1aa754bc46', '0x187be063bc', '0x16f3994613', '0x1972875e9b', '0x16a760d4aa', '0x1568c2b686', '0x12bbaa5fb6', '0x14f6cb590b', '0x14a5b1a78f', '0x154ef27bd3', '0x177ebd97eb', '0x17566b83b2', '0x17a95f8db9', '0x1707b2ef09', '0x1750149f34', '0x1a04ede720', '0x1987b2cd6a', '0x16cc04d419', '0x176908b653', '0x19ef53c5af', '0x17b3204910', '0x16fa8e4bf9', '0x17dd9d6a5b', '0x177bbd3e29', '0x1a6a4c88b5', '0x1a8214e260', '0x1d99e0d0f9', '0x214c2e9f71', '0x1d7a834685', '0x1c7ff24847', '0x200f0480f4', '0x1c0d23f0d6', '0x1f8ea483cf', '0x2043852c51', '0x1e25f8fa10', '0x1ba60ad108', '0x1c4bedc53f', '0x1a0700ad0c', '0x1b952dc2e0', '0x19ce28dda9', '0x1cc6c756ad', '0x1a4e9a25d2', '0x1704c6e118', '0x16e46b6bb0', '0x1985dc5aa0', '0x17baeb1c64', '0x1610fe1445', '0x137415f33c', '0x13f7b30ec0', '0x1671dc7585', '0x17094504b8', '0x19ea317a1b', '0x16edfe24f8', '0x171f2c5af5', '0x157592d7e6', '0x1822284a90', '0x159f5f244e', '0x141f086eee', '0x16a274fbc5', '0x1493a18143', '0x155125d522', '0x17bf3e77db', '0x1883a69513', '0x16ea624696', '0x16e9888403', '0x140c577383', '0x168d4c9aa8', '0x14fcfbde60', '0x12ac383143', '0x14c20ea51b', '0x12ebdacfcf', '0x14061374e9', '0x133450c55d', '0x14411b294b', '0x16c92da4bb', '0x19a1c8b5d5', '0x1746b4586e', '0x14c2be92ee', '0x175a81bdb2', '0x15d2493ed2', '0x140ad18993', '0x14b504f683', '0x174abfb4e1', '0x1a32aff881', '0x188f28d13b', '0x16552b1923', '0x166549161d', '0x17977d5a2b', '0x1522860ef5', '0x17c67ed6d3', '0x1abf19b78c', '0x1d20782ac7', '0x1af5322963', '0x1b97f8f589', '0x18b891bdb3', '0x17fdc75053', '0x18971a2408', '0x16b6542741', '0x198ce22c74', '0x1cbdc17482', '0x204b14f26c', '0x1c775d2e96', '0x1b01ae603c', '0x1b80c94b8c', '0x1ec96e19f2', '0x1f09da5167', '0x1b6504a18f', '0x1aba460e71', '0x1e10d66e4f', '0x1f51e3222a', '0x21c7263302', '0x1e2e4d071d', '0x1e1d715b75', '0x1ca91fc4dd', '0x1bc1b1128a', '0x19c1df2dc3', '0x16d61ff4c1', '0x19b0d9410f', '0x167abe18ee', '0x19493dc390', '0x19f68a1406', '0x1703bf831a', '0x15798ced58', '0x1827e61dd7', '0x16e0febf08', '0x19bd075102', '0x1cb7fb63a7', '0x1bd98caca8', '0x190e703e7d', '0x1c2fd0ce7d', '0x1d8245dba1', '0x1f1ecec27b', '0x1bd2eaa9e4', '0x1f4cd40ca9', '0x1f8ee2ded9', '0x237f8409cb', '0x231f49fc48', '0x1ff6e5cc0b', '0x20c690a155', '0x1e55613b5e', '0x1c97598503', '0x1c528b24fb', '0x1b426f396a', '0x1cd8032f3a', '0x20728c1568', '0x207df766e6', '0x1d5a48259a', '0x1a70ab60c0', '0x172f231676', '0x1a148e3c26', '0x1a0b8b50de', '0x17f2addd20', '0x17085f1814', '0x16981ff181', '0x16b36b4285', '0x15415bfbd6', '0x17e90b6b50', '0x18a828daca', '0x15b24e287a', '0x182545045b', '0x17cb494096', '0x15047f3a77', '0x12e8de846e', '0x138a256787', '0x15fa9cb106', '0x18b9209df7', '0x163570e5b8', '0x16931fa57a', '0x170c57e87a', '0x15d2e6e8e2', '0x16fe289780', '0x151c7e2765', '0x17bf5afc1c', '0x1ab69c1a71', '0x1ac7227737', '0x1ae3367a74', '0x1b97c5e06a', '0x1b87d88565', '0x1ef8911a28', '0x22d7a122ef', '0x2030362195', '0x203671761f', '0x223cf67724', '0x1e45ea2f49', '0x1ff15841d6', '0x1c84eb50ca', '0x1b1fd4b122', '0x1e8378a3e6', '0x1f1cda63f5', '0x1d1422b663', '0x1c24d20e57', '0x1c6373332f', '0x199ddb491d', '0x1891004c0f', '0x18017f43cd', '0x1824113e43', '0x15e86f28da', '0x18a54b2fd6', '0x1b4b9a1aef', '0x18971f9e9b', '0x18efa764c8', '0x164a6800fc', '0x158d68a4c5', '0x149cfcf032', '0x162d099ca8', '0x14aefad25d', '0x169ab47aa7', '0x145f23aa45', '0x131aa318a4', '0x12dee77b88', '0x112a24c3f3', '0x134ef6db2c', '0x14ac1a3873', '0x1283fc1248', '0x13de97f571', '0x12bdf18308', '0x1303a34406', '0x13d2d9b32b', '0x132942cd27', '0x1452718945', '0x13bbc4618c', '0x16329cff18', '0x164dbd3663', '0x13f468a36f', '0x144ac781c2', '0x13cae7bde0', '0x15f9d03074', '0x1643f56280', '0x16d9773068', '0x197c193cc3', '0x1cab87c977', '0x1a5efd9326', '0x1aae84cb51', '0x183f968098', '0x1b46f00ad5', '0x1d0b64ea67', '0x19c13f6114', '0x185b26ef6d', '0x165d7f35e2', '0x1928dae34e', '0x172e2bb3d4', '0x1a1364673e', '0x18c12585cf', '0x160643a391', '0x1461594758', '0x16a31d84ad', '0x17275b5d24', '0x16ed0f2606', '0x15f01af353', '0x18ab925828', '0x1b063cdca2', '0x1b4581295e', '0x1b120ec28b', '0x1b457af339', '0x189485cfaa', '0x1ba6401565', '0x19528aa34c', '0x1afc5597b6', '0x17ae87630f', '0x157bff3323', '0x182b5823e9', '0x1b3074dffe', '0x1b5236785e', '0x19d02d49c5', '0x169627a08d', '0x17e1b2caea', '0x1812c29735', '0x15ac4c4b0d', '0x1860ef6da7', '0x182533f22e', '0x163140340f', '0x180949d378', '0x17e327d10a', '0x15b1ec0a8f', '0x17a3a80bc3', '0x1666ad2b65', '0x17273cc39b', '0x14cb7baf7b', '0x138fd22666', '0x1571713bd4', '0x12d58eed2a', '0x152f938a02', '0x17d5617729', '0x1acf9981f7', '0x184d8d5ea6', '0x18d4154f80', '0x178ce6988d', '0x17cedcf8ac', '0x16afd86a98', '0x150ba06784', '0x17acc93f69', '0x16897ceb67', '0x13b84d4dfb', '0x162f3bf7d0', '0x18f51e0629', '0x1c13297c8e', '0x1b34d80b89', '0x1e9aecbf07', '0x1d0d969db5', '0x1ac29603f1', '0x1ae7be4555', '0x17daa45844', '0x1ad5cf1eb3', '0x1e2def3971', '0x1b180be5a1', '0x1bcfc1d317', '0x1c88e5934c', '0x1b5111560c', '0x1eba5c2b3a', '0x2259f13884', '0x2354e9b387', '0x1fb44631a5', '0x1f88c666dc', '0x2378d3cc19', '0x27bb763d5c', '0x28361960e1', '0x23f6bf8b98', '0x2874013d8f', '0x2b57e9af92', '0x27aadfca8e', '0x2c9eb7dd1d', '0x2c0dec433c', '0x2943470c9e', '0x28cf5035ab', '0x2de8d46f94', '0x2a91f12769', '0x253fb3027c', '0x2097bca22d', '0x247384a411', '0x266f69dda0', '0x226064d1e7', '0x1ea207b0bd', '0x1ef7e596e6', '0x1b6024a514', '0x1d676d6d9a', '0x1e91d8c635', '0x1dfdb7e745', '0x1bc677efec', '0x1938925cd0', '0x1c5ec06512', '0x1fe97d37f1', '0x2177d6dff6', '0x1ef9369bff', '0x1bf2d9b11c', '0x1ad6b3e742', '0x1bff43c806', '0x1f2cd6175f', '0x1ba9f9de7c', '0x1d1427b052', '0x1c67681320', '0x1ff3818ecf', '0x1cfdc5b809', '0x209c8f8b22', '0x217e05e74c', '0x25a43941fa', '0x229da502aa', '0x217ec99e84', '0x20d0f57e85', '0x1fa6e2d70f', '0x21705dea27', '0x1eef4b596b', '0x1e49631e0b', '0x1af91ab84c', '0x1e35999671', '0x21fbd50a11', '0x1f8b2d5d96', '0x237bb51b4c', '0x2603766945', '0x2163cdd7e0', '0x22b9522b52', '0x241b53b120', '0x21048515cb', '0x1e8b93ad4e', '0x224561744a', '0x1ecf0a38a1', '0x1d20512f23', '0x1cfbc2a424', '0x1c202e0f2e', '0x18b86fb88d', '0x1a919d91a6', '0x1de2f729de', '0x1b0addd527', '0x1adce0f602', '0x17ef351b6f', '0x181ef81486', '0x151b1911f6', '0x16c92ee9a8', '0x17c4742135', '0x16407b8c13', '0x14409ebae0', '0x16a4332b2b', '0x1547210c83', '0x17ef87675c', '0x14f1967a71', '0x178f1ec906', '0x1a80cc1115', '0x1d5fd0eb4b', '0x1cc1bfd2a9', '0x1cb4e4d79a', '0x1a92201017', '0x18d2640f85', '0x1926770cc3', '0x167ac39e27', '0x173ea50b58', '0x187e723886', '0x158fcb7efb', '0x1796635a6c', '0x1797e9cb36', '0x18044ef158', '0x18b5d27564', '0x15f1f50bb7', '0x18adc974c9', '0x16e9e46321', '0x1972ca09db', '0x1a061d7fe9', '0x199de62059', '0x1a28fe7d57', '0x175e733fd1', '0x1a2b06feae', '0x178525d50d', '0x164d3d2d96', '0x15d57c959c', '0x15a833630d', '0x135cf39edc', '0x1433df25f9', '0x127e068efa', '0x14cd8d0c71', '0x141c589dec', '0x1677347947', '0x1670d33676', '0x13dcc6ce28', '0x13702b1b1e', '0x13e12c94e0', '0x15ce036ef3', '0x16759decca', '0x1943f8fede', '0x1c140e461d', '0x1abc157429', '0x1d59b016da', '0x1a6bba15e0', '0x1954d03faf', '0x165780d4d4', '0x17050c962a', '0x14903c0feb', '0x17221e93be', '0x1a05e5ab74', '0x1bd1d0d12c', '0x1da44d90b2', '0x1bbf8766d0', '0x194cd60b82', '0x1b353713ca', '0x19621c8ea1', '0x1c8db1f26b', '0x1d14e54d70', '0x202c058784', '0x1d3de65347', '0x20e573ea67', '0x20e5f1ea77', '0x1f483a935e', '0x1dedf13769', '0x1f24996585', '0x1cff259be8', '0x1e1758192c', '0x1c5ce7b78f', '0x1b5d33b909', '0x1ec7aad716', '0x1c73813179', '0x19a7cb25b3', '0x1cdc37f7d2', '0x2025b8c3a4', '0x211d207078', '0x1d4c3a33ad', '0x1b4f4f27b2', '0x1d1e730cce', '0x1cea794e22', '0x194d2a245e', '0x1c76910586', '0x1a7ba7eace', '0x19b6c847f9', '0x1ba7f5494c', '0x1f1ced7aea', '0x1c49e38904', '0x1c560821e5', '0x19de937462', '0x1d112df20d', '0x1afc00c179', '0x1d11e218cb', '0x20b40224e0'], 'gasUsedRatio': [0.09409595136317281, 0.22323237501688334, 0.9999061582155835, 0.1162972542981165, 0, 0.9970204914587422, 0.9646085054165882, 0, 0.9996925657080025, 0.9995519666666667, 0.5137953544969996, 0.2980269351124685, 0.9720266240603608, 0.9998903218482652, 0.5946361450278986, 0.30365033333333336, 0.13904705388521443, 0.6085655333333333, 0.06936890540279249, 0.5515500814467427, 0.2600511694141585, 0.5675643, 0.02593112174037948, 0.8464571741677871, 0.08206320497990786, 0.42989685100526553, 0.7594449537413024, 0.31019398525915687, 0.9554589477917637, 0.038096995962016045, 0.4143502647725172, 0.5758259666666666, 0.26716044884496376, 0.6678734668655527, 0.7950481330484505, 0.4348532928879231, 0.04254293333333333, 0.8623236256871502, 0.12078280942952707, 0.7651508427771199, 0.36878386735601465, 0.524287163064211, 0.6250518251485654, 0.5357652, 0.08153990961159761, 0.9998764333333333, 0.14188615182725933, 0.4209745595762556, 0.7783747102451751, 0.9996132666666667, 0.9996961, 0.2562136926708931, 0.009117798550624055, 0.9994862311413997, 0.9459475973004349, 0.026494221946752702, 0.9797075826261988, 0.6907476213718817, 0.23787224814355445, 0.2807201551515677, 0.7015308724387299, 0.11005680718209505, 0.2722510787387252, 0.7041264200339902, 0.31557199612216874, 0.11011315997111093, 0.9997829261290877, 0.999363, 0.9996040333333334, 0.2586481666666667, 0.9998673295526918, 0.15873713333333334, 0.15879232737434773, 0.6782194663381685, 0.04902398434309642, 0.9766416812033902, 0.4006907358159223, 0.08110676313582889, 0.9988454666666666, 0.49365423333333336, 0.30029339683132755, 0.1282090906021209, 0.1609619, 0.9573414, 0.24172315733686056, 0.329635037457975, 0.9985416226956729, 0.9996121992502519, 0.9998592666666667, 0.09626533643436148, 0.38717802803282614, 0.6925135735081379, 0.03498253313347962, 0.8418621445889325, 0.2226590642006819, 0.13135690886608284, 0.9995206981946299, 0.5178256666666666, 0.33348795098413603, 0, 0.9996232333333334, 0.10821286986742554, 0.9994487661521817, 0.9593561066371641, 0.5728895360604673, 0.39354873333333334, 0.3888779, 0.999740846937034, 0.9592158532933521, 0.09529707591793961, 0.26105286110005066, 0.9998330821319152, 0.9697154171690829, 0.23777552001688054, 0.9898532907647399, 0.04022637003886665, 0.7955591112138093, 0.13085640363987877, 0.5705293074199064, 0.37126726666666665, 0.7183664484963767, 0.12378308632365011, 0.9997461333333333, 0.5583286333333334, 0.0835131, 0.3999148, 0.24741876666666668, 0.3296211333333333, 0.2652093102247678, 0.7075150603473896, 0.13800636666666666, 0.9007412, 0.20186231855406805, 0.940453311089757, 0.999576346635434, 0.026760233333333334, 0.2105284, 0.807363056691526, 0.5230701215321134, 0.9995646, 0.8974827252145053, 0.022895827515031174, 0.4774637715879348, 0.20970369843702702, 0.09113313333333334, 0.4967709365138276, 0.124567, 0.9993801, 0.11500276666666667, 0.9998186562511626, 0.993924172913806, 0.5743247165996522, 0.5749109589974888, 0.11374378692112362, 0.9996813657638697, 0.34480417822520854, 0.21481050911958435, 0.581912, 0.9968576351859076, 0.07316567072681504, 0.23863035321592346, 0.9959546993930714, 0.06560882719682361, 0.46846827627572535, 0.3192083219902799, 0.7727681769346956, 0.7076934421377757, 0.02084923271467594, 0.9991449333333333, 0.8874315102030466, 0.2614762524097874, 0.9999992659491564, 0.6193292767256258, 0, 0.1777130453668787, 0.7203623989214237, 0.7526370933542881, 0.07477657013837331, 0.1521891870288186, 0.7202682666666667, 0.2176633, 0.9957306643270487, 0.2085850051690904, 0.06199036017739473, 0.82458863338507, 0.10956971335736192, 0.6827699239404487, 0.7774488, 0.8156129666666667, 0.17445016666666666, 0.5681542666666667, 0.6597133333333334, 0.1028425924582021, 0.5550135846793457, 0.9255020666666667, 0, 0.6761949376899876, 0.12948556445418552, 0.2952037964442602, 0.9575332323536336, 0.6319045260372559, 0.9503287334802467, 0.37507247732083143, 0.041069825225155475, 0.9998475576274792, 0.5824923144304286, 0.6173347570910287, 0.600067764061502, 0.37617415310823815, 0.22677003220175918, 0.9571677718237219, 0.9993991414044274, 0.9729567899754965, 0.49531337976931716, 0.08781812430577643, 0.29105276566218213, 0.9785966357285787, 0.3979796203979842, 0.13625787338945552, 0.4758101004315626, 0.8694749074103945, 0.4761259030915146, 0.03201376741833794, 0.3325545400196831, 0, 0.9998870722950931, 0.999507517044616, 0.8206022389706021, 0.5591316028610234, 0.26884386951396855, 0.294363275819602, 0.6655454186202536, 0.20299226372938622, 0.6636684018246101, 0.7240233, 0.22932223333333332, 0.07662271125579205, 0.7530048612380326, 0.6027066256363387, 0.9908275825724069, 0.9994061189467776, 0.14415026481243468, 0.9994900005235127, 0.16213588278302124, 0.9994397507876972, 0.11493533151706985, 0.7501315354602819, 0.5212009192922044, 0.5363621693793219, 0.14017813637941418, 0.24599230414345985, 0.9645784884546186, 0, 0.3786336570092752, 0.941764203287454, 0.7182176661819819, 0.2219156771033863, 0.34243569904737137, 0.4010352050276611, 0.7652965846612423, 0.13082551064409348, 0.9771866679878835, 0.866419918818857, 0.19770695331440125, 0.9781230328257139, 0.45278922211045075, 0.23130024350997494, 0.27924458916428746, 0.47277826438710624, 0.21018937529343618, 0.2671668331930838, 0.8313182681854254, 0.9999177861491616, 0.19178542878462937, 0.9579578527497172, 0.21913342910286798, 0.28437991920204897, 0.23614424602220233, 0.9994727118912959, 0.7093988333333333, 0.20001931886487154, 0.95913552982993, 0.9953096486712545, 0.33886237618276416, 0.12406986075409049, 0.9554370573433824, 0.0892988539570319, 0.3844863014111199, 0.9999410272353545, 0.9999433892750831, 0.15807034776559573, 0.7047458738763436, 0.6883768666666666, 0, 0.5506762, 0.14340873863327538, 0, 0.6607319421506944, 0.6181660871284969, 0.9757140663578047, 0.9996828135616056, 0.4575774794871768, 0.9994228049747785, 0.1983710631532091, 0.43787257259684365, 0.09531152284326458, 0.9133978702859088, 0.13621946142167504, 0.07148944087995783, 0.6386622333333334, 0.2624284280266347, 0.234957419212798, 0.9999289638979114, 0.9996887254036709, 0.9996629702388473, 0.09069362665506307, 0.4898007278394884, 0.17723772126255355, 0.9999941609424439, 0.14177967353012425, 0.7436822420507911, 0.3750187617141731, 0.1418915169187969, 0.4754309721560332, 0.38595751515076143, 0.32094606882810356, 0.9996550262662981, 0.9998885738929266, 0.9993649263678631, 0.22065025087211995, 0.008018367623056532, 0.8400671671145664, 0.14616135541315056, 0.9994142697398241, 0.3039289333333333, 0.06383233227246406, 0.45512702478522316, 0.6905929666666667, 0.26729036666666667, 0.6156199528839912, 0.400130180788244, 0.9995729273445277, 0.7541233257341248, 0.11647256824107469, 0.36284303333333334, 0.11537693333333333, 0.20994905141795703, 0, 0.5500774333333334, 0.9998035, 0.8847013, 0.23777993333333333, 0.4482663666666667, 0.9998663305282391, 0.9698289375013063, 0.3225149666666667, 0.9998528333333333, 0.5103245, 0.08737598932023788, 0.9994298994679062, 0.03481783333333333, 0.5638874027154183, 0.19604793196639386, 0.6857612773173137, 0.04354246002283136, 0.9146877462348095, 0.11285916666666666, 0.9095971333333334, 0.34408336666666667, 0.9610380202934833, 0.9995822996101463, 0.3737078, 0.10978517188701434, 0.4514159213215266, 0.0920173, 0.9988696038318582, 0.30116769112876807, 0.08756198892544166, 0.9999767999559199, 0, 0.44077967864380435, 0.3733164666666667, 0.9995467426058454, 0.6096590666666667, 0.13434692310374413, 0.14419514520311283, 0.9994285747842324, 0.7229090068604463, 0.9999415236577098, 0.6938822224623711, 0.9886839177149155, 0.04513143967051874, 0.12360450695164826, 0.2943715279381609, 0.9993456825226326, 0.6965487758456976, 0.7279969655044776, 0.08621157737638854, 0.11574314645977529, 0.13159385456638117, 0.9997045666666666, 0.7097223666666667, 0.05413492942525042, 0.8429312580110547, 0.9983698732721278, 0.9999772332900766, 0.032210014277969566, 0.21575781131379873, 0.6743934893572439, 0.2952112786291495, 0.3355089333333333, 0.1903175784486885, 0.9993451884308295, 0.6679329838661149, 0.9993418145638432, 0.4254803900135893, 0.2723254049219806, 0.9999915333333333, 0.8860917018802194, 0.20024748689765443, 0.24988596666666665, 0.049413085211041916, 0.9489877874269098, 0.14260465629408736, 0.1791703009630313, 0.5694214440758485, 0.02137625241058093, 0.5081236573746689, 0.29095826876577646, 0.9124845723137306, 0.6270106889850323, 0.2657877895866014, 0.19712520338801287, 0.7645203466025202, 0.025914366666666667, 0.5164957, 0.10381606666666666, 0.9999553, 0.6983660666666667, 0.7797455666666666, 0.3506632, 0.8338859, 0, 0.9997336267801159, 0.566567681015425, 0.10030724699035817, 0.8153787619012852, 0.9997495398563759, 0.6732976416224978, 0.47406837159915693, 0.060377211036290845, 0.9996950756061687, 0.30623716666666667, 0.049470808244250514, 0.9997885873083316, 0.9996835573545289, 0.10163039309774688, 0.3385059, 0.8236701, 0.9997007411070243, 0.34698176487047816, 0.9349451777464078, 0.6410744397499797, 0.06524140102814598, 0.8639018098518549, 0.659305134805524, 0.15094478699559058, 0.8213330931697359, 0.5528000370943107, 0.15565203343927872, 0.11128455428429884, 0.9994545666666667, 0.2636772333333333, 0.4146892774127269, 0.980665424285901, 0.1399401201360957, 0.17726166460636505, 0.9015955735281547, 0.5818231908707433, 0.11975454905924837, 0.39927355925273644, 0.9993921203259428, 0.9994694666666667, 0.16580590947059803, 0.46303753216836335, 0.34475876484097995, 0.09588528218203615, 0.6094388, 0.09878212741408653, 0.8322609956141719, 0.5648655063820114, 0.5330918793246121, 0.9993739261168026, 0.3185673858591553, 0.2662635666666667, 0.16993317307684286, 0.2989467306146084, 0.9995428621097746, 0.9994700316384566, 0.2904196993785674, 0.09716622298863827, 0.08893563096125472, 0.9993324308188227, 0.4578676666666667, 0.8795524162678189, 0.48219508338207784, 0.036032048334712935, 0.4025793, 0.11643563272869291, 0.6980582515210347, 0.040533933333333334, 0.9999834505060858, 0.999390066097395, 0.983405146303502, 0.3175091954587309, 0.9957555445604135, 0.04960571329139142, 0.12815311834432142, 0.9999518331968608, 0.9996914004730727, 0.2942258180581086, 0.4515968983636284, 0.2956119, 0.0930987442571004, 0.9993788875470844, 0.9996898968845415, 0, 0.6373592134997953, 0, 0.7908978333333333, 0.0578978, 0.590869382714446, 0.033963199497759514, 0.9086065659646783, 0.9999577174207133, 0.21732987612846663, 0.45537773874951776, 0.17437928125541885, 0.24965824870134506, 0.9349718528787049, 0.06088885690355124, 0.2802401333333333, 0, 0.9763708409729687, 0.4395539612599541, 0.6280840036368204, 0.9104848939887522, 0.4731854629908414, 0.5555389666666667, 0.39323800308998264, 0.5491080666666667, 0.9643695401893282, 0.4247967631436456, 0.07177975993001426, 0.607618000886935, 0.9313629144300479, 0.15526560141035062, 0.3783145333333333, 0.6543948333333334, 0.43592023333333335, 0.9993960666666667, 0.51406775382828, 0.9667180022701355, 0.9995086197085238, 0.041225510287619206, 0.36718824473904454, 0.9994944455135705, 0, 0.9999218138205044, 0.589558377410709, 0.23773409194136852, 0.16834278355064602, 0.5937471312337437, 0.1792203909606552, 0.7390370443111591, 0.24224183333333332, 0.9605513784210281, 0.1567419462924832, 0, 0.4780359687901903, 0.9596538750076065, 0.2190375584241243, 0.21955118525520223, 0.02635323505618959, 0.6057119960765238, 0.9962433581300045, 0.6054034760959954, 0.9998405476432731, 0.0392353, 0.5335131666666667, 0.2123925, 0.9984615333333333, 0.08383336666666667, 0.2222671, 0.9996466, 0.1363241, 0.6439105213758765, 0.9559863241201133, 0.629231, 0.23913983333333333, 0.4994199836139991, 0, 0.999543978212988, 0.2226436, 0.05870750545425725, 0.9467056, 0.14606893631631288, 0.733055105770137, 0.33631885986319965, 0.7186927073234333, 0.9999490337963376, 0.9996286366581063, 0.13236854171086818, 0.06771808524481643, 0.9995629316870427, 0.2375795, 0.17386731856342283, 0.6326890466923979, 0.999322427661069, 0.9990574315110342, 0.2497853, 0.1373617670989054, 0.5112763105245565, 0.7136325705186211, 0.08343103333333333, 0.9997459333333333, 0.999863966170368, 0.8559865666666666, 0.20212526666666666, 0.5943468463621393, 0.08357527800359281, 0.3819380856828826, 0.5998561190004078, 0.1945095472551798, 0.9998373864431191, 0.99954853615074, 0.9943497333333333, 0.02596678990367427, 0.29488723955075236, 0.5735383175102496, 0.9775851659189227, 0.5326959552005066, 0.03040423003513897, 0.4026128529524742, 0.9995789109820958, 0.6668475248323109, 0.8139290451157604, 0.07403379863037393, 0.4912723462346109, 0.30682457423196374, 0.37382934872038504, 0.21188172406974207, 0.0463988459394879, 0.9999713781169506, 0, 0.9994132675280982, 0.6070858092892966, 0.04575382187208385, 0.23237308087353026, 0.9993848782103609, 0.2885451809441169, 0.9999378799198143, 0.9631659111575882, 0.378980931431588, 0.09879032412933031, 0.9997333457184772, 0.6876196666666666, 0.7184378211990675, 0.07629653592456047, 0.9997456556187776, 0.5329760689292855, 0.9993904035708537, 0.4576443966591239, 0.14036686595072106, 0.6015128307661982, 0.20195801277325495, 0.2702468458350703, 0.46239765332403, 0.3498821159986573, 0.7324750221659805, 0.9997471333333333, 0.5054988803433447, 0.11351870973475274, 0.10309586666666666, 0.007417290349307235, 0.9996807903916012, 0.4946011667418045, 0.17792336666666667, 0.3471244662919992, 0.4238537097252527, 0.5188752532279677, 0.24528790755662128, 0.9996437180685489, 0.6248904359117716, 0.019749605360926677, 0.9515159021209834, 0.44177022866956944, 0.03324198466447191, 0.09882681208403139, 0.6332627640398472, 0.9993584031355065, 0.9994233294888633, 0.09319105567290241, 0.5659105342533937, 0.5839018177788762, 0.28750972322093865, 0.7142557989028362, 0.17267903061226708, 0.9994826357343107, 0.9995624160532818, 0.5096656043455579, 0.5163837333333333, 0.6049278120084263, 0.4909809275025468, 0.9998525721792069, 0.9999958212068936, 0.195315591930901, 0.5030250311612894, 0.7515118248955276, 0.03677020665943099, 0.7206114428328598, 0.07129088510738678, 0.30435977234438183, 0.9998050135084199, 0.5785418428403676, 0.2384923476101967, 0.37140745395730534, 0.5347708515340667, 0.10944021790166217, 0.33601017268197114, 0.40872697992579393, 0.522501175935281, 0.13001494126243107, 0.9998610695842054, 0.9300375333333334, 0.10359593333333333, 0.556253281329218, 0.0756363805906717, 0.36751907097457526, 0.32570025216381243, 0.8032407907897087, 0.2308048206136584, 0.8714652333333334, 0.10491113333333334, 0.25110753333333335, 0.45114510986645123, 0.13836119026748148, 0.9995928353434537, 0.782533386813435, 0.08268549949270367, 0.7924979120774176, 0.27301101161169405, 0.558103520793379, 0.6702777541618601, 0.3663295, 0.7423377928547227, 0.38414952520622353, 0.9995053333333334, 0.5190939048019609, 0.07873355725357842, 0.5676301245591551, 0.40153646594866893, 0.9412223494056808, 0.5527179028819184, 0.6049179900127518, 0.9613296340569268, 0.9999506182544494, 0.17924929372994325, 0.5471208897290911, 0.1352073085219022, 0.9996142, 0.7591783333333333, 0.04695253333333333, 0.2827501666666667, 0.1730439440780589, 0.9997701513200535, 0.18533102156254333, 0.9996293326290653, 0.2973179, 0.05886621619344623, 0.2013864879607221, 0.942957945194231, 0.5912779658673389, 0.46065854165048414, 0.3276017282048966, 0.9981860902443793, 0.8817016544095649, 0.5365797176892797, 0.4705239, 0.5296809000655807, 0.10526561883901502, 0.9994674546065226, 0.16335817215339193, 0.7627319838270527, 0.010269509754563566, 0.12884664058002826, 0.9998892863115099, 0.9998023111148598, 0.5193988431460765, 0.27922555131727983, 0, 0.7293564193934379, 0.5320995120157191, 0.10117733765423188, 0.9993511482351753, 0.4617157529434667, 0.17646936311147987, 0.8323476229002275, 0.4752113850997956, 0.13289012402226763, 0.8584741666666666, 0.29048380922695655, 0.6343133395449738, 0.09255607513017468, 0.26281525514004483, 0.8846953744893761, 0.01333197509581463, 0.9994385133487865, 0.9998947662632707, 0.9997025750911144, 0.12582466643090998, 0.5864935398942469, 0.2940980430255119, 0.5437641333333333, 0.31163297626799236, 0.21058541009286194, 0.9997818868016191, 0.30774891805627763, 0, 0.9999164333333334, 0.9999850333333333, 0.9996275303832475, 0.3762692970603205, 0.9996987, 0.2971459963988168, 0.18430500899789784, 0.5216958069280786, 0.046381885368186916, 0.9998930954009768, 0.9984857077395898, 0.09104597297564469, 0.6059454375241486, 0.6040145883114137, 0.3292493, 0.9995188666666667, 0.9716703360831852, 0.6141561403964633, 0.08932110840609668, 0.47856197593442096, 0.9994824333333333, 0.980411938925027, 0.5482279783461131, 0.07748574082744011, 0.9993105132572582, 0.78578897006977, 0.16076206085124112, 0.9994031144809709, 0.4492956556333466, 0.24653298450247393, 0.4560877740183895, 0.9998477479483936, 0.20904443185474264, 0, 0, 0.9735437988529132, 0.717711803197683, 0.07760908716153478, 0.06439958902588581, 0.5437982475612602, 0.03594063636315757, 0.7963891, 0.6585770338068457, 0.42428760435621027, 0.20446956218138024, 0.1321498177513204, 0.9994476, 0.9993906382916251, 0.6950429034169969, 0.20184966798880347, 0.10936202100575827, 0.34114405337996206, 0.6726530949388722, 0.9540485065723843, 0.0494907, 0.7045638, 0.4071762923505197, 0.9995454666666667, 0.12944767231868587, 0.9994970661972618, 0.6080245333333333, 0.9955435850225588, 0.17847193333333333, 0.3705174769829405, 0.4189117576509738, 0.358076729464603, 0.7258359576252421, 0.2004462393270973, 0.41620104063235497, 0.062367887407706366, 0.9799322215631938, 0.9997580296890097, 0.21279677016588963, 0.9995705790243035, 0.7852381763019737, 0.0134715, 0.6598150333333334, 0.6592949333333333, 0.1577825, 0.20047132691740152, 0.9879055909071568, 0.09589545402879093, 0.2815541419058087, 0.48038881241406595, 0.38162398126794694, 0.01571015214233139, 0.7990811765390983, 0.9994989666666667, 0.11934270481792136, 0.47342847519991016, 0.06394676666666667, 0.5311800027273368, 0, 0.81839905779903, 0.6723040989821154, 0.24494272679532078, 0.14057640298568855, 0.9718415558917886, 0.2591036971209583, 0.9996392129751199, 0, 0.9995030790381267, 0.9998586325228265, 0.9333329, 0.41591985426231287, 0.49301503333333335, 0.20239403333333333, 0.23670911311562406, 0.5529235160619483, 0.0752398085635503, 0.6361519380683809, 0.7149692926225686, 0.021149692460745214, 0.8758061019693988, 0.5010103084189385, 0.5717858740852282, 0.6154878326518838, 0.052396583433990444, 0.9982805686354104, 0.21389044604623633, 0.94248821071165, 0.5904563542130945, 0.43742748504345363, 0.5848412812943405, 0.07321514883434228, 0.9791194965867375, 0.09523703124716631, 0.29279112132473833, 0.41609926344888376, 0.46759206666666664, 0.0763147, 0.6734291702514171, 0.16136355909158404, 0.9998074784833014, 0.36690216378077783, 0.9683902730431454, 0.4955627040943283, 0.040422233333333335, 0.4145620666666667, 0.5908375528703779, 0.8873628615386707, 0.6201025088622456, 0.9997590328835281, 0.9453222717999867, 0.30858693071007265, 0.8913476300674584, 0.10074947613137755, 0.3350533971750242, 0.027936939065424157, 0.6213713228753386, 0.07318221225979574, 0.9998902, 0.9996708786129656, 0.7761486910721117, 0.7620046754365942, 0.24446245632991848, 0.14710902656795988, 0.801615803839649, 0.2317506505461532, 0.999581143359834, 0.5739842472724574, 0.9250567995667319, 0.1356872638930498, 0.999901447343379, 0.500233761686371, 0.30350562967198785, 0.3270346217689112, 0.6621818077010027, 0.22432965409147496, 0.6509856598354326, 0.27026134012452685, 0.3591342984427577, 0.9993233868520243, 0.1973665662653514, 0.10694135201720126, 0.9996655730653686, 0.9555918836694252, 0.6202495, 0.03904222473245124, 0.22858521334619913, 0.7649805105132936, 0.4721102970095643, 0, 0.9998494662401544, 0.22172871014588796, 0.38384450153157834, 0.8021067574237206, 0.9999856945646498, 0.13688868070600196, 0.5067070666666667, 0.1518042368372716, 0.9944320643517522, 0.21339139214099934, 0.8091372382750187, 0.9999407264688344], 'oldestBlock': '0xd1171c'}}), - (('0x400', '0xd1171a', []), {'jsonrpc': '2.0', 'id': 17, 'result': {'baseFeePerGas': ['0x15b79bf133', '0x186e7f6c5a', '0x16dc485fa0', '0x17e903e1b6', '0x1976d163b7', '0x182723601c', '0x156aaf97d1', '0x1668f3a180', '0x1935360934', '0x1790c2177e', '0x1585a8f73d', '0x137e48a9b8', '0x13613a5de6', '0x15cd38eccd', '0x131391cf34', '0x157586696b', '0x178034224a', '0x1665be9069', '0x16f8fc1ec6', '0x14a788a2b6', '0x13293238be', '0x12e3795dd1', '0x10a9e58680', '0x129d55f0b9', '0x138642776f', '0x12df59a1b2', '0x12ff81dc4e', '0x118b30a531', '0x13bbe60c66', '0x162ae2442a', '0x14c4d509a2', '0x14ba8318e2', '0x1261c10e8c', '0x14ad50e7d9', '0x15269c624c', '0x15bac9876a', '0x153b6bb440', '0x136d217955', '0x12288361cf', '0x13d14dbb20', '0x12d0cfe2f1', '0x152a75167e', '0x17bf9f9d58', '0x153d2b6229', '0x14baa5b47a', '0x12f70ad83e', '0x1329bac526', '0x11f93503d5', '0x14382e31d4', '0x122b80c782', '0x13051ffe17', '0x1268f4db44', '0x129c52fa3c', '0x13e2013e60', '0x117921921d', '0x10adc2e7a3', '0x12306c18c1', '0x12190e9410', '0x112cd9f487', '0xfb7bac37e', '0x11ad7ef75d', '0x10c5d397ec', '0xee26524b3', '0x10bc92619a', '0x10214dfd5a', '0xfc3bd3776', '0x108903beec', '0xf59e30515', '0xfc5923618', '0x107b14be82', '0xff6f6895d', '0x10e1881844', '0x12b6a4f2dc', '0x13908ff171', '0x16022b9931', '0x13d2781159', '0x1360eb2bc3', '0x129b85bee0', '0x14ed1d516c', '0x1529b615b3', '0x14a486257b', '0x131e8b6cbf', '0x115ce66874', '0x13883ff800', '0x15077c1509', '0x14ce5a948c', '0x1412fde5f7', '0x133531ddaf', '0x12caf78f65', '0x11396612d7', '0x122095ca38', '0x136b821085', '0x15d8e62dc9', '0x1893742091', '0x1765d9350b', '0x17723d1945', '0x18ceb4bebc', '0x15d3e11fb3', '0x188d73c26d', '0x16b3a1dce6', '0x146ea02b52', '0x16fbe6635f', '0x14da05a7bb', '0x13eb0f1bdc', '0x1668623323', '0x18dd441c64', '0x17bb33c525', '0x16a255a43c', '0x14f4b2b32d', '0x1792d3b4d6', '0x1a84b06302', '0x1da5dfbcf0', '0x1a9685acaf', '0x186a4506d6', '0x18528e87c7', '0x16cdfb5190', '0x15d53024b0', '0x13d35cf965', '0x164d5f2712', '0x1702df8f36', '0x146bef90d5', '0x16f0db5f90', '0x163220ed4f', '0x18f7bc31e8', '0x1ae6fd83cf', '0x18f8ccf4a1', '0x162dfd87d1', '0x161be21f47', '0x156241d2cd', '0x1459a5b55f', '0x1355faaba3', '0x12d869f46b', '0x14ea333362', '0x134d98bd95', '0x133feeea94', '0x1194baf170', '0x11c5fc24ea', '0x133a9eb743', '0x12a1ad9936', '0x109d18cca5', '0x127b58f38c', '0x1100a332dd', '0x132040c9fd', '0x158399ac56', '0x1833d8b6d5', '0x16f18b38a0', '0x162f7690bb', '0x1491a64818', '0x16cc0b8a4e', '0x14e4083de1', '0x16c0883fb4', '0x148a4f11d6', '0x1292b6bc0b', '0x1125a43a90', '0x134a489344', '0x125ee9a51c', '0x10be202a2e', '0x10d127322b', '0xf730bf75d', '0xd84aa7872', '0xf34a70edc', '0x111ab7673c', '0x11cbc612a0', '0x1027adab5e', '0x122c688324', '0x1471b8f946', '0x1619e09616', '0x13fa5f89e5', '0x125de2ddc7', '0x1370878483', '0x1218de8c0a', '0x12456ac751', '0x119e37b0ea', '0x1202db75fe', '0x111da5aca2', '0x12e1cb81ef', '0x13fc7a5885', '0x133cad79ed', '0x1143e49e2c', '0x12aef1f26d', '0x110c7a277a', '0x116b53b26a', '0x1398727295', '0x1368a3b579', '0x15d548f19d', '0x188f2de9ef', '0x164466978b', '0x16c99f083a', '0x16742fe899', '0x18fb27c754', '0x1782b34c2c', '0x173d86da3a', '0x15a412f06b', '0x1846dce8ea', '0x154d54e34b', '0x17f6b69c4a', '0x1821c37fc6', '0x1711292c08', '0x1575fd6663', '0x17a2c039e3', '0x15564b465f', '0x18004caec1', '0x1b001a60d4', '0x186dd6386a', '0x17410d78ce', '0x14c5f9ecce', '0x162606fcdf', '0x172da0eaec', '0x1447eccd8f', '0x15fd6f2d25', '0x146278831b', '0x12e4363380', '0x12bfaf6d84', '0x11271ede39', '0x109dd573d1', '0x1080c1882e', '0x10b84656da', '0xfc6989c79', '0x1123473731', '0x10daf46570', '0x12f527f0f7', '0x14b75c90f2', '0x143e9e3ba0', '0x14dab93b81', '0x160edca879', '0x13865de7f8', '0x139d8b3af5', '0x11b001e30d', '0x1340111e4f', '0x14df744a02', '0x164e129ff7', '0x13c0351523', '0x15521efcda', '0x143583473d', '0x1348de4cb2', '0x13fb31fdb9', '0x11ee941b8d', '0x114f1f68bf', '0xfae10bfc8', '0x10f4442217', '0xfe43c5cf8', '0xdf58b382f', '0xfb3be2e48', '0x111c91b381', '0x12900638ba', '0x1462f38b4c', '0x127d0c1be5', '0x12f4ba569c', '0x12c941a687', '0x13786067c8', '0x1299e06f5c', '0x12debb7898', '0x10c4902542', '0xedae135c3', '0x10b5df4363', '0xffe0d90cd', '0xe75ee81d3', '0x10448081bc', '0x10a3862d4f', '0xf6d495cff', '0xe39b43f23', '0x1000e4fe6a', '0x1200cbb581', '0x1403885f2e', '0x120e0ba197', '0x10c17f0102', '0x12940d7b5a', '0x14d039b633', '0x1236327f6d', '0x108e80c322', '0x111f5b6547', '0x108502f9b0', '0xfb062c36d', '0xf38018e54', '0xedff6b406', '0xde1422f2d', '0xc2519e948', '0xda9a0d17b', '0xd0417452d', '0xea4290843', '0x104733bce0', '0x10f6952984', '0xf01535aeb', '0x1012decc85', '0xe4dc296ee', '0xd068e2b44', '0xea72550c2', '0x107b8b9d45', '0x10caecb3d4', '0x12e405014e', '0x120c0279d6', '0x144d67c79e', '0x147777b48a', '0x14e16e16f2', '0x1594e3bd40', '0x13299602f1', '0x13765699c0', '0x113ce0e35d', '0x11a5c4b9d5', '0x10868b9763', '0x100515c220', '0x1204e7791b', '0x10428d1657', '0x1073022cc5', '0xf6690f9f9', '0x11534cc11f', '0x104c6720bc', '0xe42da3ca5', '0xf9eb4aab0', '0xfa8530c7c', '0xe32e71cd4', '0xe11468eaf', '0xfd34d2de6', '0x11bdb711de', '0x100b9cbcaa', '0xebd2b017a', '0xe9864b232', '0xdb91800f0', '0xf701d2731', '0x11458319e7', '0xf8ebb8e1d', '0x11198d0c78', '0xfaf9ec014', '0x1145d495d5', '0x136e5f9fa4', '0x11b4bd9b10', '0x1195316d57', '0x13af6e54ce', '0x12168c95ac', '0x12277302ff', '0x10f5d2ed9f', '0x131416349d', '0x11974a7dbb', '0x10d1c7fee4', '0xf95694525', '0xfa9458837', '0x11114b0f3f', '0x11622e7556', '0xf476bb91d', '0x1130147485', '0x1352ce438d', '0x117396f52a', '0x11ab7ebb77', '0x10bc814f07', '0xf06684cbf', '0x101f6c76f1', '0xedbefacf4', '0xd0071b756', '0xea03c1432', '0x1074334d46', '0xfb0f5f5d9', '0x11a70a119a', '0x13db94eb07', '0x165664cca9', '0x16913da773', '0x13f441e411', '0x1672a9b537', '0x142cb920d8', '0x14b9e5f5d8', '0x1611a99e17', '0x14a6f09b75', '0x13d7a13484', '0x1652487b39', '0x140e3520cb', '0x15e7a7d174', '0x145ef163cc', '0x157bcc32fb', '0x1310151d14', '0x10bf61a76f', '0x12d717153a', '0x14804130ad', '0x1489299809', '0x13d6632a5d', '0x125057e00d', '0x108919a2f7', '0x10d7f45d32', '0x1116b25c38', '0xf2f4a90a0', '0xd5647512c', '0xf007dbc38', '0x10e064a8ab', '0x12fc2188b3', '0x155b5fc124', '0x13f19f351b', '0x12d37560b0', '0x12996286ec', '0x12d896d318', '0x123458ac80', '0x147aae5cab', '0x13b2fd7759', '0x11d7423b67', '0x118ffc877c', '0x1021d4c2b5', '0x12255c2e82', '0x1092317ec6', '0xf3f98479a', '0x1127283ae6', '0x10c415b1a3', '0xfda1670ca', '0xf25c22576', '0xd56ed7367', '0xf01c1f9ee', '0x10b9163581', '0x102a5b4cdd', '0xe9a566767', '0xda603b131', '0xdd73297e0', '0xc431745b1', '0xdcb7526ea', '0xe0a6a1b73', '0xd05b32e5b', '0xe793e7fcc', '0xef6307f3d', '0x10d46cb47b', '0x12b91e2183', '0x1115af596e', '0x1201655a01', '0x126c3bebb1', '0x1101469804', '0xee11dc504', '0xdc0493f45', '0xf77f308bf', '0x1166e5eec8', '0x1393914100', '0x11abcc5025', '0x124772a300', '0x106090b57e', '0x1263e7d9c7', '0x14af3bd06a', '0x1322a7966a', '0x128c627f21', '0x109893a835', '0x126faf7b04', '0x1021b98ba4', '0x10bb85d251', '0xed152c471', '0xf44235267', '0xda23eaeb5', '0xe9db51dad', '0xd493976e2', '0xef234ab4d', '0x10d072055a', '0x12ea3de437', '0x108cf627b1', '0x118b33c8a7', '0x13546261e8', '0x115fef5063', '0x12475cafed', '0x1061e35444', '0x1017d63890', '0xf8ed3f90f', '0xee954ff9d', '0x10c668a770', '0x12dee8f7aa', '0x13450079e7', '0x11ee4d5719', '0x142bc98ae8', '0x14652b7dbb', '0x1282452e24', '0x14d23666a7', '0x155862fd11', '0x13404a491c', '0x12998cf3f1', '0x122c01bdb1', '0x10ea795daa', '0x130162bc32', '0x1505f116dd', '0x1316eb8765', '0x14b78f4843', '0x1563d52960', '0x14384d25c7', '0x13febf6c3b', '0x167def7fdd', '0x194d286af7', '0x1652bf0c7f', '0x1645ce83d3', '0x14bf3b73e8', '0x12afcf8162', '0x15054a625e', '0x147f73bbc3', '0x1603e8c762', '0x1618098a44', '0x13f8383b3e', '0x1579d946fa', '0x18283c0da5', '0x19023e4e88', '0x16bc3ba143', '0x16f8ea5e5e', '0x1421c915e7', '0x154aa56e78', '0x155758a2ef', '0x138ea8f94b', '0x12ec5057ea', '0x12f3210ba4', '0x10cdf3c3cf', '0x110e9e38b0', '0x132f26a8b5', '0x11fddc075a', '0x11bc4f5e0a', '0x117a2b1881', '0x11c2118159', '0xfea5041f1', '0x11e773b4e2', '0x1243ec5441', '0x1458b2b533', '0x147cfb38dc', '0x124fa97667', '0x1050c48871', '0x125acabc2b', '0x10eb34dfd9', '0xf0b499282', '0x10eb7553f8', '0xf493a81d4', '0xe4e6e13da', '0x1017e9625b', '0xe6762b576', '0xf891c6ca9', '0xe97ed1a70', '0xd1189d097', '0xeb3596993', '0x103abe0b2a', '0xf8130528f', '0x1170ff5dca', '0x1341042dd1', '0x11bf43acaf', '0x116adb15e4', '0xf8dbd9a06', '0x117eef04ba', '0x105f3cb7d5', '0x1013ec28e6', '0x10ef6103be', '0x11a2ef62c5', '0x10f9803bbd', '0x1002e8ff79', '0x120339fab4', '0x11a39b8043', '0x1286900149', '0x12d2d882ef', '0x11223aefc9', '0xf4b6421e8', '0xe3015f535', '0xff5f06302', '0xeb2ca339a', '0xe7bb0bd69', '0xd602ff8a1', '0xf0bb1e94b', '0x10ae877f33', '0xfc4b1e242', '0xf9f96d989', '0xf7e2bca07', '0xe74a46d64', '0xfe3603b83', '0xeedf8fe75', '0xe00aed2fe', '0xfc026f3f2', '0xe97b73486', '0xcee335718', '0xd506596ee', '0xcf015d4f8', '0xd366da13a', '0xe760c07f2', '0xcc2a445d7', '0xd4ffe2502', '0xcc1affeb1', '0xe59c36ccc', '0xf4f1978ef', '0xddcf724ee', '0xcfa9fec46', '0xe674b7ba2', '0xea2d2f708', '0xf361f134f', '0xe2374fdf4', '0xfe76274ac', '0xec7ab3288', '0xf1b9acfe6', '0xd9585a0ce', '0xd45dc6722', '0xdb6bed870', '0xd245d4445', '0xc2103603f', '0xda4ce0333', '0xcea4c3ed5', '0xe8187e41a', '0xcf4713a78', '0xd9366552a', '0xc4657e39b', '0xc96581500', '0xe29149d22', '0xfc398cacb', '0x11673655af', '0xf7dec7fdb', '0xf3bc24c28', '0x11231b6f47', '0x13475d01da', '0x11471e3d9c', '0x1104cbb78e', '0xf26abf28c', '0xf28011bbc', '0xf2b3f5be1', '0xd5ee780ac', '0xf0abcda7c', '0xf7ec49494', '0xf9fad6288', '0xff0bb3b99', '0xe85507e9d', '0xcd6bd684d', '0xe71899755', '0xfaaf0a1e2', '0x109616394e', '0xf378be6b2', '0xf97bef890', '0xf480d4524', '0xeeff1d3c2', '0x1035e52ab3', '0x10d37bc147', '0x11e3f5f302', '0xfe3cd77a0', '0xfcd92e08e', '0xe47c78cff', '0x10104a9146', '0x1211f02ce5', '0x1421a02c45', '0x147a674b01', '0x132ea796f7', '0x12cdf7595e', '0x135c7f89dc', '0x1436fd6207', '0x1356b18a40', '0x1242ad0481', '0x11931fa3a3', '0x12d517ff0a', '0x131b62cc78', '0x1161c3a5e9', '0x11e6cf7ca5', '0x1260370e82', '0x10eec30fce', '0x130c0705a6', '0x156d1fa628', '0x146968d30c', '0x11f7fdd3a7', '0x1436a30e7f', '0x14bb3a6507', '0x12965af0cf', '0x10438f92b6', '0x124be8f818', '0x14956156aa', '0x1727a6d0f0', '0x158686fb12', '0x1510798a39', '0x143c6965a1', '0x1293e50516', '0x11c92aec20', '0xfca80f75c', '0xdfd336c89', '0xfbc4c3320', '0xf1aab0707', '0xf9654bd81', '0xe5857f7a8', '0xdc47c2af9', '0xdee951a44', '0xc30c276fc', '0xdb6c1a7df', '0xf6cbc5f37', '0x1159b59ca7', '0x10c7295f42', '0xf685530a9', '0xfe91707c3', '0xe0aa38967', '0xef0d88aa5', '0x10cea6f2fc', '0x1283953a00', '0x1088d6bbd4', '0x1299ee5ad6', '0x116b32f4ad', '0x10dea8518a', '0x1172747661', '0x1187fe7f94', '0x10a54fe57d', '0xf6100ab8f', '0xd74e0961e', '0xf23524037', '0x10adfe8233', '0xeea2d8d96', '0xe3b6661ee', '0xf25e2fa46', '0xd4fe34301', '0xee0ccc1ea', '0xee91b1ca5', '0xe5634bdf3', '0x1020d6eb1e', '0x122444765f', '0x146852a8b3', '0x14f009d913', '0x14281bccda', '0x11f8e5a816', '0x11fd8dc58f', '0x143cb7d76a', '0x1685febaf7', '0x15f12bad32', '0x18ae7dcc26', '0x189b266f5c', '0x168666c01f', '0x1745626118', '0x164d2e44c6', '0x141f49bebb', '0x16a27b3edb', '0x150d31a404', '0x17794d2be5', '0x16e1918674', '0x14784b0077', '0x1605925f78', '0x1396cfa239', '0x152b296ffc', '0x173d629b6f', '0x1a246a3dcb', '0x1a1e367ab4', '0x1a36fe5924', '0x18272894a0', '0x19a6183315', '0x180cab2809', '0x1a5025ff10', '0x196258bc92', '0x1a74ba4a16', '0x18f910acac', '0x1787387849', '0x16f27e6d5e', '0x14f1141594', '0x158bd08e82', '0x152b74cc35', '0x1353bb7a45', '0x12339de75c', '0x1365222f3b', '0x15d1b1151c', '0x188bd02fb7', '0x163f54040d', '0x17aab1d3af', '0x14dba327d7', '0x1492f2b49c', '0x14656aaac3', '0x1266bb0a70', '0x10c248d033', '0x12da3baa52', '0x153566b59b', '0x128eb9dee8', '0x107c6d7715', '0x128be63369', '0x135c3725df', '0x10f0b04124', '0xf742f67a3', '0x112e0116eb', '0x12313ca52c', '0x1045fd4599', '0xfae340f20', '0x10e26d7241', '0x1044295034', '0xfafa298b9', '0x1067432112', '0x1253e87510', '0x149e561d58', '0x12ece4a032', '0x12d45516c6', '0x10e444b068', '0x1071a7ecaa', '0x127f3548d9', '0x112ed1f97b', '0xf7641e737', '0xf6eefc561', '0x107c0c6f4b', '0x106bfa8612', '0x1190c333a2', '0x13c252f1ed', '0x1323d86674', '0x12f6c9053c', '0x11e375547f', '0x1243f49102', '0x11966e556f', '0x11460496b7', '0x120a182ce5', '0xffbbd9b17', '0x104be90027', '0xf1db537e7', '0xe9415a89b', '0x1053950b10', '0x121ec6bc47', '0x11b4d588e6', '0xf7e3ad7ca', '0x116db03bd3', '0x1177f3490c', '0x13a6c6267d', '0x1350b92d8e', '0x11e8d68df3', '0x109f3c7402', '0x105dcdf2a5', '0x10f08840dd', '0x117420d298', '0x13a2385d41', '0x118ea84bcc', '0x1219c02f14', '0x1251def6d8', '0x1073f3ed9b', '0xe65756fe8', '0x1031c69ef6', '0x10343a0352', '0x123a3ea52d', '0x120c26c8f4', '0x137e91a483', '0x11796ab23b', '0x10bac3f2a9', '0x10e0d16895', '0x12c9ae27a9', '0x1522ad7d54', '0x1442856a66', '0x12a0b99be5', '0x14bb6940e4', '0x14ff23400e', '0x136974d15c', '0x13968804c9', '0x11e0425792', '0x1152abc353', '0x10505ba577', '0x10c702cb77', '0xf427057d4', '0xf71911c10', '0xdd0a0b0a8', '0xf60baaa44', '0x114b768415', '0x118db5567a', '0x10e067d5a3', '0xfda7377f5', '0xf3924a958', '0xe20300ea0', '0xd86fe521d', '0xd82470a1c', '0xc062d1519', '0xd6dedaf6e', '0xf1b505779', '0xf8c6a93c0', '0xe5f93093c', '0x102b50f1de', '0xed72c58c1', '0xf0870a961', '0xd87a1bfe8', '0xf384089b5', '0xd8c7302fe', '0xdb6825d9e', '0xf6d1df259', '0xfd2a8e4c9', '0x1022bfe592', '0x1226f66bbc', '0x13c0c7332b', '0x12750a36cb', '0x140c6ae13b', '0x126ae5b3d5', '0x10e89fa81d', '0x100ca6fa3a', '0x104da0375f', '0x1256feda1a', '0x13f919e333', '0x120aa8b9a4', '0x1137042b74', '0x11b11f5528', '0x1287c49780', '0x144a87da80', '0x126d145b16', '0x1380f90762', '0x13854ac2c2', '0x15b6e2670c', '0x137ddafa6e', '0x14919567f1', '0x12f306e7da', '0x126c47ebd5', '0x1088be5810', '0x126a08e6b5', '0x114209c2f1', '0xf600e5474', '0xecb5668eb', '0x10a4a790bf', '0xe90129ea8', '0x1061fab737', '0x126dbdf2e3', '0x132a6b7452', '0x10c51e05c8', '0x12ddaa6126', '0x15391d4840', '0x17dfb70480', '0x1adb11c28b', '0x1e35d62a3d', '0x21fb97d1c8', '0x263830a781', '0x2afe62e57d', '0x305b74b244', '0x31cb67889a', '0x2bbf0dcfbf', '0x2b3656e67d', '0x289b0faeaa', '0x26eefa0327', '0x2300a1f609', '0x26ac995a60', '0x22a44773e1', '0x1f3994603d', '0x230aabed4b', '0x21363a46be', '0x1dfaca2ee6', '0x1c644ae968', '0x1d019f4915', '0x20a11ec370', '0x208fae4009', '0x1def377618', '0x1b7aa1189d', '0x1bf409d215', '0x1c746bdd80', '0x1cb8b9b1e0', '0x1a9eba5956', '0x19066db5dd', '0x16d631d649', '0x17aef4528a', '0x1a5e0a4998', '0x17cb56b540', '0x1777401b00', '0x183d0aa662', '0x163a5162f2', '0x172b5bc60f', '0x1692f1157d', '0x1897149d16', '0x17058901ec', '0x16fa40871e', '0x14e067d4e7', '0x177bc8e638', '0x19fb9162b1', '0x178ff309c6', '0x17b49c87f3', '0x1aaa8ce53e', '0x1dff9694f1', '0x1c8ec95549', '0x1b316557bd', '0x1a18f87555', '0x1b7024359c', '0x1891df79bf', '0x174012ac6e', '0x1a262afcdc', '0x1d69ea60d4', '0x1b08d4b9fb', '0x1e68ec338e', '0x1b9c42ff7c', '0x19f3665cad', '0x1b10b4e792', '0x1e067eee5d', '0x1adef2ed7d', '0x17f1a4e3f0', '0x1703ef808e', '0x19b61ee46a', '0x1ceca66d0b', '0x1c2d55e117', '0x1ad6a9cca0', '0x1d88403ba7', '0x1a4958eacb', '0x1d63dddb03', '0x1b500e953e', '0x194c2efb42', '0x19a66a35c3', '0x17701859e9', '0x1a5bd17ef4', '0x19eeb1b362', '0x1d2b8934c1', '0x20d0eb96c9', '0x21ae25ac83', '0x200bf6d059', '0x1dfc039e0d', '0x1f9b969a73', '0x1c69079029', '0x1dfe1bd475', '0x1b73d61aa4', '0x1c7f564864', '0x1a77183e70', '0x1dc52d6d00', '0x1c4faf81e6', '0x19298f3849', '0x1a3081217d', '0x17e20400ca', '0x15dd5925da', '0x18979e72e5', '0x1a556f78c8', '0x1774ee8b96', '0x1870f75f8d', '0x1771091974', '0x17aa0ecf8b', '0x1a9f117ef5', '0x1d60fda804', '0x20e4aee992', '0x1dfaa9b9f7', '0x1b9858aef5', '0x1c17e14e1c', '0x19a060e583', '0x191559348b', '0x187c300141', '0x17828fcf20', '0x19653403f7', '0x1a66dbb855', '0x186e89a27a', '0x19d063b713', '0x1790a93005', '0x19f8fcf593', '0x198949d789', '0x17d67ce1f2', '0x154d3359d5', '0x1579a52318', '0x1828ae98b6', '0x1b2db7f3e8', '0x1a6f52a309', '0x1944a61139', '0x18a0b2939a', '0x19099b78ca', '0x176d3a326e', '0x1a253a0177', '0x18e4f21ff7', '0x1bfcb1894f', '0x1d00314840', '0x1b858a0646', '0x1af9a2aab8', '0x1e58c5f50a', '0x1af9340148', '0x1922a0dd4f', '0x19c8a7e4ff', '0x192080e06a', '0x173f23691f'], 'gasUsedRatio': [0.9999549999159999, 0.2427674822790791, 0.68367701429564, 0.7599586608499036, 0.2940241643568803, 0.046862933333333336, 0.6855045333333334, 0.9994006480661699, 0.23938375675817297, 0.15316153333333332, 0.12293413333333333, 0.47671006666666665, 0.9998717, 0, 0.9995980329447651, 0.8805779333333333, 0.312201, 0.6027185333333334, 0.09635936666666667, 0.21076303333333332, 0.4431443, 0.0288342, 0.9683087, 0.6955152333333333, 0.3664258851231772, 0.5266237333333333, 0.19378703333333333, 0.9993852997452012, 0.9932681923961033, 0.24762361049180207, 0.4922359019148803, 0.047154168972255786, 0.9994411984167288, 0.5916588666666667, 0.6094640583470241, 0.40841533333333335, 0.15979452731074772, 0.23890285844469436, 0.8655279923818062, 0.29777154225226327, 0.9996211692084894, 0.9880843933918063, 0.0773066982883232, 0.40397783218495725, 0.1595930358404725, 0.5417604666666667, 0.25170054774845696, 0.9998456349574809, 0.09454473512606003, 0.6871411666666667, 0.37170713333333333, 0.5435969557606336, 0.7734328885373626, 0.0152274, 0.318141, 0.8622318666666666, 0.47992853333333335, 0.29606936666666667, 0.1605554156967612, 0.9988072988868123, 0.2952317817148184, 0.049649766666666664, 0.9977717, 0.35504533510306147, 0.4093643820734233, 0.6955285, 0.21355843333333333, 0.6096055202095154, 0.679820852714491, 0.37474239297091044, 0.7295774, 0.9342096442823583, 0.6819529333333333, 0.999630793863126, 0.10263799921673257, 0.4104928, 0.340839, 0.998447984456822, 0.5452458088960883, 0.4016652820729857, 0.2048139891465794, 0.13253407133539455, 0.9997635993301981, 0.8065725333333333, 0.45755099855008413, 0.35929433534137967, 0.32736146666666666, 0.4135867, 0.16612258129936117, 0.7097214666666667, 0.7852424333333333, 0.9999618333333333, 0.9996009563328077, 0.30824453333333335, 0.5082741333333334, 0.7322249333333334, 0.0195327, 0.9993470666666666, 0.19846566666666668, 0.10010778858889038, 0.9995764064504851, 0.12890064923342315, 0.32093511962195503, 0.9999546556350734, 0.9385218737906578, 0.3177208333083992, 0.31507268714218917, 0.20340926087671368, 0.9996582665267015, 0.9996743306343956, 0.9720705071174971, 0.08715951361862193, 0.17310616666666667, 0.48482439769101193, 0.25037564996043277, 0.3295344756321145, 0.1322722513172775, 0.9996753823941344, 0.6271604436212569, 0.04985453333333333, 0.9934422666666667, 0.370095031131233, 0.9995356936430374, 0.8099347175218871, 0.2129720379802055, 0.052740466666666666, 0.4872440333333333, 0.3688127122802083, 0.3066515195414182, 0.30062517439963066, 0.39853266763322104, 0.9392542842051069, 0.1917534945749048, 0.48894011233924606, 0.15323960084553573, 0.5437748445596804, 0.8275923333333334, 0.3757232, 0.06677894297114466, 0.9497904542861302, 0.17982907692839495, 0.9995734669667683, 0.999440819545871, 0.9998519995757321, 0.2919233666812154, 0.36782719774335143, 0.2085544125572966, 0.9332954842652922, 0.1655180785225823, 0.8563927894103182, 0.11114586747103004, 0.11691480886823216, 0.1928754889890748, 0.9999423662305711, 0.30935009371586225, 0.14550731788979265, 0.5177572635555527, 0.17470948101864364, 0, 0.9993104261387794, 0.999468, 0.6617435666666667, 0.13115347136478772, 0.9997775991921296, 0.999796467720648, 0.8241705659209291, 0.11575405762845227, 0.1773899867006798, 0.7336451013298921, 0.22377533322578996, 0.5384623665260329, 0.3570154793747212, 0.5892548554900946, 0.30115618247535075, 0.9127651259352372, 0.7339221789102774, 0.35005288811922897, 0.08999582110309506, 0.8285618577035457, 0.15003324826719916, 0.5869288785177954, 0.9997347152321818, 0.4618793360757498, 0.9996501831361753, 0.9994516296109867, 0.12668244805996928, 0.5934814565385114, 0.4414195244004574, 0.9502068052500318, 0.2645373839766369, 0.45402752611971897, 0.22471572036039353, 0.9872056976994259, 0.009864436584403688, 0.9997911587998026, 0.5280699970184162, 0.3234941499000914, 0.22148363333333335, 0.9053600492452454, 0.11098590390995675, 0.9994278914442997, 0.9998477, 0.11906456666666666, 0.3076162205727226, 0.07327684127929994, 0.7648007501955724, 0.6859612131504871, 0, 0.8370690216641296, 0.20798945597012525, 0.20699536666666668, 0.4697891824700153, 0.15950710182991212, 0.37494146201215556, 0.4726573103950896, 0.5525651931555662, 0.2741466250579567, 0.8453497284908974, 0.4340607, 0.9989172666666667, 0.8710621, 0.4089306, 0.6204838666666667, 0.7308704283065747, 0.04063327125771984, 0.5185476791198277, 0.10686473281416792, 0.853408846768717, 0.8371605107160967, 0.7744430454077011, 0.04195651940122681, 0.8179566531381844, 0.29142401747616287, 0.3170338254618831, 0.6444858619559912, 0.08975819776022573, 0.36105816355868176, 0.12352000187214582, 0.8250577000494261, 0.249296147711913, 0.013605412127667001, 0.9994471475830785, 0.85905406008386, 0.8391843804209393, 0.8930341901296396, 0.12758492147896816, 0.6011446333333333, 0.46416740719354216, 0.6456525666666667, 0.32144214507866403, 0.5578390344546434, 0.05437875171507688, 0.04369141780340775, 0.9996133434892135, 0.3281209666666667, 0.11688690673108958, 0.9998150723422168, 0.5912686796691651, 0.20866458860821852, 0.1884677968924796, 0.9999751514467552, 0.9997943982722769, 0.9467431349081645, 0.10848320741961097, 0.21220592266700544, 0.9350688682209934, 0.9812165158554658, 0, 0.13648532110125447, 0.6367030174978772, 0.3591532551935331, 0.29888839570347553, 0.38011140099473323, 0.4096075261191192, 0.2324500120235451, 0, 0.9998576162152899, 0.31068622750283187, 0.999469393566524, 0.9471973308549688, 0.6683437085962217, 0.038286685700149106, 0.7848440671297711, 0.059538786081635604, 0.14257104573766988, 0.9997252642663136, 0.9994736376633894, 0.5752491025368536, 0.9997481407217711, 0.3213324902393385, 0.9999086661430192, 0.5323716798763639, 0.5808955773613581, 0.6342900889937885, 0.05162642641078025, 0.5625835946536865, 0.04281722203463364, 0.5950762565107214, 0.24569464163511337, 0.37759470532635797, 0.9992036644103824, 0.10948413333333333, 0.5465650541086704, 0.24500912867518676, 0.9999114134125165, 0.2629048865768179, 0, 0.8811199887620553, 0.5096217931145152, 0.1273538890486156, 0.46299523253195113, 0.9998515914996295, 0.9842035120950265, 0.11767494792036304, 0.1743175919521047, 0.4610145666666667, 0.2609463808075252, 0.9998672332094176, 0.9750857055551839, 0.1030503, 0.8965300616051575, 0.1692846246656497, 0.9046302, 0.9998319973878841, 0.14487356666666668, 0.47216026666666666, 0.9783068500276147, 0.17545396960550394, 0.5145987917253788, 0.2369522, 0.9995714333333333, 0.1881335, 0.3245640701478327, 0.20609744929418553, 0.5199131123755525, 0.8591890265510393, 0.5740515894208055, 0.01574048183461903, 0.9997254301755343, 0.9970144428109929, 0.11250465710087508, 0.5500541666666666, 0.2886678824794255, 0.09099342129364059, 0.7922376525641264, 0.18649938768216992, 0, 0.9996814442192897, 0.9999320000698017, 0.3145960810320122, 0.9999586261064597, 0.9997011985757132, 0.9994998193755188, 0.5411633693366509, 0.036814566666666666, 0.9999008031342606, 0.09493725527477159, 0.609338, 0.7591563333333333, 0.24318983333333333, 0.343153, 0.9997635333333333, 0.09394689419115566, 0.8688576810531449, 0.2198739416534953, 0.7184911295409688, 0.04928147027906602, 0.01418770733809437, 0.9998003666666667, 0.8526075045615377, 0.5067891730032281, 0.36397596666666665, 0.19278113333333333, 0.11159573990668555, 0.574512202878056, 0.558203, 0.05434126424453479, 0.01327270921323151, 0.9993295780181936, 0.9998339996845994, 0.9997117333333333, 0.9997750136341471, 0.23533756127544708, 0.27580525711198506, 0.45180068179156163, 0.5530973983859429, 0.3638285905707179, 0.9998209760565923, 0.3476420783122772, 0.12265927650279701, 0.4375798064761183, 0.17423803333333332, 0.9993220713359929, 0.15284349402323294, 0.18073261077419916, 0.9996033920914212, 0.40975280214161536, 0.2819268654594521, 0.322251967334472, 0.022578978735290283, 0.999958074114642, 0.9574249970591526, 0.3666412333333333, 0.11335460922409267, 0.23857566443754452, 0.5563056719401667, 0.04379431800234814, 0.9999749666666666, 0.5713097493630803, 0.20986700287143611, 0.9458040252412058, 0.634884806281132, 0.9994376333333334, 0.9499956040406791, 0.149970839972784, 0.7155719238507692, 0.5927133730649631, 0.1921626, 0, 0.19669587352049275, 0.9995766996049197, 0.9999547, 0.9998266307048833, 0.11068523161780006, 0.6376274310421411, 0.08381197571196701, 0.9916707212142555, 0.9990142315889147, 0.20042566940634446, 0.37729700246037345, 0.07896590688749072, 0.9435449415288745, 0, 0.648966782433266, 0.04224645303161692, 0.6210702666666666, 0.07228416666666666, 0.7881891, 0.1360132164274919, 0.9997979666666666, 0.9999623, 0.9997590020012125, 0, 0.7400217312205368, 0.9071800800347414, 0.09546433333333333, 0.7081210468689342, 0.08500834195071058, 0.4293722637420657, 0.3669764839724143, 0.3337904583774918, 0.9999059829573653, 0.9997206819892738, 0.5845321538572784, 0.2221166594132359, 0.9997363152168575, 0.5444500014611522, 0.13004486549227456, 0.9997117, 0.6006895266771998, 0.1075706, 0.3646674, 0.40797636666666665, 0.22353203333333332, 0.9940905666666666, 0.9246783848904878, 0.13208689435066454, 0.8410243333333334, 0.6299300666666666, 0.2811976105333142, 0.4555253, 0.9994876003582501, 0.9996390333333334, 0.02916905024423016, 0.49094302017157626, 0.2259995069847607, 0.10278771449934103, 0.9995849622686741, 0.4005156876995452, 0.7961111048829497, 0.5142855028617871, 0.11540733065760139, 0.8017312333333333, 0.9993850333333333, 0.6410093789919189, 0.13637092727953212, 0.5417045666666667, 0.005430736447474292, 0.7304020817086095, 0.5093199930051631, 0.16563628766981917, 0.3702957974081842, 0.5056273992776313, 0.04717603439635216, 0.5601269588585392, 0.9988143376952426, 0.251348289715238, 0.44307296979039, 0.4417293511906351, 0.5642801359495296, 0.08491176324802954, 0.9998520333333333, 0.5807000333333333, 0.9557601664692239, 0.5278635915883533, 0.07496941343598656, 0.06405196228407287, 0.9999312660817766, 0.18708093629868405, 0.0567801752776611, 0.9987121156052005, 0.11377462926332592, 0.24364026194108354, 0.999648231219958, 0.08006276666666666, 0.8142881809246604, 0.25742708217951277, 0.08201760280615626, 0.9995439991335984, 0.9160050666666667, 0.3213573, 0.9996574988809906, 0.9156945635009247, 0.18695418902780644, 0.42568465267010025, 0.07198421081009518, 0.9994730166947069, 0.24306698220341255, 0.4281217666666667, 0.7132755802708011, 0.6656659212881932, 0.34989003333333335, 0.2730150992444122, 0.9999537096381276, 0.41705542444221144, 0.7010405653104074, 0.5643392495217321, 0.14089696587473666, 0.07062073333333334, 0.2105726, 0.9998265306071379, 0.1836475923434272, 0.44142701352482006, 0.194145973557891, 0.9993973770402754, 0.9349610468883344, 0.2809784966363916, 0.4632317, 0.466578347089266, 0.2322064491358097, 0.896399929622438, 0.258661810708495, 0.25165731770357735, 0.9993124742900085, 0.20592724694457512, 0.04438170425361517, 0.618658997292641, 0.3869714190275427, 0.5849530593207509, 0.8779755041073835, 0.029551833333333333, 0.6730842334206019, 0.3329746774430323, 0.9998346, 0.7671224, 0.12222536666666667, 0.2448938611445923, 0.9390145302417253, 0.5645776689979701, 0.6572503040172545, 0.21786766666666665, 0.999442388826022, 0.21732874018943246, 0.5887350355394052, 0.0965639926965361, 0.4083703298096968, 0.6328889476149832, 0.333219266614715, 0.19164916666666668, 0.999568278423881, 0.28641015838985423, 0.9926755072191231, 0.0722792706639476, 0.6917204333333333, 0.11666979472121193, 0.6018357902516238, 0.9999297945319969, 0.952973433606984, 0.9159140626928197, 0.06070472571020511, 0.433266629766252, 0.9998751592779584, 0.9998794166292191, 0.08483690068212929, 0.44002206372796593, 0.06103143213487793, 0.5013743298388277, 0.5033434666666666, 0.02581627626043498, 0.9999653666343422, 0.6205277244821663, 0.5331850952788445, 0.5810606333333334, 0.14377273333333335, 0.036682120090268146, 0.9999453666156755, 0.8390391381549372, 0.7345054710768794, 0.16977563615656105, 0.5987789432477078, 0.4201410666666667, 0.4099120333333333, 0.840957361530201, 0.6518961113357348, 0.7530269253853333, 0.05269648465775274, 0.47814162970856117, 0.11459682219056036, 0.999495973022645, 0.9996210985475444, 0.9562858121912181, 0.5689051117810329, 0.246872714632445, 0.4212419001916918, 0.6184320445685767, 0.6763273755158368, 0.3266305666666667, 0.27698666666666666, 0.349784431163698, 0.7862514338346716, 0.5583205210879955, 0.13885762586756828, 0.6195984666666666, 0.6059651666666667, 0.18585355266083997, 0.9994649995006663, 0.9996659333333333, 0.3106047, 0.021248649306047356, 0.9996925997130931, 0.6024930944867886, 0.0863205, 0, 0.9999078665806754, 0.9999841154963922, 0.9996955, 0.21852302106340174, 0.4143076533538098, 0.3426970301671864, 0.17221362146542674, 0.32949416666666664, 0.051377036342655266, 0.043547340645429256, 0.999381962555666, 0.33950581172770894, 0.6279271333333334, 0.18124208377186343, 0.3389490666666667, 0.547777062365267, 0, 0.9998742437441184, 0.9990141981269764, 0.9993735871176359, 0.3680257427396044, 0.17327996666666667, 0.6305743666666667, 0.030134466666666665, 0.7561671, 0.9996868333333333, 0.9061966656226861, 0.07233020325252981, 0.9999881115975329, 0.24570650186851745, 0.3739311125354267, 0.6368919989217049, 0.519289752829978, 0.2979658333333333, 0.19557781506974894, 0, 0.9998076453130387, 0.9073704580836527, 0.07675236373775982, 0.3168990417772531, 0.7574372333333333, 0.015201, 0.9705696, 0.5087230333333334, 0.34606149571723455, 0.9998449665219687, 0.9993440588612663, 0.9995883325648874, 0.6039105419887597, 0.3507996605990384, 0.06651183725928926, 0.5040484977415683, 0.9995397488157641, 0.9518886339161221, 0.39675715790714905, 0.9994120966489509, 0.4877557737209487, 0.16170117261777836, 0.6324798, 0.3333472802858658, 0.10912593518420617, 0.9994427103398827, 0.22022516666666667, 0.9602599271521974, 0.3990012436944411, 0.07847664163464314, 0.8032492726043721, 0.058135503417366854, 0.8225252205477676, 0.8913692430434996, 0.9995674666666666, 0.496293, 0.5148249599066822, 0.18539082859012984, 0.7477284129326947, 0.2505817427719779, 0.8764892237231574, 0.35879063160112756, 0.668892824669387, 0.27576977819839266, 0.26859641401787554, 0.40123107920147755, 0.15041045943683004, 0.6154515414071193, 0.43012206589312024, 0.15182934046795843, 0.26707266804237473, 0.7622676536532106, 0.9999327004371669, 0.9999355737460176, 0.12539622364003367, 0.7552031431225108, 0.025272452814223252, 0.44554740426996914, 0.46542102170105154, 0.10877587265007578, 0.14298853830251498, 0.9996858832422166, 0.9999080090331993, 0, 0.0535011238624365, 0.9999224141820864, 0.6755017646316716, 0, 0.14903790585917073, 0.9467122354236744, 0.7357729773088085, 0.07807810666286719, 0.3542617611525478, 0.8071335869839162, 0.35353957355722176, 0.35732902867509186, 0.6829121162479876, 0.9692689207604872, 0.9999486821985654, 0.17153035213673523, 0.47972239245682335, 0.08835696246034705, 0.3939821922219015, 0.9993778052037648, 0.2158410615066762, 0.09938096027528953, 0.49260195150295305, 0.7724538453202308, 0.4847679648655531, 0.7785778885079947, 0.9995251219513908, 0.37467888064374005, 0.46321508677081435, 0.27315007591239004, 0.5842868199902311, 0.35156029281371615, 0.428560297584479, 0.6773638087031423, 0.04409439094109231, 0.5783720355731226, 0.2102504414766821, 0.3577429775968821, 0.9796221019523115, 0.9394641266575504, 0.40864643333333334, 0, 0.9996770663544975, 0.5092000333333333, 0.9998478180610032, 0.4315805694751982, 0.2088733, 0.2124417839313244, 0.4384930238765897, 0.6400807666666667, 0.6213836, 0.9996203292515141, 0.07696818035259362, 0.6237854628304013, 0.5484447420450099, 0.09238272058715581, 0, 0.9996036118038265, 0.5023645589065052, 0.999508, 0.4604879666666667, 0.8206972, 0.08549644605376183, 0.3295250523651802, 0.5355401960207752, 0.9525645749581783, 0.9998231269415038, 0.33428579444234036, 0.17778315574992926, 0.9518491692849952, 0.551042983823978, 0.19810530750428096, 0.5362816198201962, 0.15039829561689488, 0.3762411, 0.2670059686715922, 0.6136424630818867, 0.1381177282188649, 0.5482567333333334, 0.07816406666666667, 0.9525231054791671, 0.99862083204611, 0.5598495333333333, 0.3457374207419788, 0.2574722488898406, 0.3410153644849385, 0.2116292857159795, 0.33054608397342905, 0.49455275608539084, 0.06035755157892689, 0.9674876524185534, 0.9995861353056341, 0.6169829883109866, 0.19767789100899416, 0.999777153945251, 0.17130516666666668, 0.5518711333333334, 0.10003716666666666, 0.9996145763661785, 0.06080579211226571, 0.5485058, 0.9997653375187537, 0.6028511055481036, 0.5790881893500082, 0.9998733891981649, 0.8527599251980021, 0.2375892492600308, 0.8448669861738446, 0.1746015057768224, 0.17229520070339074, 0.29672853880611344, 0.5632553793681195, 0.9996802829140524, 0.8562138504603198, 0.11319595809457564, 0.316706275105053, 0.6108288212827182, 0.6895691914642162, 0.8800883283199517, 0.13234317145050117, 0.733952575334099, 0.5034602587491702, 0.9495173042652473, 0.09054445750778176, 0.7210310418681922, 0.18508208752718786, 0.38889277778615616, 0.0898994, 0.9548267117160093, 0.24883796666666666, 0.06362336154588288, 0.3488655256078239, 0.9998941632182683, 0, 0.9998900591004906, 0.9995375986898629, 0.6599729334928673, 0, 0.9999148494954009, 0.9997851989832752, 0.9996033107552901, 0.9996008310713761, 0.9996413333333334, 0.9994967, 0.998688586070965, 0.999661699684253, 0.9990083, 0.618890046130046, 0.014144079867807876, 0.451169254314466, 0.25872076666666666, 0.3352738333333333, 0.0961287, 0.9195981876302209, 0.08292627762233731, 0.10547046052614896, 0.9889383629207296, 0.29112200695197393, 0.11071949301708531, 0.288139002686295, 0.5865840480370781, 0.9996203333333333, 0.4916488666666667, 0.17730816666666666, 0.17189372088511098, 0.5690350977660913, 0.5717620259295444, 0.5375069033462195, 0.2073208, 0.2603429666666667, 0.15020517535373293, 0.6483082384210225, 0.9533009547965834, 0.10966070469998211, 0.4447817333333333, 0.6317016233018209, 0.16819001812805384, 0.6694390917418311, 0.3972129054636984, 0.8572548540514104, 0.2448513340863853, 0.49234201695516017, 0.1342581285513866, 0.9994973636640686, 0.9256859981414259, 0.12738496572234068, 0.5243119292379893, 0.9995798, 0.9998353392087374, 0.30790545404509045, 0.30883556666666667, 0.3388683333333333, 0.7054616833337755, 0.08186007640273797, 0.28517847628200055, 0.9987136309321111, 0.9993885, 0.17644546666666666, 0.999415, 0.1317697731835137, 0.2595664242979913, 0.6717836127553479, 0.9374779590365971, 0.07975810465486448, 0.0642910914593783, 0.34487938042016514, 0.9685625382965494, 0.9998567571276521, 0.3966516267856752, 0.30997851054253867, 0.9014678361804788, 0.060383065973913096, 0.9722712004632911, 0.21726788968908878, 0.20488029033850705, 0.5557311763005064, 0.1550204155325771, 0.9984742450400702, 0.4353129, 0.9994004812365942, 0.99996909997116, 0.6053346, 0.30599586666666667, 0.2425878537058104, 0.7165572687867842, 0.09535323476343227, 0.7227842825306607, 0.1612330450368292, 0.652252092972527, 0.2147535, 0.999525230279299, 0.3039715666666667, 0.05509873333333333, 0.663280293206316, 0.14770623241275185, 0.16197835665714994, 0.999001082447353, 0.7832550700939133, 0.06299893114482595, 0.6678849709443773, 0.3363866802006803, 0.5380083132873859, 0.9998370813528487, 0.9143304019457493, 0.9784967107645847, 0.14562483333333334, 0.18190573333333335, 0.5722125655702793, 0.14876967499022592, 0.41523047394726764, 0.4045926495977527, 0.34070305361653624, 0.8207686161499321, 0.6585276378099763, 0.20153500108631905, 0.7263008775621446, 0.15151653229103657, 0.9086602874265032, 0.432801984830283, 0.23395658528149504, 0.0744114493035955, 0.5326006546509418, 0.9998772360300485, 0.9999685, 0.39054126666666666, 0.323461, 0.398618, 0.5665597333333333, 0.24264883333333334, 0.9642139882929014, 0.3085940880211488, 0.996943, 0.6448765219236584, 0.2959894762568445, 0.4205717333333333, 0.9999614043553137, 0.05536345351800507, 0.22740858867479477, 0.6032087333437796, 0.39809955877333814, 0.2006670152676776], 'oldestBlock': '0xd1131b'}}), - (('0x400', '0xd11319', []), {'jsonrpc': '2.0', 'id': 18, 'result': {'baseFeePerGas': ['0xec26d1671', '0xcea1f73a3', '0xe872d8fd7', '0x10576e32b1', '0x11ea78c673', '0x1290cbf97f', '0x108a1e54b2', '0x129b556283', '0x10f4ab2686', '0x12ede92bf9', '0x122f620d5b', '0x107441ec71', '0x102b8d77e8', '0x10f7f21ff0', '0xf034d5964', '0xe8546d3bc', '0x1055a56cf9', '0x113db0e46d', '0xf6665eb21', '0x1152c8aaa0', '0x10d75d6a6f', '0x102b234bee', '0xec14c5d9b', '0x109970a429', '0xf3e1f53a1', '0xf63b7c32f', '0xee8a2e111', '0x10c558132f', '0x11c5326a81', '0x106a4c8cb6', '0x114b3ca346', '0x1034a960c4', '0x123ac8339f', '0x12a0af106e', '0x109d567bbd', '0x12b077000b', '0x11c19e9227', '0x11c33e9cd6', '0x10dcaadc2c', '0x10a4be17b6', '0xf95161353', '0xf26395f1c', '0xe58c11959', '0xf239da87b', '0x10d9b35a9d', '0x10e93536f2', '0x111621590e', '0x13383bfa41', '0x12466580e3', '0x10642c1aa5', '0x126ffdfb0a', '0x1060610608', '0x126600a168', '0x12ab7e1dd4', '0x1092fac3ee', '0xf8c746cf1', '0xfa451b068', '0xe6f22968a', '0xec8b85496', '0xdea30b595', '0xfa6eb4bd6', '0xe413345ec', '0xff451d848', '0x10db5e358a', '0x10e9e41bf8', '0x10a17c4360', '0x11de8dd080', '0xfa2bc1670', '0xeb2cda901', '0xe901524de', '0xdca7a18ee', '0xf8399fa4c', '0x11737cfe4a', '0x13a1ace900', '0x11b115e9d4', '0xf8769e3db', '0x1178137964', '0x1038233872', '0x123efb05ff', '0x10b42329de', '0xf666ddeb3', '0xe915b318e', '0xe1b2d5011', '0xd51026c05', '0xdcc6885a1', '0xf857d6659', '0x11691203ac', '0xf876ef5c3', '0xf86d3c6d7', '0x117750cea0', '0x108231e679', '0xfa48ab9bd', '0xe7eb88cef', '0x104e3421a9', '0x10a24b0a46', '0x117ce0df65', '0x113735e4ce', '0xfddd08fd4', '0xf0275cac2', '0xf7e7195ee', '0xdcc6b3132', '0xf85a0474b', '0x1176053f8f', '0x13a402fcd1', '0x13d6e73528', '0x115c0a4e83', '0x11d48f04e4', '0x116d63d0b6', '0x12483cdcdf', '0x12e0cdc559', '0x127ccfb204', '0x11537f3c18', '0x1067448be5', '0xf9671e57b', '0x1110ac2f97', '0x12012404dd', '0x10d7c07263', '0xfeae60370', '0x10166db6f4', '0x1014bb1b0e', '0xf27b3344d', '0xed992d655', '0xf109b560a', '0xfc6c17216', '0x11493053af', '0x105604ecc1', '0xebe2598be', '0x10956c74ef', '0x121f7be7c0', '0xff394d155', '0x1136928a63', '0xf3def19cd', '0xdef0884e1', '0xfac5f79dc', '0x1169687330', '0xfab6d91af', '0x105e36b7a6', '0xf39330b78', '0x10b24fa3f8', '0x12362dfb10', '0x1100a1247f', '0xefe20637c', '0x10ddaf5891', '0x115c893326', '0xf7627f190', '0xe8f1cd0d6', '0xf4e65e3cd', '0xda86a75a7', '0xf5d5f748a', '0x1149007aeb', '0x1371fcdcd2', '0x11f3801164', '0xfb5100f38', '0x10f07b4812', '0xf9f17ca54', '0xe5cbb99c2', '0xf000d3017', '0xd5ee5f2b9', '0xed6ce1ec9', '0xf6f4e6208', '0xdd3f4ff31', '0xcb664aafe', '0xe4d2324cf', '0xe08f7240e', '0xe221859db', '0xcecd544e6', '0xe8a43273c', '0x103c60499c', '0xfa928e7f0', '0xe8bdb9457', '0xeb193034c', '0xe8a6faf23', '0xee4d2871b', '0xd350ebf50', '0xed0c6e56d', '0xd5fb702be', '0xc032b3c3b', '0xd832a973d', '0xf2e43fd50', '0x10efa61abc', '0xf32b06eb5', '0xe4a15d730', '0xf52985e21', '0xd9478f231', '0xeb666cfa3', '0xe800c8d15', '0xea179b8c2', '0xf5c60dbc6', '0xdd9e4f9f6', '0xf8e9fecfd', '0xe0434fdf2', '0xcd4a7d151', '0xddb3fc94c', '0xf3458f4f8', '0xf0641964e', '0xd8b98184e', '0xc9503ae3b', '0xd6413d6db', '0xef98b89c5', '0xe8e2710ad', '0xe617fcb1a', '0xdc58233d2', '0xf7dfbe1d2', '0x10651def12', '0x1254df72d1', '0x120d928dc9', '0x1041cdcb9d', '0xf04d0d015', '0x10e10bac12', '0x125cf7894a', '0x105c556679', '0xf86acab86', '0x1176eb4e1f', '0x112159d537', '0x10f5b8b87e', '0x112d173d63', '0x102f3962d4', '0xf029ca65e', '0xf06659f6f', '0xe8c105e42', '0xd80f7ac41', '0xf2967177b', '0xd9698c7b0', '0xe783f2c62', '0x104449d986', '0x124c59169e', '0x1060b9f6af', '0x1025926225', '0xfb5f981d5', '0xed0d30ec2', '0xece1cf8dc', '0x10a7ad9281', '0x10df5383b6', '0xf010c55f9', '0x10e0ae5def', '0x1048f53574', '0x115b141631', '0x10408dde3b', '0x1029ae2bfc', '0xf1eee5cef', '0xe8003e9da', '0xf859f4345', '0x1175b5cb39', '0x119ade175c', '0x10ab5ce819', '0x12424018b1', '0x148a047618', '0x128630afed', '0x1351df74ab', '0x128c30c56b', '0x104fb66702', '0x11f348d484', '0x1121082a13', '0x100baacd11', '0x1209d47d48', '0x113c873c84', '0xfc2236877', '0x10a558735c', '0xf7946fc89', '0x1032b04eb1', '0x12360b6183', '0x109174d751', '0x103aa718cf', '0x10e925c3b5', '0xfda5d9459', '0x1179f99a9e', '0x13a90b526f', '0x161e0621ab', '0x140a18d2d5', '0x12627b4db1', '0x14acee683a', '0x12850b2e5c', '0x10c3ba2121', '0x103cae8ab0', '0xfca5207cf', '0xf6ef87b15', '0xe6b8a4792', '0xf406b150a', '0x11257ef452', '0x116a13cd7c', '0x10b6849dc5', '0xf7e6be948', '0xea81286bf', '0xd4e0c7b4d', '0xef7c5af0f', '0x10d685997d', '0x12f0ebcfbb', '0x126f72fc88', '0x1114c774d2', '0xfc3a3a7a6', '0x11bb820abb', '0x123f201af4', '0x1039958516', '0x104440df58', '0xeadae1f47', '0x10830aa08b', '0xf34e23e5b', '0x111b238a9c', '0x12366651d8', '0x1193c524fb', '0xfe5354a91', '0x10994299ed', '0x12ac56f4bf', '0x11e3d46dac', '0x127c797884', '0x11f8531bbb', '0x1054c25f32', '0x11fa3c866b', '0x1055c7faab', '0xef098ee92', '0xf4b7042e0', '0xf20814cdb', '0x11046697f0', '0x1187644c82', '0x10552143bc', '0x10c342061f', '0xf0da50327', '0x10eee505bd', '0x104e32e251', '0xe446c8607', '0xf9cb9edab', '0xe9d198be8', '0x102e630d0a', '0xfb7de492f', '0xee7115b4f', '0xdb2e62afe', '0xf116cb91b', '0xef4f2aa0c', '0x10d36f493f', '0x11708dff20', '0x100c404853', '0xf7f0f1e84', '0xf1f305956', '0xe55803dbb', '0x101f7b41c8', '0xef806438f', '0xdf69c55ab', '0xdc8b2d93c', '0xea4d2990c', '0x1079320025', '0xfe7461893', '0xf01ec7fde', '0x10e1d6c3c1', '0xf77d09368', '0x1007ad0988', '0xe82d2dad7', '0xea802c8ef', '0x107c8d1708', '0x128beee812', '0x14dc91f996', '0x12f61f5ca6', '0x1237f519ba', '0x1092b7a8e1', '0x11cdc2d900', '0x104efdeb80', '0xf7c1cb007', '0x1077ac4da4', '0x1286259432', '0x13c768653f', '0x1296e6aa12', '0x110deb5884', '0x111269d836', '0xf2ce2b799', '0xe4fa6f9eb', '0xfc3b2b275', '0xe3a62f9de', '0xe216edfc9', '0xfe2ac2d18', '0xe6082af3f', '0xc94725958', '0xe13f94bc4', '0xd67f60a81', '0xcd351cd0c', '0xe6d2b2e80', '0x103ac70357', '0x10f3c6937f', '0xf907ad90f', '0xd9e6b7dee', '0xf450bf063', '0x112da86f4a', '0x12550bb5f8', '0x1099adf393', '0x114924c988', '0xfc34f65f7', '0x104146eb72', '0xe5645dace', '0x101f556efe', '0xfa62c2674', '0xdb166a1a6', '0xe5fbd140e', '0xfdd9f38ca', '0x10f84e122a', '0xfb6fafa84', '0xf69b529c5', '0x115678e756', '0x1380f72754', '0x1442dc6900', '0x15bec0f42d', '0x14e860f572', '0x150f11798d', '0x12b583eeea', '0x105ed3710d', '0x126a7e7f09', '0x13d29c9080', '0x11f218efa5', '0x10e36d07a4', '0xf64152724', '0xd77928240', '0xf2635901b', '0xef8a582cc', '0xe7a643ed5', '0xd25786ca4', '0xd9c850dfb', '0xcf3bfac42', '0xcc321d0c8', '0xcde44dbdf', '0xb95e1c94e', '0xd081d19f0', '0xe59245c3e', '0xd24dccd9b', '0xb8a11f126', '0xcfb40163a', '0xe9a8cea81', '0xdc8fd36bd', '0xf3ae81602', '0xf09d374ed', '0xdbd087555', '0xf08e6e9f2', '0xea6273a19', '0xe45414233', '0xcde9e1ade', '0xe69db8ae9', '0xdff195611', '0xc898af94b', '0xe1a441ad4', '0xf3816715f', '0xd5113a334', '0xde2fff5dd', '0xf5f8424c4', '0xd7393a02c', '0xf21cbf475', '0x1105afa671', '0x11cee12a0c', '0x11721cf8de', '0x10c5b143e1', '0xfc357104d', '0x1151456f67', '0x102136d467', '0x11b7d770d2', '0x13286bd01a', '0x10fd0c0086', '0x10b12bc14f', '0x12678cac9d', '0x14b43e6ab2', '0x132c03a3f0', '0x11b50ef5bb', '0x13844819cd', '0x1397ec2606', '0x11c40ed6a5', '0xfe4d0d2d8', '0xffabd3492', '0xe02939e95', '0xec56b1c61', '0xd678dead9', '0xdefb7890c', '0xcc510142f', '0xe5ca1b7e3', '0xfb6a04d0e', '0xf0f45b700', '0x10f0a7331d', '0x130e9a0d5a', '0x11dcef9d50', '0x13a51108b0', '0x148b89db9f', '0x171b0f5728', '0x1517c62dc6', '0x1357ee6122', '0x141dd95479', '0x11ac43311b', '0x11aaf747be', '0xfd25defc6', '0x11cc0ce7bc', '0x10193512e2', '0x11d8777cfa', '0x1413367a20', '0x150ca3bb9b', '0x174c0b8711', '0x15e0ada207', '0x150c200838', '0x14fbdcbe85', '0x1299eea23f', '0x14ed2849a8', '0x130cd4e1d9', '0x125473739d', '0x1161d8e3ce', '0x138d64416c', '0x13f7302d53', '0x146367cb26', '0x12b3d2b79e', '0x123bfefa30', '0x10bbc4adfb', '0x12bb0cd56f', '0x1234870d77', '0x1272a7d796', '0x111438a670', '0x109232467d', '0x12a452c947', '0x112409f37a', '0x101be198a0', '0x121f54250d', '0x13eee26688', '0x12f6594821', '0x12839fadf7', '0x133ab02163', '0x11e1269883', '0xfe028b4ba', '0x11ca78c256', '0x1167967258', '0xfb435ad10', '0xf59aa0d48', '0x10d54a6167', '0xfa04f0eba', '0x118bba0f51', '0x113db1c320', '0xffd3c2031', '0xfc2a0112d', '0xe94038263', '0x1065f949be', '0x11fa0804cc', '0x13baf87f63', '0x12070d0faf', '0x1447354876', '0x15718e59cc', '0x134af59467', '0x11dc6e644a', '0x139c65ef65', '0x1425e959d5', '0x1243d3c36e', '0x10a8498c7a', '0x1086c9886e', '0xf24d0b0ff', '0x11096073da', '0x118d612885', '0x1005f87285', '0x12062caf03', '0x1446978052', '0x13cf8bb59b', '0x139bb2171d', '0x1180bf2c3f', '0x13b0c6c307', '0x11c03c6f8b', '0x10d0cdbe2d', '0x12eabecbbb', '0x11d7e5c3b8', '0x106e61946c', '0xfe4f6530e', '0xf26503d8e', '0x10a46bb95c', '0xf186b7740', '0xe553336ea', '0xecb1ff5ed', '0xf814b3b73', '0xde98de795', '0xd6b2bb97e', '0xce9778435', '0xe8625fbac', '0x1056c37db5', '0x100cec35d2', '0x1138613e8e', '0xf34549984', '0x11142c6878', '0x1336a16007', '0x15622ac2b8', '0x13a73252f0', '0x1452b0631c', '0x161bb59a88', '0x13c9246765', '0x120757d73b', '0x13c4fa3354', '0x12724faaff', '0x1369ee6199', '0x15d6c095d4', '0x1771515f27', '0x1782cd5cd2', '0x1a212813d7', '0x18b57bd377', '0x1b5bc61a78', '0x1b8db5c097', '0x1a59bf2bc6', '0x171dfa71ec', '0x19a7ef4cdf', '0x18c7c8fcdb', '0x190ef21c37', '0x18ed4b7515', '0x165dc88473', '0x13920f73e5', '0x14ad9f6b0e', '0x16e1dc5e5c', '0x1724a9de5e', '0x14e6b958df', '0x1523cb848c', '0x14385ad776', '0x12f0f733ba', '0x1265049257', '0x11cb01af4b', '0x11db635b0d', '0x10109a357b', '0x11aabbe8fb', '0x1095a6cbe0', '0xe82f1f264', '0x1052b2214c', '0xee05b0306', '0x10bc4d20ee', '0x119e434839', '0x114cd46a42', '0x101665b587', '0x11afda6387', '0x1028295321', '0x105c7ebab2', '0x10d75a96f3', '0xfac9b7cae', '0xeeeb21a9b', '0x10c70973cd', '0xecbfe17dd', '0xcf27e54e2', '0xe3f2fc139', '0x1006849147', '0xeaf19faaa', '0xe661266c4', '0xe1b302f7c', '0xfde6a639a', '0x1145c105c9', '0x130ed264e6', '0x12ae2817fa', '0x120ef3aa62', '0x14507e2dc5', '0x1290ee7358', '0x1488444003', '0x171866755f', '0x168bbb681c', '0x16513551f0', '0x15ff9b4ba3', '0x186c1672d0', '0x15dbf8163c', '0x14ab096c11', '0x154ec1c825', '0x1438d0afd8', '0x12e6e0f44c', '0x11fa2b6113', '0x13df5f5936', '0x1604d9ed87', '0x17a4ff2952', '0x14b05f4428', '0x133a4fe8b1', '0x117af8d2bb', '0x13a7ee5abb', '0x117cc6392f', '0xff264fd22', '0xdf4185d7e', '0xfb21d13b8', '0x1100e36dee', '0x11e81a6da7', '0x100c929ef8', '0xf436f4aa6', '0x10d4e42e17', '0x128f6ffc71', '0x1069e825c9', '0xeaeffc136', '0x10845fee1d', '0x1294d539c9', '0x138e46860f', '0x120d3aaf2a', '0x1044dde872', '0x1064078dc5', '0xf349d498d', '0xdfcf889b1', '0xd6befbbbf', '0xc9804954b', '0xbcf6176ea', '0xd49014f23', '0xd6192df5e', '0xc63fb1096', '0xdf035e852', '0xfae1eb218', '0x110f4250f2', '0xf47a31b1f', '0xfc269965d', '0xee4a27774', '0x1009e65be5', '0xf2dbde83c', '0x1099dd6313', '0xefdf5e000', '0xd93314e91', '0xef15fee78', '0xdcdc18613', '0xc14095551', '0xd963a761f', '0xc6b025b59', '0xadda20fee', '0xc3727bc4a', '0xdbe03977a', '0xecb9e44a2', '0xfa6b51f48', '0xe1fcaa238', '0xe8751c7ce', '0xe1d10167b', '0xdb4111199', '0xbfd8eef66', '0xd7d2a2cc0', '0xc47728b7f', '0xc5da4e5ea', '0xb8020b7e4', '0xac423d8cd', '0xc1c9b41c9', '0xd55300f34', '0xbf9568d1f', '0xd510ff866', '0xe1aa6ac4c', '0xeedbb03e7', '0x10cb4211b2', '0x12967d5dc1', '0x10a09709f6', '0x1205287a82', '0x103b387a4a', '0xf1a37f7b5', '0xfcdf36409', '0xf693ff5c5', '0xdf41edffe', '0xfb29f9649', '0x1183451feb', '0xf9b385ee6', '0xde7d2151f', '0xc5bded38c', '0xde7475cbf', '0xf52abfcb9', '0x10fa0b7143', '0xf44c82d32', '0xe8cc9576a', '0x105dccc0ec', '0xfe20931ea', '0x100bf5db77', '0xe8896e6f2', '0x1056f670a2', '0xf6c29a8e2', '0xe3aaa590b', '0xda686af9b', '0xbf1b5d9a8', '0xd6fb566a2', '0xe3a317860', '0xd2b3f6d09', '0xbd834cd30', '0xd52cc80d4', '0xe73bf3c81', '0xec1aac378', '0xd70971e33', '0xf1e66a41d', '0x1101996cf5', '0xee1663f57', '0x10bd7db42e', '0x10d56ad60e', '0xf3613c14d', '0x1007a9a6d4', '0xe459c1b31', '0x100db1d0f3', '0xe773c4323', '0xe27ad2fe4', '0xe42b7c54d', '0xe3cf796ad', '0x10040b5ce6', '0x11ffc93231', '0x103d743bb5', '0x10ba012ab0', '0x10531250b2', '0xf78920f8e', '0xd897fcd9d', '0xed8485470', '0xd6ec52035', '0xd07c57152', '0xe66731df1', '0xcefe99aae', '0xe8d947aed', '0x105f38484a', '0x11312ec843', '0xf530a8fda', '0x113d295300', '0x10b28cf38f', '0x1187cc304f', '0x123ab810d0', '0x101f9c5a48', '0x12237f23c3', '0x11b1dc0543', '0x10f8eda4e4', '0x11b3fb2105', '0x13ca92aadf', '0x13733abdb1', '0x11b2bb64e0', '0x1117fa2460', '0x12ea036d43', '0x10dcbb395a', '0xec123d22f', '0x1098ee1f6a', '0x111e1b3f91', '0xfa5102012', '0x101f1da614', '0xe77de1d8d', '0xe419a1655', '0xd4736cd6f', '0xd3329bda3', '0xe4dd0163e', '0xe2ec46113', '0xff498112b', '0x11c81d6401', '0x1252689d25', '0x1012892ec2', '0xf335f9416', '0xf5e7a15e3', '0xde1bad4b9', '0xe3e53b367', '0xd50e19988', '0xd18f40f17', '0xbf8282045', '0xd76be0471', '0xc9ffd76dd', '0xe27156e6c', '0xccce085e9', '0xc55d3bfd0', '0xb1f97c187', '0x9bba4c957', '0xaf2ef8997', '0xc514c99c3', '0xdd1b0adee', '0xce4f4bcd9', '0xd2342c96f', '0xbbb1d665d', '0xd324ff89d', '0xe6e02ec68', '0xd734f2e01', '0xc42462f18', '0xb0b780f49', '0xc6063924f', '0xdec3b3317', '0xfa99eef07', '0x10e88089cd', '0xf4c4924f2', '0xe42f648ff', '0xc8729d4f0', '0xe1786e82b', '0xd3accd4d6', '0xe17001d83', '0xf888cbdb2', '0xee65c0cf8', '0xd726b7401', '0xce7abc530', '0xe84322922', '0xd5c8b5e3f', '0xc52ffafa5', '0xc85059f5e', '0xbe1d394f0', '0xd5d91defe', '0xc602e1ff0', '0xdebd9a589', '0xdf3e7acda', '0xd26928f28', '0xd32b7ed1a', '0xc39b2e52e', '0xb0fc671e1', '0xc71692d78', '0xbf40cab45', '0xc1257c76a', '0xd9478ce8d', '0xc675e664b', '0xb8a3aa237', '0xcfb79c037', '0xb5c0a8831', '0xcc7601fbc', '0xb2e741bc5', '0xc910bcab4', '0xe2310ff38', '0xfe6e91568', '0xf2dc2d989', '0x10991b010c', '0xea30a2ebf', '0xd1e90445e', '0xec2005586', '0x104f15603e', '0xe8b60f2b4', '0xe73d828f0', '0xdde02c939', '0xe5f938cbf', '0xe7af7068a', '0xeedcd5eda', '0xfd02116b4', '0x113daab721', '0xf8e3b9b05', '0xf723a0c7d', '0x11009c01bf', '0x12f4627570', '0x12317a1edb', '0x1177c5d1ca', '0x12e7e0757a', '0x13ae6dc082', '0x1138a00872', '0x10503c7aae', '0xed0aabc9a', '0xe8d1c81d9', '0xe33fdeb2b', '0xd735b244b', '0xf2134ee1c', '0xe7d65eefc', '0xf4dbb8dbf', '0xdea47a67d', '0xf65d78704', '0xf689ad953', '0xdc86d037e', '0xf813b7923', '0x1171430f6c', '0x139e690431', '0x133f5ccf71', '0x1135542885', '0x1184227c44', '0x1063b65180', '0x122458fb02', '0x116a1f0681', '0xf4ac0a7f2', '0x1133a72d22', '0x117faf6c64', '0x11d7d69520', '0xfdda3d72c', '0x11d8f6af5e', '0x13ca7281eb', '0x1639e8ca58', '0x1900d5d97f', '0x1c20b5fe24', '0x1fa45ba10e', '0x230f531219', '0x20adfda0d9', '0x1e0d8b6af4', '0x1ae1930c9a', '0x1b620334ab', '0x1822e8c557', '0x165ad19f59', '0x1926132d53', '0x165d7062b9', '0x13b689c717', '0x162cb7d954', '0x18f15be822', '0x1ab460814b', '0x18221349c4', '0x19ca3f6593', '0x173b53f941', '0x167848f0aa', '0x145b62f3a9', '0x132c015140', '0x13cbfd4e4f', '0x1196da70ad', '0x138c1ea6d1', '0x11b4ebce90', '0xff74b42e3', '0x10771742f7', '0x12851a9410', '0x14d50dab01', '0x176f80494a', '0x1a5cfc7038', '0x196c85e0b7', '0x16de9f99cb', '0x19b19c9b1e', '0x1841becb67', '0x16db8ec8a4', '0x174d9300de', '0x15ec777924', '0x18a9897d85', '0x18f16f6f83', '0x1791aa79db', '0x1819f10294', '0x1b1c7d9011', '0x180e22c429', '0x19bf8b04de', '0x170295eaae', '0x18cb13d078', '0x1810c3d53b', '0x15c8c5575a', '0x15261b4c79', '0x151cfaac72', '0x1600d92034', '0x18c0486a53', '0x17f5ef349c', '0x155ec2cc18', '0x14cd3b4afa', '0x156890e59e', '0x1384978878', '0x14464e228f', '0x13d1fc134c', '0x12ab294ef0', '0x13de5d1128', '0x15a3169285', '0x13af6f5029', '0x1201ee05a8', '0x1441ae2102', '0x16c972b086', '0x1871193fef', '0x1562f617f2', '0x17d5db79f1', '0x153e053022', '0x1296448a1e', '0x14e8ab8e5e', '0x1470b9d4c4', '0x15cc6d2664', '0x14de7041c4', '0x141a97a7e0', '0x1699c1257c', '0x196cf214d9', '0x1a03945a36', '0x191dd42ccb', '0x1ab96117e8', '0x17bd562b64', '0x1ab4e2346c', '0x19a2a0d4cd', '0x1692b3ac68', '0x171c1081e0', '0x182f7ac4f7', '0x158267475a', '0x134ed42abb', '0x15b7ed69f8', '0x143d0f9536', '0x134e9dff1a'], 'gasUsedRatio': [0, 0.9997456363236673, 0.9993065542187649, 0.8853691748666134, 0.6450570335849587, 0.06347530059539615, 0.9999529957676132, 0.1450679132175194, 0.9655893248270077, 0.34273105171735396, 0.1192575301831437, 0.4309587289177857, 0.6975026851323247, 0.038996406404620126, 0.36883624127171344, 0.9996878479731284, 0.7219650163800174, 0.07288095543057382, 0.9995798869308267, 0.3886809798875125, 0.34021113333333336, 0.15032372445025902, 0.9999781999796533, 0.17306973079053237, 0.5385384656233624, 0.37503513616517675, 0.9996104057891729, 0.738371667747608, 0.19498096449031627, 0.7141093178899569, 0.24830780353877668, 0.9995542666666667, 0.5873422269820188, 0.06772473213390773, 0.9994919666666666, 0.30031585843576253, 0.5014300916342094, 0.29717197570051473, 0.4481777182043313, 0.2449681, 0.38883456666666666, 0.2880784419318798, 0.7209367062075924, 0.9521446245608666, 0.5143795499276754, 0.541506341893943, 0.9993943838984203, 0.3033932733119417, 0.08770128182029849, 0.9993311, 0.05286949372729137, 0.9938708688607407, 0.5590149838527424, 0.05098741174847811, 0.2525090454815518, 0.5239814915268439, 0.19114949403658574, 0.5969760618366178, 0.26481242895744034, 0.9993880971036596, 0.14289886666666668, 0.9769477, 0.7262783666666667, 0.5134617, 0.43311086723814196, 0.7978927712963456, 0, 0.26023256666666666, 0.46309053333333333, 0.2879814666666667, 0.9997903, 0.9994325666666667, 0.9997771509454351, 0.10475773459914345, 0.01100772635225178, 0.9997340661613924, 0.21383448232417263, 0.9998321328577098, 0.16187553333333332, 0.18784147280180905, 0.2838155666666667, 0.3732443602155828, 0.2760646455514141, 0.6447914178122103, 0.9994683716035915, 0.9868068242959354, 0.06775469648861981, 0.49939006930053964, 0.9996326485067424, 0.2807171321400633, 0.29021031407672515, 0.20651225158695266, 0.9996147322417414, 0.5805801481584298, 0.7053266430545072, 0.4377531575745014, 0.18651751380969575, 0.2839836667154651, 0.6290668423076411, 0.06230315096261442, 0.9996093651822544, 0.9996890691091442, 0.9993186666666667, 0.5404863515889933, 0, 0.6084764117941013, 0.4095914654653872, 0.6962149433672572, 0.6303916861097774, 0.41723853333333333, 0.24872076666666668, 0.28696478778193574, 0.30108641434732003, 0.879133327552127, 0.7201749776599583, 0.24191374701295257, 0.2802718992730529, 0.5427299802273026, 0.4983511104558494, 0.2696902016483358, 0.4194510429982641, 0.5579057040271194, 0.6889213765620716, 0.8827249416625992, 0.28019510433869793, 0.10987996223290754, 0.9994790236100334, 0.871280085577883, 0.020720247292211728, 0.8163802083359426, 0.04192202949885106, 0.1566823416297504, 0.9993950333333333, 0.9436627, 0.09978534038488585, 0.6782763997246397, 0.22028696204939002, 0.8870591520790556, 0.8629764027791458, 0.2344159308451374, 0.027179651271812193, 0.9997838325191025, 0.6175175985846393, 0.06226709265533548, 0.26651403690634584, 0.7052907398045009, 0.06922992635166751, 0.9998913205716163, 0.9999566395207333, 0.9998740199136709, 0.1926569539531535, 0, 0.8137666405586059, 0.18879043333333334, 0.17756676060840076, 0.6776780727765981, 0.06547116254568298, 0.9392849214277124, 0.6605778647354527, 0.08358158508392065, 0.17732513890771287, 0.9999322330735602, 0.42551834982227577, 0.5279765693720347, 0.15809407104525003, 0.999788565454442, 0.9665053333333333, 0.3583224018253825, 0.21534977712159314, 0.5405134025581535, 0.45838125191832985, 0.597125754708781, 0.047039200892676734, 0.9870894016038626, 0.11077378161014016, 0.09278618757563803, 0.9994814873447844, 0.9938753076009568, 0.9625347605151547, 0.08948736666666667, 0.2608609974306577, 0.7892331356964218, 0.04507389155987005, 0.8335900291131924, 0.442276371277537, 0.5360194032556227, 0.6996039, 0.10687005861223485, 0.9926602055652771, 0.1038615347583929, 0.16161209508837426, 0.8197822416118598, 0.8891446924241737, 0.4526339279145352, 0.10620191766891489, 0.21556100855169463, 0.7571402615975668, 0.9731136610726602, 0.38794446584265324, 0.4520648666666667, 0.33051404696686315, 0.9997580331074976, 0.7331154333333333, 0.9724727863425301, 0.43922667661156484, 0.1020674, 0.19533574535533949, 0.9954514957547294, 0.8516939, 0.06380603993132627, 0.29594834288512, 0.9994066, 0.4234446, 0.46020446666666665, 0.5510113, 0.26905946343395676, 0.2097794, 0.5039400641392987, 0.37278169472020684, 0.213112910451254, 0.9911069986350008, 0.08488625270965112, 0.759472385171758, 0.9967722, 0.9995422666666667, 0.08020063333333333, 0.44356452590711837, 0.3920089666666667, 0.27210179259952655, 0.49714061390259345, 0.9997896610673713, 0.5522067491928234, 0.05708088126756552, 0.999481265196918, 0.35953763333333333, 0.7630111666666667, 0.24564995615115173, 0.47800886207523335, 0.24212676666666666, 0.3357854333333333, 0.7819027280139056, 0.9993811660890883, 0.5332526188847853, 0.287431403205286, 0.8813947272212891, 0.9995599321011432, 0.107588027622117, 0.6718047414043679, 0.3401233669283754, 0.01772954210511585, 0.901916542414132, 0.31698403995694063, 0.2469895706314432, 0.9967908268116191, 0.32216601280370294, 0.15698580810140064, 0.7252844652381524, 0.21833476666666668, 0.6872238407471563, 0.9971250973167575, 0.13913853197243425, 0.4181378471906481, 0.6679993816617051, 0.24980573278938514, 0.9096323362802525, 0.9998411561481154, 0.9998801491809037, 0.12421424235567398, 0.1697019001047971, 0.9984186723774858, 0.08292479322818114, 0.12091333564680107, 0.37413432813017816, 0.38994934802773457, 0.40960655500642146, 0.23735013702788038, 0.7306659294995528, 0.9969524854735141, 0.5624959585342444, 0.3388907861199724, 0.2082199872788382, 0.2838362279003166, 0.1311120061802563, 0.9999616248320001, 0.9997683720394822, 0.9996139966803714, 0.39319523333333334, 0.2061775343044184, 0.1916013, 0.9994189666666666, 0.6159750666666667, 0.056816566666666665, 0.5102748333333333, 0.10946349109905823, 0.9996288421417836, 0.1837904266486584, 0.9996348201370611, 0.7587365812043837, 0.3604756213475938, 0.11725873333333334, 0.6769896862380552, 0.9999265666666667, 0.3322212333333333, 0.6333191, 0.3883037880176674, 0.13518628384091763, 0.9032541787734671, 0.1345644, 0.15834292186319943, 0.5950072605063257, 0.45613932765480497, 0.9998269954496798, 0.6202745306098998, 0.22700235074007213, 0.6053571333333333, 0.09208853333333333, 0.9995271666666666, 0.35171877994471734, 0, 0.8770672228097404, 0.244164124648923, 0.929057923151283, 0.38555523255494184, 0.29243803333333335, 0.1768930694156177, 0.8998125941713288, 0.4704706693969799, 0.9998623997385595, 0.6459058333333333, 0.18077123333333334, 0.36252830889363463, 0.4033337343383441, 0.29160105241339657, 0.9992292280156478, 0.2136684865806038, 0.23130255748724482, 0.4486242737077179, 0.7495243078075167, 0.9997544145866903, 0.36159379267709835, 0.27466513236550644, 0.9996611990400639, 0.1649350597351673, 0.6453210973761334, 0.1209717512420175, 0.5400419654106824, 0.999508384276932, 0.9998229656634721, 0.9992799666666666, 0.1356586, 0.3432960047846611, 0.13872739795530858, 0.7970206797595386, 0.16407256666666667, 0.29795906666666666, 0.7538384333333333, 0.9995394333333333, 0.7709836, 0.2594452, 0.16968699935487003, 0.5041174705096392, 0.05562296666666667, 0.2722111857770887, 0.9062020426619746, 0.11016765187411856, 0.47259649793334607, 0.9967494333333333, 0.120169, 0, 0.9763651446074683, 0.3090855, 0.3267561106754079, 0.9993106993566527, 0.9999594937411658, 0.6781065754752365, 0.17252149503073808, 0, 0.9848833586295893, 0.9999800276606879, 0.7686773739426656, 0.12210787930565803, 0.6651552333333334, 0.14761953333333333, 0.6248646333333333, 0.028025500234312137, 0.9981219338897483, 0.3825767226605099, 0, 0.698936061845862, 0.9151200808005483, 0.7783941792468697, 0.20414177675938694, 0.4231686726264592, 0.9995449433183067, 0.9997153335428354, 0.6553349691948375, 0.7929654373839364, 0.3459604952757523, 0.5289138672778163, 0.05366701543737905, 0, 0.9998233324912182, 0.8055406959210836, 0.12124062844626976, 0.26433106666666667, 0.14533378510782446, 0, 0.9996407822099175, 0.4530064366710331, 0.3682320905517989, 0.13207214527348313, 0.6414950333333334, 0.30626193144272046, 0.44135064588414225, 0.5332241087922074, 0.10126266936869938, 0.9993208791061841, 0.9040969680452591, 0.16428793931983052, 0.011668099076659156, 0.9998936625232866, 0.9998721995143581, 0.27578331705237313, 0.9192900086849867, 0.4496468234396138, 0.15422544575170746, 0.8774419666666666, 0.3973746, 0.3966460085060272, 0.10732297041220473, 0.9798614458308771, 0.3842680333333333, 0.08297986316971856, 0.9994146327869906, 0.8166765333333333, 0, 0.6712171931360469, 0.9281478, 0, 0.9997362330783587, 0.9996539283932068, 0.6846791011070988, 0.4186059868548619, 0.34557423982370905, 0.25931918455683706, 0.8944461675974749, 0.22565896666666665, 0.8939028961781179, 0.8250374367016076, 0.04704194703376237, 0.4302137073704946, 0.9103543704575391, 0.999788280367208, 0.20399128114949752, 0.19441345003042237, 0.908751145017752, 0.5157243429751638, 0.12689655057133878, 0.0785082340984615, 0.5215525772092993, 0.007020678050900075, 0.7173011012229124, 0.12991237688969717, 0.6587182433960191, 0.165159391949083, 0.9986981296447006, 0.8764254793527795, 0.33358745651275284, 0.9994519294113376, 0.9998772933395567, 0.2493824690580554, 0.8989826626075237, 0.683311926237455, 0.9985391135554404, 0.15154314961788168, 0.16825059340892765, 0.6598711846337123, 0.0140933379125031, 0.4988536929634229, 0.0820450518517528, 0.9993952188624383, 0.11822802436412842, 0.9341052480258891, 0.9997265659833655, 0.6941361761680962, 0.927124804296769, 0.25629507351850156, 0.3481947231399479, 0.4879269, 0.045833389638315146, 0.9999862999872133, 0.14135770106227497, 0.34877018149779854, 0.2931965552517033, 0.9993828947935318, 0.5845460865577548, 0.5846904656802571, 0.1692478988506362, 0.39989011172698763, 0.17075573762866433, 0.977413140624263, 0.38778211332336343, 0.5533227725460058, 0.20318873878387406, 0.3810445246575323, 0.9998608380556518, 0.17790572307869365, 0.2592021, 0.9999634333333334, 0.8996747657420805, 0.30518028483493254, 0.4054662, 0.6544968504921611, 0.21922880089733995, 0.05169337139309366, 0.9825723666666667, 0.41315433333333335, 0.10913976666666667, 0.4099097666666667, 0.8864210568286599, 0.21319480380334438, 0.9913800409440214, 0.43051008463582746, 0.20957706666666667, 0.442725378667731, 0.19998545998594466, 0.9994194658805827, 0.8850024148379215, 0.8902097478839963, 0.15478344168560562, 0.9993722281950845, 0.7298870562061774, 0.0988041577158088, 0.20315359492701598, 0.8918851140700961, 0.6095636942368827, 0.1261399027821424, 0.1479425920900151, 0.4685761524965874, 0.16533695281523927, 0.9999583853933398, 0.6210652175366573, 0.1515682461180018, 0.9994712159710394, 0.9996925991290309, 0.4082601240592077, 0.4591051112660895, 0.07053260978403796, 0.9999431330641632, 0.10598106666666667, 0.28924298755598493, 0.9998524, 0.27298183342700816, 0.18342867120009312, 0.369323322259287, 0.3125824168205114, 0.8940963874355874, 0.1282047923067518, 0.2979311333333333, 0.6285563813602684, 0.6924087693284771, 0.0891062, 0.358058010313738, 0.3489694449545142, 0.9993927063907401, 0.9998350663532928, 0.4293855, 0.7915188818119107, 0.03175596403076523, 0.9931164048485259, 0.9999406998873298, 0.9517815897741017, 0.17631936623820435, 0.6363432588314824, 0.8513724068360657, 0.0797896, 0.14478858605428202, 0.8862197938051409, 0.23233142180939056, 0.7097447314605424, 0.9996617357088843, 0.7937461822808498, 0.5116536666666667, 0.9455067873778745, 0.28252991723376814, 0.9289253936080721, 0.5285195375204547, 0.3253610031663141, 0.00916125959561084, 0.9393098, 0.3634884868259478, 0.5448694933738436, 0.47901713333333334, 0.0891044, 0, 0.7263943702369939, 0.9263530792565373, 0.5456157700032963, 0.11250826666666666, 0.5456543666666667, 0.32598, 0.24701176666666666, 0.38455453333333334, 0.36917756856236783, 0.5143855134264792, 0.09855893333333333, 0.8989022780745398, 0.2549424980857633, 0, 0.9993352016488202, 0.14549675630375486, 0.9998963641691623, 0.7109669905306687, 0.42777975237859983, 0.2196257584768429, 0.8976845547082503, 0.15397140293153067, 0.5506107834941152, 0.6173297874061975, 0.22282813807351112, 0.3106850382118333, 0.9942493356191309, 0.027785785612643412, 0, 0.9015009365838945, 0.9993780976575012, 0.1651652726779638, 0.4222903514313184, 0.4187388, 0.9998104, 0.8538174527426031, 0.9134719915589893, 0.42074706623233993, 0.3668342969851643, 0.9997162765169066, 0.1557546, 0.9235997284681825, 0.9993153326943105, 0.40483176666666665, 0.4594411, 0.44286806666666667, 0.9407133267697427, 0.08022431103704399, 0.2820343327739013, 0.6237717, 0.2961839333333333, 0.23888466666666666, 0.30432716666666665, 0.9217167666666667, 0.93203346401094, 0.7953034756165772, 0, 0.2174972, 0.13647963333333332, 0.9978436276357197, 0.058692872399782534, 0.14762143874405761, 0, 0.9994473926623142, 0.8332656275859448, 0.7124702666666667, 0.08506126666666666, 0.304177237594156, 0.9109668806013179, 0.9108213308235023, 0.03737737101700493, 0.07837448289563657, 0.9994688, 0.9999161333333333, 0.7097551666666667, 0.19234913333333334, 0.10498613333333333, 0.5299291, 0.2107598, 0.17975913333333332, 0.33799433333333334, 0.25329163928576254, 0.2510718757061702, 0.9996054787009983, 0.5288957014194877, 0.2038825963987938, 0.9996623739496571, 0.9998688494995354, 0.8518969547526319, 0.08269302543459565, 0.6255487806140678, 0.28011388952928284, 0.8076772180402366, 0.28552031632337815, 0.8748298107285818, 0.11231298606790274, 0.12191601609572134, 0.903065000728888, 0.19506905114703085, 0, 0.999595507720973, 0.1558947519741109, 0, 0.9968623170478935, 0.9999544777617353, 0.8065413638300822, 0.7313741884582211, 0.1097384498672991, 0.6145286144559684, 0.3857246597944163, 0.3837593648840205, 0, 0.9998847870567518, 0.14123657323904582, 0.5282450304558006, 0.22009952103124067, 0.24459290970285327, 0.9999258664566216, 0.9032517666666666, 0.09234630950456454, 0.9485303519616618, 0.7365327, 0.7338408622686721, 0.9998024331489376, 0.9272659333333333, 0.07810166705545368, 0.8350739666666667, 0.10292927710576044, 0.22179384034091765, 0.6859513050038877, 0.40044278082652424, 0.12169266094288969, 0.9999862333333334, 0.9624933333333333, 0.06455906666666666, 0.06407953333333333, 0.0550896950872527, 0.9999045999109599, 0.9083895235332855, 0.931718880306572, 0.09755337287126992, 0.31171070433890724, 0.999371794786074, 0.38184265951685264, 0.5412435728565602, 0.12280948910477998, 0.9970967095327475, 0.27547020909983433, 0.19049166513318408, 0.33732867328693383, 0, 0.9997180253925871, 0.7354671843316438, 0.2024370015518142, 0.09772579650526818, 0.9994285387107217, 0.8388627308256528, 0.5842436088414259, 0.1430847541107979, 0.9996940297878719, 0.9993780771565584, 0, 0.9999125333333333, 0.5223323575471448, 0.11448137527663167, 0.7152864717406275, 0.06131588325332708, 0.9993251397166988, 0.10438987433478769, 0.4140655219700334, 0.5298496206851314, 0.493699089674244, 0.9994033638227009, 0.9953522333333333, 0.10906873895692477, 0.619833456228789, 0.4038459558307313, 0.2908616862064946, 0, 0.886418532264761, 0.11948879757628866, 0.38019115946001963, 0.9205065490434525, 0.0936066459368663, 0.9996115743625853, 0.9999380726837841, 0.7003835614575336, 0.06544273333333334, 0.9997348744382223, 0.3743659539665396, 0.6995503538191797, 0.6594736529999407, 0.0379123934857865, 0.9999365331535106, 0.4021106782362906, 0.33670031279452195, 0.6722032333333333, 0.9718395012729931, 0.4310433587057509, 0.13970533762143875, 0.363373167796707, 0.9259951603315351, 0.06606312051217478, 0, 0.9996269666666666, 0.6253739333333334, 0.1558336, 0.6218985333333333, 0.08978793333333333, 0.4413956, 0.2255724381525226, 0.4764051078642248, 0.8345796404458812, 0.4660870188986692, 0.9999790870484293, 0.9578382026392347, 0.6215205002569332, 0.0088933, 0.28304963333333333, 0.5443067488736084, 0.11291211197003966, 0.6042253100997789, 0.23952339717880344, 0.4343738874720929, 0.15547195368176236, 0.9994333116710069, 0.2507766529512812, 0.9840282095204596, 0.1177767890291024, 0.3546788345176844, 0.107028076726704, 0, 0.9997375437114342, 0.9999950999954267, 0.9876047666666666, 0.23232913333333333, 0.5754991749443331, 0.07167040540938614, 0.999744516940492, 0.8737949268770278, 0.22853129501904665, 0.14564885968352628, 0.10385210447810443, 0.9822970226195332, 0.9997395246249258, 0.9998436470242485, 0.8181161049318333, 0.11906786484672796, 0.22900478144725123, 0.013773477042811963, 0.999336671185492, 0.25525964603768325, 0.7600688535284184, 0.9098134439661242, 0.33685333548089696, 0.10995828844488624, 0.3387776255881736, 0.9994746333333333, 0.1817696981102046, 0.18946974350509393, 0.5634208666666667, 0.2963253, 0.9993622333333333, 0.20377381846706644, 0.9995549311960233, 0.5090405587018006, 0.2700582905080288, 0.5144312528711424, 0.20519040187224497, 0.11923028062128496, 0.9995250724665271, 0.34258060564776105, 0.5395985729716818, 0.9997879256418453, 0.1535531811137593, 0.22143113560890407, 0.9999565664610812, 0, 0.9997650666666666, 0, 0.9955084958079294, 0.9998627, 0.9994040333333334, 0.31807573333333333, 0.8740264132075029, 0.027368090330430684, 0.08529798896849493, 0.9995442324521827, 0.9204150647798828, 0.06723759274776588, 0.4747172333333333, 0.3380110333333333, 0.6459888080710814, 0.5297736200913262, 0.6239151562680801, 0.7368798667384134, 0.8611916333333334, 0.10900173333333334, 0.47186896666666667, 0.9029942071766414, 0.959287895335369, 0.3393304729152431, 0.34051081762682517, 0.8292690234792388, 0.6640966560627247, 0, 0.2891506987726553, 0.13261723333333333, 0.4287513666666667, 0.40430406959062193, 0.2880789022069754, 0.999339254164996, 0.3308289842141039, 0.7246558, 0.1370832, 0.9262012021405569, 0.5028037397535816, 0.07797644439392623, 0.9997202756484542, 0.9998745995401003, 0.9990956719449589, 0.4243011416567894, 0.07621645024658223, 0.5715551087948886, 0.24271733082736524, 0.9277084600932061, 0.33961029279023275, 0.012468497964895749, 0.999546706255457, 0.5690628572956854, 0.5787135349456075, 0.0567284239452985, 0.9996243991788232, 0.9355330336967423, 0.992228187829715, 0.9997802040718857, 0.9998569814323253, 0.9997545539772509, 0.9320631639329253, 0.22844044724793386, 0.17848583333333334, 0.07784338072794751, 0.5746562363458206, 0.025762180814267226, 0.2047437311736488, 0.9999327030442429, 0.05723664984381163, 0.02569519191050386, 0.9994948549421306, 0.999331360814337, 0.7825325631931616, 0.1148242627820006, 0.7746306808010872, 0.10321414343614142, 0.368819678926993, 0.1238723226461279, 0.2671396027206352, 0.6303864194281884, 0.0539563, 0.9452878068767485, 0.1233514484613519, 0.10676383333333334, 0.6250674666666667, 0.9991711666666667, 0.9994191661490779, 0.9998620332045643, 0.9996981611306064, 0.35748191254896716, 0.09812724102595313, 0.9939605495548904, 0.2762917817515954, 0.2692739142650771, 0.5779392345670049, 0.2632365038782349, 0.9996522333333333, 0.5455517686978665, 0.27964266666666665, 0.5903434333333333, 0.9995502724922447, 0.049106980803414774, 0.7815184666666667, 0.07463226666666667, 0.8099805539890297, 0.3825838, 0.12083013333333334, 0.3833273, 0.4932565316698423, 0.6686363226776215, 0.9995233007089996, 0.37226044062817054, 0.06753794418626273, 0.39359482830517445, 0.6166780150619352, 0.14677073333333332, 0.6550763333333334, 0.4103555121576219, 0.2675804497417531, 0.7571180666666667, 0.8560301, 0.13918006666666666, 0.15908474625471772, 0.9995741329358574, 0.9996588665648093, 0.7904975755954744, 0, 0.9580094666666666, 0.06482950601262133, 0, 0.9996796666666666, 0.4103668, 0.7657891666666666, 0.3294124045463729, 0.3533657631413789, 0.9967652224078596, 0.9999805333333334, 0.5925703666666666, 0.3620028708632687, 0.7560257666666667, 0.0532815, 0.9999209438649825, 0.33954362822550727, 0.022187533333333332, 0.595082, 0.6862150443425329, 0.05740715549358364, 0.09060416666666667, 0.9993890333333333, 0.22743058596719698, 0.31591129485054187], 'oldestBlock': '0xd10f1a'}}), - (('0x400', '0xd10f18', []), {'jsonrpc': '2.0', 'id': 19, 'result': {'baseFeePerGas': ['0x12f7ff3ee3', '0x1556938bca', '0x16036da87c', '0x18c24b10d3', '0x19fa5d091c', '0x180255c988', '0x16d4245483', '0x19adc05709', '0x177db9debd', '0x1a6c8477ad', '0x19280c760b', '0x1c4b5c0d27', '0x198384c582', '0x185b42e0d2', '0x16b355b352', '0x1710d1bac7', '0x14f5136c14', '0x1793231fe7', '0x1a005ae5ce', '0x1a9fea9070', '0x19b19cfea3', '0x172ac40343', '0x1a0f643158', '0x1b8021805c', '0x18101d5051', '0x197527b4d3', '0x16813054d5', '0x15ca7d4167', '0x1883c4e535', '0x1b9380091a', '0x1e09adf66b', '0x1ad4022db8', '0x1a78142f08', '0x1a35121e39', '0x1c57519c7d', '0x19287a41e5', '0x18d2cc2099', '0x19cd05c5d3', '0x1737a3d40d', '0x15e5927428', '0x171247f2ff', '0x16c4a17b08', '0x1778426c9e', '0x189c1450fb', '0x18cf129719', '0x16105d55eb', '0x1558e1b768', '0x179810b991', '0x158dde2ea0', '0x1523b6e2c7', '0x137dd45dd4', '0x1465fbd60d', '0x15270ac375', '0x1494a63d16', '0x1558a63668', '0x12ad916f9b', '0x129da69873', '0x1449cf4424', '0x148792ad5e', '0x13d64ce8be', '0x147e18adc9', '0x15fc0386b2', '0x14113f7fc6', '0x1428323e05', '0x16acd3b249', '0x16e316e7fd', '0x14f4ae9f5d', '0x13f64c4a84', '0x145c1f6c27', '0x148104b636', '0x171099c5df', '0x165d2ed083', '0x141c162a4c', '0x12167076ca', '0x14366e0536', '0x159139f1c8', '0x14f702004e', '0x132d90ac42', '0x13b649e5c0', '0x12485142da', '0x104ae907b0', '0x11e9ade178', '0x1426705fec', '0x152cac0721', '0x12addc9023', '0x11fda448dc', '0x143ca03114', '0x128647108f', '0x123e59e0dc', '0x11075484b6', '0x11457ddf7b', '0x11079adc02', '0x13280fa26b', '0x12fbfc58ba', '0x13a7ab9877', '0x1180efcd1c', '0x12aa03b11a', '0x131ca5fb88', '0x11cc788c86', '0x126c7b41a4', '0x10bae8ac23', '0xfa22178c3', '0xdaddd49ab', '0xf631e7d6c', '0x106bb217d6', '0xf99624d27', '0x115d99366b', '0x10849313b2', '0x12950b66d0', '0x125aed8b62', '0x11796dbfc2', '0x12d7ab8dd7', '0x15324fe8bc', '0x1414f66d1b', '0x16973b089f', '0x158e838389', '0x1375ef576d', '0x15e2d8d03a', '0x13e4f2191a', '0x153b32c469', '0x13173e5b6b', '0x121f7ef358', '0x115311cb0a', '0x134964bd3d', '0x11296f3cf5', '0xfc25baf6a', '0x11b96e218b', '0x1055166549', '0x112bea90d1', '0xfef11714c', '0x10d7c2393f', '0x1150aa108a', '0x1190b29166', '0x12042233ce', '0x104eff5fcc', '0x10b3117f66', '0x12c911e3b8', '0x1521edebc6', '0x165679e9e8', '0x14ebec5f79', '0x14e7132865', '0x149476dde8', '0x12a412fa14', '0x14f80c5c07', '0x1312a08808', '0x1193b05e96', '0x111491f2bf', '0xf2341e861', '0xedada7447', '0x10b5f54e1e', '0x12cc82ad55', '0x11cc00504d', '0x11a8d3cf7e', '0xf73b9558f', '0xde7f5ebc9', '0xfa4939556', '0x11990dbf3e', '0x103fd37fae', '0xe711dc637', '0xfff5ca80a', '0x11feea38ba', '0x14022c91a6', '0x148e797088', '0x154ed931e6', '0x137b0952f5', '0x12d9b2bf51', '0x1252dc0b63', '0x12d00b939d', '0x119cc5939c', '0x101bf4db7f', '0xfd3208b83', '0x10a9191073', '0xee8bf273b', '0x10c521278c', '0xf038a817c', '0x10e263dff3', '0xef77fa3d3', '0x10d63fe89a', '0x12f0f77687', '0x154efb8aa9', '0x132e7c763c', '0x1458c9d355', '0x13a4213673', '0x13e5eb63ef', '0x12cb3f7688', '0x122a9c087d', '0x1417fc70e5', '0x11a467a6a6', '0x13d841fe3a', '0x12c1f28807', '0x1233d8e9e4', '0x1141a61250', '0x11dcc725a2', '0x131ed61587', '0x1400aaea00', '0x1580de2861', '0x14a2628a1e', '0x1532f70853', '0x13c8961a1a', '0x1605bd3b92', '0x16a9402eae', '0x146ae94677', '0x14c17e24ee', '0x1294197b10', '0x12a0599bb5', '0x14b812fa42', '0x1607d8555a', '0x140da94c4b', '0x120123fa0d', '0x126fa0a2b0', '0x1051f9c3e9', '0x12377b925c', '0x1293076221', '0x12d7ceaa0a', '0x1532759fc6', '0x17a530320a', '0x14b08a2bc9', '0x1745f33ac9', '0x15863ad32e', '0x13f7b129c5', '0x12b802d1db', '0x150e5376d0', '0x17af568b53', '0x1a56c0fca2', '0x17933099d4', '0x17ed38410d', '0x15b3b86c0c', '0x1821fdef5f', '0x17feb98aa4', '0x16ad2e770b', '0x1601eb6aa5', '0x15923624c2', '0x154fd4dd5f', '0x17f964b1dc', '0x1af866cb63', '0x1d7766de7a', '0x1b2d2b60bf', '0x19c2a09e18', '0x1a862ed287', '0x173568f837', '0x1a1bdc3fba', '0x1d5e30854b', '0x1c3924ebcb', '0x1ce196507d', '0x1da2d35f50', '0x1a6cb68061', '0x1a95f7324e', '0x1976ec1a53', '0x18366d6792', '0x1a6ab34627', '0x180f70dd80', '0x17924e646c', '0x14e5b3973f', '0x1782123af9', '0x14f821adc2', '0x1796500e7b', '0x15b8ebf820', '0x13b38e62bf', '0x147fda5ffb', '0x12aa45ea27', '0x14fec0bf75', '0x179e6bec54', '0x17aa77ed21', '0x1537f8f1be', '0x1640f760c9', '0x15371d8b5c', '0x13e2dda5fd', '0x13234c0075', '0x1145047b47', '0x11dd3af1a8', '0x1107a893a4', '0xf18eb2d1b', '0x10fbeb62a0', '0x115191b3fd', '0x137b4d7483', '0x120dde86bd', '0xfedff6fba', '0x11e39da8fd', '0x12394d7bc8', '0x12b5ce1d61', '0x11e039eb29', '0x107125ea68', '0x11e34ca12c', '0x13df1bf0fe', '0x159887d9c5', '0x1338c9b5b1', '0x13a28ee8e0', '0x14221f02bc', '0x1369932d25', '0x125517f8fc', '0x149f027821', '0x13b56d2866', '0x131dc916bf', '0x13f397bbb9', '0x1218b62ff9', '0x144b2cc27d', '0x153ebe4107', '0x1577345df7', '0x14c5e47112', '0x129c8d989d', '0x1260f6e118', '0x11df633237', '0x141a94cd7f', '0x11cd590833', '0x12ddc9e6d7', '0x10cd9890c3', '0x10290c9d1e', '0x12163d33ba', '0x114971fee5', '0xfce68751e', '0x116b2d71bf', '0x13986d350f', '0x11dfc4c608', '0x1322a75a26', '0x11955243a0', '0xfdf4aa160', '0xe5a733ab1', '0xe93282402', '0x1015c2151f', '0x1218044fbc', '0x110fb77e24', '0x1331a9d279', '0x134bd1ae36', '0x12b278f1bd', '0x11487df90c', '0x1370f2aa67', '0x12d41ab671', '0x1079975fa3', '0x114fd6ff3a', '0xf78ed828a', '0x110afbdb44', '0x132bfac224', '0x1472d9ae9c', '0x1315022963', '0x11c87b2d51', '0x12ab122478', '0x129c558964', '0x124f9ede8b', '0x111469a7c7', '0x10b7ac9353', '0x107390c036', '0x10c87109ff', '0xfeb5aad95', '0xea5c42a5c', '0xfad449d1a', '0xe1a84b202', '0xf8b85f75a', '0xde267a153', '0xf9e95027e', '0xffbe473ac', '0xf0a68be85', '0xd291ba6b5', '0xecdc386e4', '0x10a74be326', '0x12bbcfd134', '0x11a8f3a56f', '0x113db01866', '0xfa00acd3e', '0x117970a999', '0x12599c6355', '0x10909dc81b', '0x11a1d4ddf5', '0x10cb28211c', '0x12e44fdb2f', '0x1313b33fd1', '0x1155c3f0d0', '0x13800c302c', '0x125844185c', '0x135d55b081', '0x129e0eddbe', '0x14f149335d', '0x161e35597f', '0x15e57b34e4', '0x14c0381eb4', '0x13abcb7564', '0x155e965d7c', '0x17dca3d570', '0x16af9dc0fc', '0x17cbf24574', '0x1558a71ef7', '0x13b02c3793', '0x1625d53591', '0x17eeec3ddd', '0x1983b66ed3', '0x17348b5e62', '0x1985eae8cd', '0x177f32526f', '0x1727c1387e', '0x1a0c92d76d', '0x1bbd6b1f78', '0x18cf450e8e', '0x1be88d96c4', '0x1a3aa8575b', '0x1b4c5c6a3d', '0x18892a40bb', '0x1713fc00f4', '0x155000c950', '0x12a600b026', '0x14fa83d46e', '0x1799260291', '0x16c6b8d74a', '0x1960158d80', '0x17955315f2', '0x1a87d9e6dd', '0x1a220cdfd8', '0x189bd36b76', '0x173ddab678', '0x1586043686', '0x17f8c55f7a', '0x16fa56314c', '0x19bc210f27', '0x16ce385bc6', '0x17534ae143', '0x15ccbc03dd', '0x188644bdf9', '0x19c686f3dc', '0x1772ea159b', '0x16e6097557', '0x15aa34de47', '0x14763e184c', '0x13edecbd15', '0x14fdd84819', '0x12d5fa9239', '0x14b6179541', '0x12b9738875', '0x1241ae2a0e', '0x11e84b5b6e', '0x1199b22c19', '0xf9789771d', '0x118a6c61db', '0x136a11c146', '0x138297a4ab', '0x11f73a58cb', '0x1216d86eee', '0x10df2605b3', '0x12f27c131e', '0x13b2adf1c7', '0x116c9e6b35', '0x10396461a5', '0xfa8d8dc3f', '0xeca2d7525', '0xef9ffe6b1', '0xd1abfe9db', '0xebdac9575', '0x10942c8efb', '0xf68df3493', '0xdfad63e76', '0xfb9f834b3', '0x10da41fc8d', '0x12f58960ff', '0x1096d834e0', '0xf87097c1c', '0xfa49922a1', '0x113c7bf371', '0x11562dec9a', '0x1380797f4f', '0x12f6db4cfc', '0x1114b93ec1', '0x10e93259ea', '0xf10e7f23c', '0xf7d42ee39', '0x116c3aa937', '0x133f5f9c42', '0x12bcf7246b', '0x115868dd0b', '0x1325e88490', '0x115c64119a', '0x11e9d9e715', '0x1426ebe939', '0x167551213e', '0x1442c2aedc', '0x16cb048345', '0x19a3759464', '0x192953c2f0', '0x165ac41d18', '0x14690280b4', '0x1484c1c556', '0x12fedc7b76', '0x155de1e874', '0x18090c0f79', '0x1a04e0ae5c', '0x1714fca8b6', '0x14f84e3777', '0x14f4995490', '0x12effbd09b', '0x1322593503', '0x11119927f0', '0xf3db186e0', '0x10fd5985b3', '0xf61102f12', '0xed933244b', '0xd60e3bb80', '0xf0ccd804a', '0x10ee1390ae', '0x1243c5dac3', '0x10bf6bdd75', '0x12d6fcfa81', '0x122345270f', '0x12e66ca628', '0x110f84d487', '0xf756e18ba', '0x10f9f2ff82', '0x1141a7979a', '0x10da3eafe7', '0x10be1be1b0', '0x12d58e04a5', '0x139b991a1f', '0x116bcd6486', '0x12c2165a09', '0x10ba78918e', '0x127296468e', '0x14c02a0f92', '0x15523f38b5', '0x13e278170c', '0x16350e3a6c', '0x1451d75056', '0x151a7319a6', '0x15528d98a9', '0x15d6e732ac', '0x17475ecd1a', '0x164c4c1afa', '0x15a7835f1c', '0x1425049c43', '0x16a92dfa22', '0x14def06006', '0x1290d33c73', '0x12e28d6b29', '0x11ee1dd646', '0x11cf01f6aa', '0x1408c54177', '0x124e30ba44', '0x106aa5e4dd', '0xf97f3efad', '0x1164d1766f', '0xfa9989649', '0xe1f2847c6', '0xfe28d660b', '0xe6e1a72ed', '0xf134cad7b', '0xde3ae68f5', '0xf4f74d6ae', '0x1138d534a7', '0xf11ba8e13', '0xe8e17f558', '0xe515866d7', '0xdf40f3e37', '0xcc883e06d', '0xe138e1db6', '0xfd5a05ac4', '0xe362d41f8', '0xfe37ac518', '0x1183d4fbb6', '0x1016dbc633', '0x121953b551', '0x11f22745c4', '0x101e18810a', '0x112de7cbb6', '0xf6d24535e', '0x115a563e7a', '0xfcca1f4ff', '0x118aa224f2', '0x105ea259b2', '0x114696985f', '0x12303c10dd', '0x14753b569f', '0x13fddf4cdd', '0x11f6db850a', '0xfd0e0ffdd', '0x10613f1d41', '0x1146f90817', '0x1112d80dcd', '0x116a005da1', '0xfcefbbeb4', '0xeb716e42e', '0xe8b85fa69', '0xd1aac52c2', '0xe1f0cb800', '0xfe25b9be1', '0x11de41151a', '0x1127edffab', '0x1026029c48', '0x10f70cdf4f', '0xf51588093', '0x107d974e96', '0xf0a95fa1e', '0xe72698356', '0x10405fedb4', '0x10c1e1a7b6', '0xefddf9188', '0x10b0421e1e', '0xed4cc83a8', '0xdb14dc64e', '0xf5af5735b', '0xe67cc5b4a', '0xcd997da2c', '0xd1337b3cf', '0xcc8dcbce4', '0xe06698947', '0xc743945cc', '0xe029710eb', '0xed36a327a', '0x103f21cc71', '0x11dc8fc146', '0x105ec22c9c', '0x111b2e8f05', '0x1242e28abf', '0x101b737727', '0x11b70ef9b2', '0x10278e5630', '0xe9b5f093d', '0x106e360843', '0xed46adfae', '0x10ae89468b', '0x107f277277', '0xf19e941da', '0x109a980ca1', '0x108932f35b', '0xf928e6d5f', '0x1120d56d13', '0xfbb5edf08', '0xe01c258f8', '0xee64a59f1', '0x1072b8881b', '0xeb243371c', '0x10881c2961', '0x1081485b5e', '0x11058fbbed', '0xf4f280221', '0xe5bbb7101', '0x10271419dc', '0xf1c362584', '0x10ffb23aff', '0x102e9e1d6e', '0xe465f863d', '0xe38a6244e', '0xfb242fdda', '0x11a861fee4', '0x13dcdebc3d', '0x11b7492040', '0x12b6db0abc', '0x128596ac3f', '0x14d5d6c43b', '0x1330b25c9d', '0x114a4ee51c', '0x13734d9b20', '0x1505b3b13d', '0x12c5d44d3d', '0x151dfb92a9', '0x13144d914f', '0x136d6f0767', '0x1171795fb3', '0x1259a3c891', '0x10dca7dd09', '0x10e161faab', '0x10a6d41229', '0xf1a084e4f', '0x10fd1e1fff', '0x111345add6', '0xf43300d77', '0xeaf201a29', '0xe29051405', '0xd4e0a8774', '0xef76bba19', '0xeeafdf39f', '0xd579c7923', '0xdb44bbf02', '0xd7f275f14', '0xf2ed3aefb', '0xe5ecc40a0', '0xca8a610f7', '0xc1c3cf4e0', '0xd518aa0ed', '0xbb2c556f1', '0xcdd070860', '0xe7892d82e', '0x1047460659', '0x124fbfa678', '0x119ddfa99c', '0x13d04f9628', '0x118ea3e933', '0xf5ccf6c0d', '0x10e9f216f0', '0x10a2f86dfe', '0xf7b5f02ed', '0x1038f5e812', '0x121fe8d12f', '0x12a660f048', '0x10f8e42d81', '0x11fe4ef258', '0x11176f9469', '0x11754d4b34', '0xfc788bf4b', '0x10ece32f53', '0xf35ee3a66', '0x10bee4845b', '0x12d6962f38', '0x133a35bd22', '0x124f1f66bc', '0x1498527c26', '0x1355785968', '0x1228af7e74', '0x142f9d0878', '0x135429b089', '0x153d93831f', '0x135d7e02a2', '0x139e3c4e2d', '0x11cd346821', '0x14062977c8', '0x14851c5f15', '0x1222b6f362', '0x138aa36a70', '0x11a1b303a2', '0x120638cdfb', '0x1174cc0281', '0x11bd6b67fb', '0xfdb7bf27c', '0x11d68c8269', '0x141094ed54', '0x169079e3b3', '0x13fc7114f8', '0x1283efe6a6', '0x14d43d921b', '0x133a76f891', '0x1482920564', '0x1686b8faaf', '0x1495771979', '0x124e1d5cae', '0x144ec8ac9f', '0x1341345a23', '0x117b6738e3', '0x110522fe84', '0x11f275847b', '0x1341da01e5', '0x148e7b8e85', '0x14d4ca3dea', '0x127638a21a', '0x1470197728', '0x14202404da', '0x13ef45a609', '0x13123c119a', '0x12e444162c', '0x15401b1b0e', '0x129817b7ad', '0x106bd5d4c1', '0x1242b69df1', '0x13ad859640', '0x11c5b9b372', '0x13fe3aa31a', '0x117e734eb7', '0x10f2350c7f', '0x106b7f8df3', '0xeb673df80', '0x108d1aa991', '0x1161cb5cd9', '0x105ca37ccb', '0x1268008eb3', '0x101b007cdd', '0x121e282202', '0x134fe4b1c1', '0x10e5e81b89', '0x13028741db', '0x12ecb20667', '0x154a44abcc', '0x1545ff5f9a', '0x13e41ce895', '0x1430d1a55f', '0x138de93390', '0x12b6a4c211', '0x11ece27d78', '0xfcbe3ffc1', '0x11b8a1ab37', '0x11cd99712c', '0x1189c15b89', '0x13baf0a66f', '0x16320f24a8', '0x15dd175a78', '0x13dfe21597', '0x1359cfa228', '0x1354153af9', '0x13b4b7831e', '0x123ea9917e', '0x13be84f5a1', '0x143a5439f4', '0x11f1d6bbda', '0x142f8b97da', '0x145751b7ac', '0x11df2b3be3', '0xff8cd3276', '0x10164781b7', '0xe9761505e', '0x106a173c03', '0x1277477987', '0x14c5ea4971', '0x14626c2dcd', '0x12015f713d', '0x12a4d42cc3', '0x14f8d6dcb0', '0x179740193b', '0x18c7d4c107', '0x164cb6c7df', '0x14f76c1915', '0x12587e95f3', '0x112b1449e4', '0x13177e1263', '0x157a3e351d', '0x1729574d4e', '0x1814c7c60a', '0x15d3b4e247', '0x17c72fc79f', '0x15f93e8dc2', '0x14c5aae8d1', '0x12dec277c8', '0x13c9f8148c', '0x1642d6fdaa', '0x151662802f', '0x17b90e6ad0', '0x161ca9ce32', '0x144dd099ab', '0x1414aed846', '0x136a279d88', '0x11d92c6e00', '0x131cdc8537', '0x11238bb0e0', '0x12f62893c5', '0x1427e47d74', '0x16a6e7c83d', '0x14dd4894e6', '0x124dbf5969', '0x14977138f3', '0x12ff461816', '0x12be17f49f', '0x106654f60c', '0x11a54a6dc7', '0x11c593ee07', '0xfccca2aa7', '0x100ef6e297', '0x11cb2da72b', '0x1404880e24', '0x15646a0e11', '0x1465494707', '0x12fe1c1daf', '0x155d68774f', '0x146dfa20c7', '0x14d5580a5b', '0x176fa0a6cb', '0x172be7a349', '0x179fb2ff91', '0x15706f2061', '0x140376c3b0', '0x12809ff11b', '0x11674c80be', '0x127747f5ef', '0x11e02b76a4', '0x13a6dd459e', '0x146ef803b2', '0x13909251a1', '0x1341506d9f', '0x13093553e7', '0x110cfc2afe', '0x12de22103a', '0x127b49de21', '0x11c2b0544f', '0xff187b537', '0x11ef83b6d5', '0x1049d7d87d', '0x1251c081a4', '0x12edba9846', '0x11431b28de', '0xfe40c4cab', '0x11819c882b', '0x130839bba4', '0x1195b7ea47', '0xf9b2b5dc7', '0x118e8a3f72', '0x11e7a556be', '0x100de87852', '0xf7b58ab76', '0x1013a18ab3', '0xe8934c955', '0xfbbce26bb', '0x118b5d2559', '0x105a795315', '0xec3930bdf', '0xf9542170b', '0xef56d8a23', '0x10d3173cbe', '0x10639a85d6', '0xfc1fcd8d5', '0xed08a0ff9', '0xf722330de', '0xe86beea1b', '0x105726162b', '0x1261729997', '0x14ad788054', '0x128488effd', '0x113ac4db74', '0x1361ef6297', '0x134c258e5e', '0x142444f1a0', '0x156aee9caf', '0x1817680e2c', '0x19f2a4d6ae', '0x16e835bed4', '0x1646621f63', '0x147745426f', '0x1506943d87', '0x138c66b5d2', '0x1386f99dd8', '0x133f72e8fe', '0x13b323a21f', '0x11cd1f5931', '0x1086ad28ea', '0x1296e80958', '0x1447dc0ec9', '0x1379bf8e57', '0x15e8c32ca0', '0x17d98ca452', '0x15b16ef86e', '0x18670a2ba6', '0x178dedddbe', '0x1846215e66', '0x17580092f1', '0x1600d878cd', '0x14648d45d1', '0x135cefe46e', '0x129dae3937', '0x11a6043057', '0x124c24c2dc', '0x109fd5d922', '0x12864a5708', '0x112a860453', '0xf6577ac95', '0x1151843718', '0xf59472152', '0xf2b15b149', '0xd8efc30c9', '0xf404b6333', '0xd6cdf2362', '0xe98e6c561', '0xcc5c9ecb5', '0xdebcef95a', '0xda9d9564c', '0xf5ebfe5d1', '0x114a598393', '0x1034acdb8d', '0xf39a61ce9', '0x111a420c5a', '0x105652cf52', '0xeb80c358c', '0x1083b9bd15', '0xf27dbe64e', '0xddec6fadd', '0xee2a51682', '0x10be84a979', '0x10d44bfdaa', '0xeb9c27df5', '0xed71372e1', '0xfea7d0b6c', '0x10117bae5a', '0xe5b2e0b67', '0xe5cbc7fa4', '0xf938c6b26', '0xf20a24486', '0xd79d24ece', '0xf0ea79e97', '0xdea4a29d8', '0xf8b0bc97b', '0xe006a4a46', '0xdb09d4b99', '0xd35e0d14d', '0xdc91075ba', '0xcacfed229', '0xc4d821892', '0xdd7148295', '0xd1e5ac770', '0xbc40562ea', '0xd3c7aa8ab', '0xee3c4bb85', '0x10bfdfb81f', '0x10093687f4', '0x1209e100d0', '0x105599739c', '0xfa5fc743a', '0x119a6d5c60', '0x10523bfe8e', '0x1080a4f1b8', '0xf30fbcae4', '0xe5b77559d', '0x1026d490aa', '0x1050d19b52', '0x10c1103e87', '0x12d9300ecd', '0x10c7424d09', '0x12e00aec79', '0x125ec7230e', '0x1066d7ca83', '0x1166dad9b0', '0xffbf0684e', '0x11005865c2', '0x10a88de398', '0xee843224d', '0x10c2d2ef9b', '0xf9ce79fc8', '0xdf2463d78', '0xf48752cfa', '0xfa827bd0e', '0xf4faf4383', '0x11396df109', '0x124a3f2124', '0x11555c9b67', '0x1306d047e0', '0x10fe08a151', '0x10463b0157', '0xf7da331a6', '0x10ed596f63', '0x130a8ab816', '0x12702edc50', '0x1265c74c9c', '0x111bf2d8ab', '0xfa624f161', '0xeb9eebfcf', '0xec82a8d66', '0xe2532f652', '0xefe9de259', '0x10de33875c'], 'gasUsedRatio': [0.9996537615634695, 0.6265717571530053, 0.9988901140876233, 0.6969427080043393, 0.19684164185471412, 0.30333438600400014, 0.9993783, 0.15923549345936308, 0.9993851660928217, 0.30813484793820306, 0.998947098034583, 0.10690012084823389, 0.31856752637536906, 0.22804573278764337, 0.5643462923710346, 0.13437093333333333, 0.9995726506399834, 0.9117340146762142, 0.5958850276260499, 0.3601491, 0.1066369, 0.9995143591049994, 0.7210870063478726, 0, 0.7318402333333334, 0.03601453485995741, 0.37315151663724366, 0.9999775447173764, 0.999528232436975, 0.857067435410782, 0.07258503333333333, 0.4464592, 0.460444323882271, 0.8256773039654837, 0.050762, 0.44678643333333334, 0.6575031666666666, 0.09946686272478408, 0.27248428765200183, 0.7145785862628329, 0.4474117351685723, 0.6232733333333333, 0.6942791302373434, 0.5323762635511793, 0.05742403333333333, 0.370063, 0.9210035333333333, 0.1541776211136842, 0.42304745015920747, 0.18816917511918213, 0.6861018903251384, 0.6478812036785561, 0.3918622059596314, 0.6488046626996705, 0, 0.48668441384140826, 0.8593707192316973, 0.5475668575194934, 0.3650784354444675, 0.6321670333333334, 0.7912011587351618, 0.15119791282464906, 0.5178681, 0.9996947, 0.5373913040582537, 0.16246812371918626, 0.31032679919649053, 0.5797016, 0.5283152666666666, 0.9995846277223042, 0.37845558655854744, 0.0968015, 0.09779443333333333, 0.9699255666666666, 0.7680848666666666, 0.38827225214577965, 0.1590706, 0.6113936, 0.2099086, 0.0646388, 0.8977730420422209, 0.9996073334887924, 0.7033429276002984, 0.02861164616534913, 0.3525930966361485, 0.9993736335007121, 0.1615481034460301, 0.43933167544458834, 0.233620928592631, 0.5570377, 0.44401276666666667, 0.9995462902857974, 0.4640499230531279, 0.6413045847513723, 0.06218628055626294, 0.7651924696472215, 0.5959678346165797, 0.2251570446376166, 0.6404688671150284, 0.13229148534308183, 0.23776875877212486, 0, 0.9994536, 0.7686657020580597, 0.2998792465539635, 0.9529637, 0.30472913333333335, 0.9999036726029634, 0.45113215439001075, 0.308042, 0.8131748986218376, 0.9997373330881776, 0.2896549, 0.9997258666666666, 0.3169072666666667, 0.11107005991350553, 0.9985307986287454, 0.1359699, 0.7688052333333333, 0.09673616286303575, 0.29722911074717, 0.3237512, 0.9530472160601839, 0.059314857337695426, 0.17307911239639706, 0.9987876656038465, 0.18586384117689084, 0.7055242952664563, 0.21168865138444448, 0.7281801071134855, 0.6121636322303274, 0.5577830502972305, 0.6026852005335354, 0.12088170916484263, 0.5958762666666667, 0.9996425666666666, 0.9997719, 0.7281337333333333, 0.24639894190009878, 0.49637896483128163, 0.4382475377939436, 0.12312342671904897, 0.9995514611495887, 0.13828849181739347, 0.1862851686084572, 0.3869976576911773, 0.04506146666666667, 0.4252652333333333, 0.9997351666666666, 0.9998199666666666, 0.2867979751106378, 0.4691186577799865, 0, 0.09980692629339083, 0.9995738830729948, 0.9999052481882933, 0.19347532306474294, 0.05506807776096475, 0.930871631155743, 0.9996412649566963, 0.9473789313660518, 0.609563046621731, 0.646223242009076, 0.1569569235983542, 0.3705939346231882, 0.38823279684368256, 0.6067486, 0.2447919, 0.1586074134725893, 0.4293597340690851, 0.7112703666666667, 0.07951613333333334, 0.9992553666666667, 0.08110886666666667, 0.9983416, 0.04572213333333333, 0.9998055333333333, 0.9999403915409936, 0.9999134666666667, 0.10073463333333334, 0.7429919649871433, 0.36126628253459303, 0.5523373580228887, 0.27803213936925947, 0.366447611224409, 0.9243543498158028, 0.011988407713567744, 0.9993820643185111, 0.28086906532682326, 0.3816312857757955, 0.2920973925604026, 0.6404631386553283, 0.7817179, 0.6845465930814774, 0.8001172488776257, 0.33833734681193045, 0.6094808697880584, 0.232905115461805, 0.9526749602055751, 0.6160121222725538, 0.1039891986252614, 0.5662582666666667, 0.08039410484337955, 0.5103029787680873, 0.9493999772668008, 0.7532173668507929, 0.14099458243278556, 0.09130861398811231, 0.5958850566282932, 0.040936788893131126, 0.9648251666666666, 0.5785216735857435, 0.5578574333333334, 0.9997315288287654, 0.9619798632472011, 0, 0.9995037323904249, 0.199413172514655, 0.21069246362864694, 0.24984327985206847, 0.9994270466000651, 0.9994221001514452, 0.948212376981058, 0.0802522097589583, 0.5596699674380353, 0.12809540365667482, 0.9480222116728292, 0.4771659384110501, 0.2801996473349525, 0.38199374898228877, 0.42068889465750126, 0.4519178022237217, 0.9996941974643199, 0.9998918333333333, 0.8701988, 0.1891416301351603, 0.29155773878722285, 0.6186150333333333, 0, 0.9998478514269183, 0.9993097660224483, 0.344087286579456, 0.5932537271820817, 0.6045438449020918, 0.06655770824964946, 0.5243928669583005, 0.33129896924776736, 0.3033448465792273, 0.8641394145358564, 0.1431843, 0.4187363372999599, 0.04619161131855761, 0.9997435333333333, 0.068008, 0.9993776, 0.1837587, 0.12785625162971642, 0.6620260189240076, 0.14207844959581709, 0.9993266850158359, 0.9998694178295143, 0.5079695979581456, 0.08636673454641354, 0.6951363733022201, 0.3133385996449669, 0.2494071994675725, 0.34948026216766964, 0.10951182385922546, 0.637717386216995, 0.31319834303060545, 0.04607467946638991, 0.9998819663322379, 0.5787960122827074, 0.9995825145697391, 0.20690903957720325, 0.029306073025614755, 0.9920238666666666, 0.5748419002177707, 0.6067476, 0.32163875309094003, 0.17914336666666666, 0.8517587757778804, 0.9435698779731287, 0.8470902691684365, 0.0602862478772043, 0.5859783545554303, 0.6015111042814622, 0.35677773333333335, 0.2774608333333333, 0.9993857333333334, 0.3230097857224246, 0.37977952112755303, 0.6747581333333333, 0.12809795431905924, 0.9856448778445444, 0.6875342751695024, 0.5415252955647283, 0.37093313333333333, 0.08379056666666666, 0.4499732677706886, 0.3898381435102054, 0.9993621, 0.0420389176697712, 0.7391223231808349, 0.06255417586996784, 0.34699010500841476, 0.976851751753916, 0.32308145706438857, 0.15740192086122745, 0.9080354487666422, 0.9998671364160665, 0.14862800846017366, 0.7822564666666667, 0.1755579, 0.11075445172210664, 0.11721534550210982, 0.5617307988045012, 0.9144573451635118, 0.9995521253007122, 0.27176242469627776, 0.999983518430607, 0.5212922170331992, 0.37582814358902084, 0.19749716955273372, 0.9994524307807516, 0.37394397603653357, 0, 0.703195130838213, 0.07497375652743697, 0.9060220881511523, 0.9996540872944327, 0.7663994523165114, 0.23268241473424356, 0.22771610313388654, 0.6990911775744102, 0.487665601326549, 0.43559348073454124, 0.23102953930125233, 0.41516024260871603, 0.43634215709653434, 0.5806124058588802, 0.29416700524857853, 0.1804322540460025, 0.7810860276465277, 0.09858182529701001, 0.9088110372404096, 0.07269404644737322, 0.9998611679865033, 0.5933433896316482, 0.2639398010268638, 0, 0.9994268666666667, 0.9998017666666666, 0.999627763488953, 0.27074993333333336, 0.40509619023690036, 0.12512466666666666, 0.9733929, 0.7004459855048455, 0.11087066025352557, 0.7577127055792803, 0.30976271023183977, 0.999777248079379, 0.5391937119861757, 0.13475661346157009, 0.9996047944613913, 0.2629977624753842, 0.7223627875664999, 0.3456617, 0.9995557, 0.7245151333333333, 0.4599257824734147, 0.29073193333333336, 0.2918576323112853, 0.8453616556708786, 0.9665331666666667, 0.3028865666666667, 0.6958326, 0.08811616666666666, 0.18929034201898154, 0.9997131330655908, 0.8224715666666667, 0.7642695666666667, 0.13797046148897732, 0.8995412979162858, 0.18244408635941187, 0.44185273839809147, 0.9998984339611209, 0.7596326189590871, 0.07746543114556856, 0.9996060985163044, 0.25931566666666667, 0.6630482999982816, 0.09521498886732294, 0.2623494, 0.19398610590092108, 0, 0.9998005333333333, 0.999492861887034, 0.36067123333333334, 0.9564526666666666, 0.2175162, 0.9999079100741874, 0.44004527737559224, 0.26668369887006554, 0.27778972332966284, 0.20430342380318237, 0.9549928241452857, 0.33415752941238885, 0.9799401904393903, 0.044690777035394466, 0.591173231553296, 0.23837618730038773, 0.9999585997640187, 0.7040426487299463, 0.13894199294661966, 0.4061273, 0.284491, 0.2778921716277388, 0.3959057, 0.7131902, 0.0892207, 0.8982707613985056, 0.11627160852016795, 0.4000545, 0.42349842045908836, 0.4314194170387698, 0.04354753333333333, 0.9999441212322834, 0.9272612296858553, 0.5197365463411593, 0.183366, 0.5274980981071983, 0.23076456040778187, 0.9920748978679665, 0.6584953397576568, 0.03829256672370136, 0.22449857689592043, 0.36079328629668533, 0.27782186666666664, 0.5505227521341256, 0, 0.9995001209986244, 0.9987181, 0.21791716666666666, 0.12884978848512238, 0.9997519331018042, 0.7864286, 0.9999969, 0, 0.2439910943916881, 0.5297467588069499, 0.9074176533436468, 0.5232931900571519, 0.9995698654479521, 0.3897396850649069, 0.10276229000072241, 0.46018321760822134, 0.06362283448141655, 0.6123754498705947, 0.9993039713444601, 0.9189420035971945, 0.39413582777359296, 0.20268221253482405, 0.915726165069006, 0.12666181502624288, 0.627315793889334, 0.9998595222016434, 0.9577665180096729, 0.10860989830236492, 0.9999322022327752, 0.9993586413043642, 0.4255684560319021, 0.053780700366403034, 0.15208691470956573, 0.5212417733103761, 0.20309255529247805, 0.999311958180831, 0.9995826642878531, 0.830132723027224, 0.04847348820747178, 0.13399383333333334, 0.49723815305645963, 0.11479670714359333, 0.5415552666666666, 0.06822165177629289, 0.07167247611821449, 0.9589353173621465, 0.12082931298158638, 0.36196467957583034, 0.10400903017800014, 0.9997686734464843, 0.9996608653779551, 0.8153579954429327, 0.1677755465990749, 0.999663369675884, 0.350948767074639, 0.6681179666666667, 0.11069513333333333, 0.12441942890565971, 0.8926984331852043, 0.5659975, 0.4063668, 0.47391343333333336, 0.9997034103802362, 0.6642982866784009, 0.0539119, 0.8069956666666667, 0.0671746, 0.9110860421868622, 0.9993680660768617, 0.6099986, 0.23047912953665922, 0.9672154690766689, 0.16001070513057497, 0.6542596241880266, 0.5415393050327291, 0.5969854125106333, 0.7636190915858743, 0.33147679460743645, 0.3845300959583117, 0.22111897358543295, 0.9996387792286111, 0.18403623777152545, 0.0582103179042716, 0.5687820594005015, 0.29775925914433155, 0.47289053684056104, 0.9999007691094705, 0.15482550484632002, 0.087261904865181, 0.299464378780553, 0.9617943666666666, 0.1018502, 0.1065053, 0.9994471333333333, 0.1336464, 0.6788755666666667, 0.1853126, 0.9092324988684785, 0.999432966137435, 0, 0.3635102010446534, 0.4347861058003654, 0.3981969989477266, 0.16456953333333332, 0.9046306384851475, 0.999585799613413, 0.09004648109884204, 0.9719977143957336, 0.9094450707423787, 0.17440932167943404, 0.99962236770057, 0.4661810226151852, 0.09247535050358699, 0.7635030551310258, 0.09183883333333333, 0.9995464571153732, 0.14189636576994138, 0.9410791, 0.23277783333333332, 0.7214023666666667, 0.7113209333333333, 0.9991133, 0.4088377, 0.09435113278550163, 0.021638933333333332, 0.6426248, 0.7191392394673398, 0.4528563056991451, 0.5797625986147259, 0.13120868262983032, 0.22335546431962366, 0.45374032680723714, 0.1037621545287403, 0.810464279764263, 0.9993659333333333, 0.9996081173265694, 0.3405645714143723, 0.2650968900401179, 0.7022637111032417, 0.11160516488015758, 0.8062676469822032, 0.1484688437188716, 0.34192151069912435, 0.9996334, 0.6245145, 0.07853553333333334, 0.9527350666666666, 0.05484021813968006, 0.19290438004408805, 0.9857267488485495, 0.25256873812831115, 0.06808364410126722, 0.5700687429858782, 0.41114371474007344, 0.8881006516939748, 0.05193052875296418, 0.9997972733533474, 0.7328950060510427, 0.883322729290304, 0.8976113425291352, 0.1660051079758769, 0.6798465618761396, 0.7700988819468322, 0.02817329104302814, 0.8992844110952501, 0.14763188761476745, 0.11680144415786542, 0.9993778561984304, 0.11029669523991213, 0.999543330146228, 0.45561949153363185, 0.16163400938144548, 0.8980254451189141, 0.48363058500726996, 0.2669444143887747, 0.8996203978760379, 0.17390954387988988, 0.06138983419611725, 0.754932084436158, 0.9157317317068825, 0.0739843240960165, 0.999537115602814, 0.49354708429117394, 0.625225984891732, 0.09756833474665853, 0.2515545980493852, 0.9998691654237382, 0.2418506, 0.9999568088428317, 0.3078187657257308, 0.028564267937817727, 0.48497783333333333, 0.9148850333333334, 0.9998391333333333, 0.9995039155735576, 0.0676708313074342, 0.7254058544674079, 0.4588657470864731, 0.9996218948940614, 0.18417328571124825, 0.10397429811247584, 0.9997347152321818, 0.8232571008216989, 0.0719773202907175, 0.9995211982334833, 0.11399824125108668, 0.5729935945868241, 0.09146165795131225, 0.70796507302745, 0.17559533085343743, 0.5043802563977655, 0.4458003617939376, 0.12766883919776317, 0.9998252916328854, 0.5203760770193072, 0.0753323436634139, 0.34842058536561277, 0.3573013034319794, 0.2583696451437957, 0.9995590299966604, 0.48702433333333334, 0.07750026666666666, 0.6085424, 0.4394097836537379, 0.9997439997610664, 0.2859137616410867, 0.023595281584935377, 0.32668829849791703, 0.8990704870961029, 0.013400076350263503, 0.8983698624641451, 0.9999000381077577, 0.9995985739113815, 0.9995832988193466, 0.3482214248487352, 0.9988495956668103, 0.04445173333333333, 0, 0.9039202459147085, 0.43443314099263847, 0.22237488382666604, 0.6913415901255151, 0.9690137178938394, 0.6159240077829407, 0.1401732018941872, 0.740666149597823, 0.2995162218479357, 0.5858118583221824, 0.1153602768021956, 0.7904822781340055, 0.09476735245150808, 0.903666226807622, 0.9998436470242485, 0.5826305406554226, 0.30895794978408686, 0.9994104808627212, 0.25505890573077206, 0.25691572307382987, 0.9465158029165357, 0.3301339182089287, 0.8956323867086616, 0.14683971501382267, 0.5522387830173591, 0.12962242789688136, 0.9993914523171148, 0.599059563327178, 0.03521165277044149, 0.8100976206531356, 0.10905503440067932, 0.5890822473773243, 0.37393325832016594, 0.565004200109387, 0.0755200473068007, 0.9996346088269111, 0.9993117211503435, 0.9983036370554054, 0.04295013807672633, 0.2056512058624909, 0.9998407222639147, 0.1926051782397231, 0.7666189812687665, 0.8932160526948075, 0.15508495598949942, 0.057184257727850615, 0.9376070343449074, 0.2925827350184491, 0.1317448026212627, 0.3942964244246173, 0.7178700125772904, 0.7919974124270365, 0.7698913311029775, 0.5534404528056918, 0.04502706091000591, 0.9281460617845092, 0.4388706, 0.46205953446874204, 0.32674847163190684, 0.462338, 0.9994265266633798, 0, 0.032565930848925846, 0.9480461662225881, 0.8104434, 0.11266952178802601, 0.9998135998260265, 0, 0.37473953284712797, 0.3757929666666667, 0.08411246666666666, 0.9998352941685777, 0.7007882774286682, 0.2652424, 0.9997934666666667, 0, 0.9997862, 0.7636707244624376, 0, 0.9998921333333334, 0.48205459297670844, 0.9999883666558089, 0.4968657, 0.24007726878630317, 0.5602547562377724, 0.37393019183383813, 0.3279894634220633, 0.3315392446636456, 0.02494417341671715, 0.9873929032301202, 0.5184876062950943, 0.4404563021108444, 0.9999691063313317, 0.9998032909648906, 0.4401851148626601, 0.13609091802085826, 0.3945949921281186, 0.49537476347443515, 0.5781182649714893, 0.20340894864869122, 0.8287387814265473, 0.5979793544477892, 0.048510566640057984, 0.9995442532314428, 0.5307874790607342, 0.014414, 0.0747765, 0.5288375666666667, 0.12809788758722893, 0.9997730997882265, 0.9999306, 0.9997681930261766, 0.4251642, 0.033154133333333335, 0.6418465965348497, 0.9995029328694041, 0.9994830666666666, 0.7017340766591911, 0.09953720325657038, 0.26086261784685805, 0, 0.24328493333333334, 0.9481495666666667, 0.9998477179632578, 0.8136260260509577, 0.6588300007456059, 0.12556733333333334, 0.8575564, 0.1964494, 0.2812882666666667, 0.1337432002350295, 0.6947597817757963, 0.9997036, 0.28911143333333333, 0.9999062333333333, 0.2283786, 0.17293693958817452, 0.4560339419903613, 0.3673108296949071, 0.17728876511924901, 0.783366653071322, 0.08689552149902001, 0.925397558070927, 0.7519357653398948, 0.9953691225630322, 0.18433913252786488, 0.009079747374677032, 0.9999798075505787, 0.19027946640136606, 0.44638983424823314, 0, 0.8038910380697196, 0.5285898031125562, 0.056189030126535734, 0.5654419007183163, 0.9322235488864629, 0.9999611907622659, 0.7746653274414631, 0.3136532232940084, 0.22483683473908073, 0.9996170168750708, 0.3248943909174183, 0.5790572074270699, 0.9997117370224048, 0.45484872399155335, 0.5780824045668129, 0.1300972619659325, 0.2340078, 0.1979862335570685, 0.26242497826331307, 0.7441876666666667, 0.37213679157697493, 0.8974455376158351, 0.6591014359424757, 0.3299379935488544, 0.4367026031602653, 0.45447165433635395, 0.08284296666666667, 0.9262539202864931, 0.4181434438786808, 0.343932782830791, 0.09077147972562012, 0.999797234941241, 0.13265161360129232, 0.9987322666666667, 0.6330363600055454, 0.14783601909834793, 0.182236144449422, 0.9066455493076404, 0.8486371550304411, 0.1958210579898039, 0.049906081486354954, 0.9999743916709679, 0.5793013762604515, 0.0865843154186857, 0.35735766677141767, 0.6536930082040104, 0.11665676694333466, 0.8295695421104673, 0.9603584417164993, 0.22846561010356228, 0.11122459097304806, 0.7219125669285694, 0.3397393515396981, 0.9989391579042666, 0.3964617447061734, 0.3459187889891081, 0.2605859052256819, 0.6704379297644427, 0.2618780676816477, 0.9995264695734178, 0.9994313216049829, 0.9998657684082962, 0.08217522652556135, 0.22174790121546273, 0.9998367657307902, 0.48243556666666665, 0.6749928666666667, 0.7534101666666667, 0.9993491310931791, 0.8082251426935473, 0.03125052654101002, 0.3896174228267807, 0.1751444279749974, 0.6094110266645756, 0.2189616, 0.4956629, 0.4427672955974843, 0.5939149876539884, 0.11451253333333333, 0.213463, 0.9994284, 0.8639098333333334, 0.3412042192534343, 0.9998360132202068, 0.854293476730388, 0.13828584352860615, 0.9995872961968422, 0.3609833948869424, 0.6221912741338868, 0.3467182957534671, 0.27031022745965294, 0.20722168775671165, 0.2980177, 0.34566556666666665, 0.2921269, 0.6470798, 0.1342484, 0.9572122489056103, 0.20666756644531423, 0.08761760995981539, 0.9993560987765877, 0.04506665988669981, 0.4529754500971086, 0.07549253235335138, 0.9993502642193286, 0.021119269182270407, 0.8491894062804501, 0, 0.8596803605401596, 0.4259673665393613, 0.9996220600944489, 0.9997523231673165, 0.24907138464014378, 0.25796963333333334, 0.993229744487841, 0.32099316666666666, 0.10378407848597489, 0.9879745554429185, 0.1708712, 0.16072816666666667, 0.7927444517095723, 0.9995199712934251, 0.5203229076594813, 0, 0.5311067257176633, 0.7899783904834498, 0.5382817858362621, 0.07378867841523423, 0.5016940245117377, 0.8381392192284866, 0.3847265164236689, 0.06328187929865801, 0.9693961666666666, 0.19661089053460704, 0.9679645701002654, 0.10329099339330906, 0.41094696710100526, 0.3599147, 0.674088, 0.1780235399867971, 0.3822960340114593, 0.9998519219252846, 0.29145205375890215, 0.08749613333333334, 0.9999408244515897, 0.9996806333333333, 0.9996163, 0.32960236666666665, 0.9995266955151628, 0.12209533333333333, 0.3320133, 0.9996931995905998, 0.2086890951310837, 0.5444302128438566, 0.18218791426384556, 0.2803874344064275, 0.9999248134358523, 0.540619248625237, 0.6074929834338382, 0.9999919236599075, 0.06069792892228007, 0.9998848119320852, 0.3929936666666667, 0.07137252860751858, 0.7438880942955547, 0.17413906666666668, 0.7545552899072611, 0.41931609964758537, 0.07951805958597664, 0.9974099415294718, 0.22600209464947488, 0.07303920937906688, 0.8833692090243448, 0.5978387682693821, 0.41170940285234786, 0.9997798366877177, 0.7474852067049566, 0.29079713294241144, 0.8907293345190257, 0.07232616281034795, 0.33098684144323726, 0.3074105366081812, 0.8708981285228101, 0.999560474940893, 0.3733347040077345, 0.49118292172294925, 0.219876506387806, 0.15862219581801115, 0.26415058896071114, 0.5151022217688911, 0.3277378424781571, 0.7401609629830962, 0.9997472603151891], 'oldestBlock': '0xd10b19'}}), - (('0x400', '0xd10b17', []), {'jsonrpc': '2.0', 'id': 0, 'result': {'baseFeePerGas': ['0x16d60882d2', '0x192e89b406', '0x186fb21aec', '0x1665b16191', '0x19323fb45b', '0x173d931909', '0x17ec82d968', '0x16093c71e9', '0x182e6359e6', '0x19a862d278', '0x18bf901805', '0x16278f4b23', '0x169d99824d', '0x1408d8e2dd', '0x16893d02ad', '0x195a40b56c', '0x1c85259af5', '0x1a1d340bcc', '0x171b79b7ac', '0x19c57a1fb4', '0x1ac914351b', '0x18bcd15c3a', '0x17624870c5', '0x178772c271', '0x15d398791a', '0x14b3d0ce11', '0x151a669dcd', '0x1628961764', '0x13d139bf72', '0x1636832665', '0x163c0aad0e', '0x14e196cdc8', '0x12e47baa65', '0x14ade1a116', '0x1371641553', '0x15df36b29f', '0x16f7d62b7a', '0x19acdb723a', '0x170c44ac5d', '0x1959d2c571', '0x16f1c99762', '0x15ad28338a', '0x1413eb536f', '0x169528e4fe', '0x160144e003', '0x148c16826c', '0x13e9ab275d', '0x1406b267f3', '0x11cbdb9126', '0x12b64535f1', '0x14379cfba7', '0x122dd5d225', '0x147327eea2', '0x134b739dc4', '0x159bdc47cb', '0x1530e49cce', '0x17d694e815', '0x1621f45ac1', '0x14eb50aeb9', '0x12baf63563', '0x11a709535e', '0x13dbb746da', '0x1241a836f5', '0x148987898d', '0x171a6e479f', '0x184784a461', '0x15a59afbba', '0x1466e6e941', '0x16f2fa5e69', '0x14dff27c6e', '0x175cae6fed', '0x15d4364b47', '0x13c609a12b', '0x120087720d', '0x13de9d82f8', '0x125b45f6e8', '0x104a755e96', '0x114b214e9f', '0x11ab0a1e65', '0xfa0a38b66', '0x1162182926', '0x12ee45811c', '0x118d46b781', '0x104f41277f', '0x1225886e06', '0x1469efafee', '0x16f729ef84', '0x1564def485', '0x142c7eb8ec', '0x14f4c49745', '0x12fbd957b1', '0x155ad875f6', '0x1806039bab', '0x1ae5797ef6', '0x18735e7e24', '0x19d2d49ce3', '0x1852af47c2', '0x186fa76791', '0x19498ba42e', '0x1763ff6c73', '0x16a7ad0fb0', '0x152f1009c5', '0x16688cd6c0', '0x15e479ca2c', '0x14a31daaed', '0x17374b8c27', '0x1a1e16b6a0', '0x1b16dd1fc7', '0x1861c916f1', '0x17e32e6147', '0x15aec6fac9', '0x154350ead3', '0x130cba6cc9', '0x156dbcaca7', '0x1492da01be', '0x1725063f13', '0x1a0810f2a1', '0x193935c5fa', '0x1c35e70dd0', '0x1cb2189f72', '0x193c74a7d5', '0x1ad5e754b3', '0x1a6e65ec89', '0x1783d9429e', '0x16d985994d', '0x155204dedd', '0x156bca8f5c', '0x157c629070', '0x133e51a829', '0x13fbc53e41', '0x167a78785e', '0x19492b5b94', '0x162005f022', '0x18e3533373', '0x17148c0729', '0x15762fb78a', '0x14e07edf1e', '0x1336ebf08f', '0x129183148d', '0x120c214ac6', '0x1440702124', '0x16c83b9ec5', '0x13ef342aed', '0x166c79384b', '0x158d1e9474', '0x147568320b', '0x17034cf3e0', '0x19e383f5be', '0x17ef4e5635', '0x181428f959', '0x18d2723319', '0x163c381948', '0x168529a00c', '0x165035cb9d', '0x165e4e81a8', '0x14ae303e5c', '0x1583634250', '0x133e817220', '0x12ff1ea88d', '0x129233b059', '0x10f5d7c805', '0x131486bea7', '0x135f883094', '0x11a08b774e', '0x12aad3799a', '0x12cb813edb', '0x10c42a08f3', '0x12da13bb58', '0x131df129a6', '0x1336c4d02f', '0x159d81c4ee', '0x141088060a', '0x1269414ea4', '0x14352cfe2e', '0x13e7d274b9', '0x137bcee59a', '0x1511b4d7f0', '0x1508c354bd', '0x1267aaea26', '0x1490016553', '0x13798e5cf2', '0x13a73ab136', '0x13384ea744', '0x10d144d25c', '0x12c5309280', '0x150458e067', '0x143c561982', '0x15e307777b', '0x179ddac0a3', '0x14aa1f688f', '0x145e9a3f96', '0x16286d438b', '0x146099e3f4', '0x1479db1f7d', '0x154afd68f7', '0x152d100b92', '0x17d22487df', '0x17c0dd8382', '0x192f1c3afa', '0x1694ea9484', '0x196692bcb6', '0x18d1d3c375', '0x162669eaca', '0x141a8846f0', '0x1386b0fbd4', '0x1286b5c767', '0x14d741f844', '0x1771def138', '0x16f1484c79', '0x17d680eb28', '0x1a1cd2645f', '0x17c1f83cff', '0x190df2265f', '0x171b70b967', '0x154d13a92f', '0x15a19ba45c', '0x15385c2dfd', '0x14c389ef8d', '0x175bbdd153', '0x18e535cd7a', '0x164a23ca09', '0x14cf5dbcc9', '0x158e8727fc', '0x14bf138bea', '0x1349acae7b', '0x15b26fb4b9', '0x17c8bfaa59', '0x14f1cfc96f', '0x1364584377', '0x14f522840c', '0x135dccc427', '0x122d91da44', '0x130447f127', '0x11b321ad1f', '0x12bdda66e5', '0x146d6de642', '0x1480b5ce06', '0x127ae87e84', '0x10c9022017', '0x12e178682d', '0x116c8c6eb8', '0x10e4501362', '0xff3727646', '0x11b3645ca7', '0xf7cf7d113', '0x116c897add', '0x139987b622', '0x160ca4ed26', '0x14db572ca9', '0x1775d6164b', '0x14e0fb9e18', '0x177ceb4d50', '0x1a6bbe821e', '0x1db90bf8b9', '0x1b5a07d788', '0x1b5c463a4d', '0x17f97aa599', '0x17885d0916', '0x14f12dd1d8', '0x173265eda5', '0x187c8d5929', '0x162782cbf4', '0x1573a073be', '0x13b6e07d4a', '0x162d983c06', '0x167cdd1b49', '0x16a807e4a9', '0x146c0a27d9', '0x120db43497', '0x144ecad4b7', '0x12ad8998f4', '0x127a34ce2e', '0x138c85c691', '0x1186c2953f', '0x10f88b8226', '0x12d42738fc', '0x10a80ba014', '0x12bcbb0bf2', '0x12cf1e13ef', '0x11cdcab73d', '0x126cd24369', '0x12a9696a98', '0x13a333347e', '0x126373a8ba', '0x12a913ac87', '0x14fd7030d2', '0x179bc874b4', '0x1556054c72', '0x142712be6d', '0x16ab6f789a', '0x19805ddf55', '0x1cafd344cd', '0x1a646d9135', '0x1996567106', '0x1c7fd66833', '0x194062546e', '0x185a71c6a0', '0x162dd04736', '0x18f3152f50', '0x178c80da88', '0x185244a8bd', '0x15aa2635ab', '0x185f5a3e6a', '0x1abde03f49', '0x1797ddd680', '0x18197e1ef5', '0x1997e2d0b4', '0x16e8ba6259', '0x148a363371', '0x15186b60bf', '0x1554ccad39', '0x17ff653f69', '0x187cb2e289', '0x1b48c4d927', '0x1933669db9', '0x176d3aed95', '0x18f35d5a02', '0x17eacf2c79', '0x15dbb634ed', '0x13af400433', '0x15f155e77b', '0x168251b8e8', '0x1621212c96', '0x1696146a40', '0x15e74b9ce5', '0x1419e5a8a9', '0x12b7ab5016', '0x1133dad8b6', '0x1359c77f42', '0x15c47df05e', '0x1714c0209b', '0x14acfadec4', '0x1584d56d80', '0x154cfd58b8', '0x13089f6281', '0x1511b9f537', '0x139ac2f09f', '0x13c0fa50b2', '0x11a3310b6f', '0x10c5e535f0', '0x12de44ee6d', '0x14fc29380c', '0x1472f8c499', '0x121c3ba270', '0x114f558d2f', '0x1378fb8b4d', '0x15e807fdc5', '0x13f8d9b1a8', '0x129514c355', '0x11c80ac0e0', '0x1400f54832', '0x11ca4a7927', '0x1403265d21', '0x168328cc88', '0x15f8136eec', '0x13f05f7a66', '0x166df10a0a', '0x146c2d29c8', '0x126fdf7f71', '0x137d98d5a9', '0x12134c3702', '0x11c7ca4cca', '0x1400a76bad', '0x16807210ce', '0x183106caaf', '0x1b3674c354', '0x1c22558611', '0x1931bed1b7', '0x17ea0697c1', '0x17ac4a5c30', '0x17149169c2', '0x1716cf27b4', '0x14ab5cdaf9', '0x17308046c1', '0x1a15a16190', '0x1d5848a5b0', '0x1dd8f3d1eb', '0x1b502352ff', '0x1a60f9f579', '0x17a55c9b3f', '0x1979e583a3', '0x1ac6607103', '0x1853e94287', '0x1704d5067c', '0x19aa0c0711', '0x1c9a72b4e5', '0x1da650e908', '0x1cc6630abd', '0x205345d24d', '0x1fe7775da8', '0x2018122470', '0x1cbce1052d', '0x1d832f0a0d', '0x1e213c524a', '0x1dbfa761b3', '0x1e01964f34', '0x1a4163854e', '0x1a234170c4', '0x19a0396d6c', '0x1c02c8a01e', '0x1b9d36a707', '0x1adc5465e5', '0x1b5b9ca323', '0x1ec68bc636', '0x1ffe5c319d', '0x1caa564362', '0x1a73dc476a', '0x186670e443', '0x1823e37e0a', '0x15d2c7e96d', '0x188c6de2a1', '0x17c4020599', '0x174dee7dd7', '0x14d6eb8c31', '0x162003852e', '0x1587046e11', '0x1837e265ad', '0x199af41873', '0x1ccdcb0a40', '0x1a470cabc5', '0x192c82a53f', '0x17ed26707e', '0x18a9baf20f', '0x1b6b9544e7', '0x184dbd72e9', '0x1606415e01', '0x14c98eac3e', '0x1324eec748', '0x14d53420db', '0x1503a3a324', '0x1443893b14', '0x11fbf427e7', '0x1198b86112', '0x109dff42b5', '0x12ad2fa90c', '0x11e1f5a607', '0x141da0e482', '0x149aca1594', '0x13683f1d3b', '0x15d4f5bb16', '0x185e5b6555', '0x16f11304eb', '0x17ef5dce79', '0x151be31fd8', '0x14fe5b600e', '0x12ad634ef0', '0x13926add1e', '0x1603dd34b1', '0x14bb42a81a', '0x14bebf5abc', '0x138d079e9c', '0x12793ca48e', '0x1293c96b0e', '0x11e5efcd9f', '0x14220f51c1', '0x156120be48', '0x134247f9d1', '0x130b782fac', '0x144a3946e2', '0x1435dd819b', '0x1293d7c500', '0x11a8e99c02', '0x1123fc4226', '0xf80e67d67', '0xea2d1705b', '0x1076f5d0ae', '0x1285be86b7', '0x14d65f8fb1', '0x14745712c0', '0x1630b91070', '0x13ee4f3f06', '0x166c0ee417', '0x17ff52be7f', '0x159180cc5d', '0x170167e526', '0x14b2311734', '0x1301608038', '0x1470e4a6a9', '0x152fb3e046', '0x17cbfbc2a2', '0x15ad93886f', '0x1862cbe05b', '0x17964ed4a7', '0x1582a8271e', '0x1832cce09b', '0x15b702eb33', '0x16491a0884', '0x190b4fd611', '0x191b512cde', '0x17a1cc3a2f', '0x17b3a77153', '0x1aa9d9a836', '0x1b4eaea918', '0x199f20a375', '0x190c015f93', '0x1c2d18ab3c', '0x1f7f2dfe1b', '0x1e0fc72400', '0x1fbf2677dd', '0x1bd861eb10', '0x1c0b270e8e', '0x18cd5adb77', '0x15e94122a5', '0x18a6157447', '0x1bba7cf5f8', '0x188c2c2d30', '0x1905994b6f', '0x1bc2cda9fc', '0x1df54325ad', '0x1aa731d5af', '0x199d84cf72', '0x173dae2963', '0x19e33641ee', '0x1cd4cf4967', '0x1c956b0cb8', '0x1bc3b67a64', '0x1f3b2606e1', '0x1ca5573132', '0x19adb556b4', '0x18db2dcaae', '0x179cd79fe8', '0x1556596034', '0x18008fae5e', '0x1613a5e8a8', '0x16b223e4d0', '0x14773fee04', '0x1364d4c24c', '0x15d0d408cb', '0x152947cc85', '0x135e1da4b2', '0x151926b304', '0x17bc285ec8', '0x19c3977c0a', '0x16a5e8c904', '0x149c9f31a6', '0x172fdbc219', '0x1a15b93967', '0x1835f8c9bd', '0x186189c2d5', '0x1a8e881b83', '0x1c4a52cb55', '0x1d90cd3591', '0x1b64de6127', '0x198f2589d2', '0x175a63bdbf', '0x15ee79b271', '0x155b6d392a', '0x18061f584d', '0x17fc984804', '0x17ec8cf3fc', '0x1560ef50b0', '0x13ef532b9e', '0x12228b214b', '0x14661090d4', '0x1529e1b0e3', '0x17cef64018', '0x1617ca39ae', '0x13c51bb0dc', '0x147ec9fc7d', '0x1435ccb1c7', '0x1435284a72', '0x1221810c7d', '0x12bb00476d', '0x12a084cf99', '0x1112530a73', '0x110e5e160c', '0xf0168cc5b', '0x10e0eba1be', '0x12c4612ed8', '0x11b5aeeaba', '0x119e94662f', '0x11898af57e', '0x13ba4dfdb9', '0x1631183d3d', '0x1539bd009f', '0x13b5a1714c', '0x14604bcb5c', '0x13d6b18149', '0x11a51f9f5b', '0x13d98bbcf9', '0x1654378a2e', '0x184c56064b', '0x1542cb4582', '0x131a42c0a7', '0x157991739f', '0x161aa2625a', '0x13f307f3ad', '0x128a1061f0', '0x1441725609', '0x13ad67016f', '0x11a4b7043c', '0x13d8dce7ae', '0x14923b6988', '0x14f58e1f22', '0x177db2b038', '0x153c1db19c', '0x141b09ed26', '0x1268c559fd', '0x134a364ee6', '0x13315786f9', '0x1597611a62', '0x168ce539e4', '0x1704671bd5', '0x15df4e5541', '0x1599d0d81a', '0x184cd4985f', '0x1b5665967e', '0x18dccd5a71', '0x15c133af23', '0x15593acbca', '0x15601653b1', '0x149be95f20', '0x16498ed4e1', '0x143810350a', '0x16858f6366', '0x1955ea834a', '0x19847db4be', '0x1cb0788160', '0x197c79ef66', '0x16e4d09603', '0x1969c952bb', '0x167000c3ef', '0x1652d2e53b', '0x1513e4969f', '0x14703c9544', '0x1652612b71', '0x13c628cdd1', '0x12265e91cc', '0x13bbd75fa9', '0x15fe9c09b4', '0x16e97e4ad8', '0x14b230250b', '0x1747f364d1', '0x17dc4c4dc0', '0x154193e0c5', '0x17e920a01a', '0x18fd2505a6', '0x1806209e5b', '0x16c5492046', '0x19318d8958', '0x1c56e7dab1', '0x1b6be4231e', '0x1ace1c3481', '0x17cca633b5', '0x16e8109cb1', '0x1703d0c502', '0x14f499e9e7', '0x17762fd7a8', '0x1576fcac5c', '0x1391bd526f', '0x147b6fd190', '0x123aaa7bbe', '0x14813e7cdd', '0x155ccb7ee5', '0x1807ec4359', '0x175fb9ef34', '0x151061f0d8', '0x1589eb8b6c', '0x149a7fedbe', '0x143ad91899', '0x16171e1752', '0x18c82e668d', '0x17f70c08ca', '0x163e1fe987', '0x1609b13173', '0x16e74041c4', '0x19674a101e', '0x17467f2976', '0x153bdc40ae', '0x1424a8bc8a', '0x127f560928', '0x149a695fe6', '0x13e75825a5', '0x133ee60769', '0x13f135947a', '0x166f124018', '0x16c68af8ad', '0x13edb99998', '0x121f57c283', '0x120f3c36e3', '0x1093a81a87', '0x12a6079c08', '0x120dae53d8', '0x109951472a', '0x117e342961', '0x1195ad3cd0', '0x104eba9716', '0xee5e7e1a0', '0x10c2676582', '0x116b3157f9', '0xf69b5708d', '0x1156a8b10c', '0x1381085219', '0x15f0782a44', '0x16b7a48e34', '0x195bdab72d', '0x16b7cd204f', '0x15cd13e8a8', '0x165e285940', '0x13e9795b0e', '0x142b50be4a', '0x1203710e30', '0x14429f9d0b', '0x124ffc01a8', '0x11dbdfeebd', '0x11185dd9b5', '0xf94559598', '0x10cc45a78c', '0xfcb538473', '0x11c49e5d46', '0x120f5fc02b', '0x1006ba7e5d', '0xf5c6f62ed', '0x11478d72bd', '0x1370519fda', '0x1395d1f1ec', '0x1532cdbce6', '0x13ca02ea1d', '0x14c7e104a4', '0x1335db0097', '0x159c1a2b54', '0x184f03a39c', '0x15a5618bb5', '0x1435e9ede2', '0x12b727e97c', '0x12f4e2e842', '0x1099d886b1', '0x123496949a', '0x110409bc56', '0x13246a2ad8', '0x1178099e58', '0xfdf314916', '0x103af0a632', '0xec9572d10', '0x10a25ddf7e', '0xfeb373320', '0x10ca2ccce4', '0x12cc6e76fc', '0x1161d0ab39', '0x10ba1853f3', '0xedb7e10c0', '0x10b6745302', '0x12c91eb8e7', '0x11301e853a', '0x1076febc6a', '0x1234226dd6', '0x1386321063', '0x119fc8fe09', '0x10fc963280', '0x131b7885e3', '0x1405758e9a', '0x1196a96e4f', '0x109a38bbbc', '0xf1c7eb95e', '0xee4a30d11', '0x10c0eaa686', '0x12d8ed0430', '0x13b115ddf3', '0x13fef4823e', '0x122c8f878c', '0x10ec8d109a', '0x130988cc60', '0x156a8f1ab4', '0x154dee05b6', '0x14cf361d44', '0x12e37e17ac', '0x1315ae079a', '0x113b4a571c', '0x1362575035', '0x13274e6e0f', '0x137d1f54e9', '0x11891fac38', '0x1371ae2ac7', '0x1533b05725', '0x12abd0e2d5', '0x122419b563', '0xff9675d76', '0x113c5a71cf', '0x10a01ceddd', '0x103ed18e7d', '0x122f325500', '0x1474a8578b', '0x14202dfa1d', '0x15c33c44da', '0x13ba90707a', '0x116d70ece1', '0x123df773dc', '0x106b886319', '0xff2d97897', '0xeff63d505', '0xf97b14394', '0x11287b0437', '0xf036ba3b1', '0x10e3d62699', '0x12b897e259', '0x150ee09a51', '0x134308a4c7', '0x15ab111838', '0x14af4dbb50', '0x12f00f229a', '0x11e74a36ee', '0x12ceb0db8e', '0x115c8b9793', '0x1074beef33', '0xf9d68e359', '0xebc29151b', '0x1093a1c2b4', '0x12a5e1f796', '0x14fa9b8e0f', '0x14bbe7e41e', '0x131810d6d9', '0x143407b41a', '0x13a06b70b1', '0x1260caf0d3', '0x14ac3f92a3', '0x149863603a', '0x172a9e3bf0', '0x1844c02407', '0x16e751de57', '0x169f781d80', '0x160a3b8e6f', '0x189cccda9f', '0x17c77c68c8', '0x152b9eb848', '0x15313751a6', '0x12bfa1ff25', '0x1419b34084', '0x132210de59', '0x1585e06b13', '0x18360df942', '0x15482d3547', '0x14016eeb60', '0x131e9a2ac2', '0x12140e7bce', '0x11d9fd0207', '0x10f22ba44d', '0x131022ac12', '0x12f773fb6b', '0x13cdd7e998', '0x12803bf0db', '0x1072c4ce41', '0x127e9b5a20', '0x14cce6c66b', '0x12d6b2018c', '0x14d0e9f790', '0x1426e769a5', '0x12b9db06f0', '0x118eb59880', '0x12c01d0a71', '0x10e8dcc062', '0x12fd60fb92', '0x1557161ac2', '0x1801881e05', '0x1b0108d845', '0x1900c955f0', '0x169528a9c0', '0x1534d98691', '0x155e75bb64', '0x1809d90346', '0x1b0a6c55f3', '0x189a9af4ab', '0x1877d4e3f8', '0x157c22bf99', '0x182af091be', '0x1b2fa4a6aa', '0x1bf933f26e', '0x18be5a7ae9', '0x16a0b97e64', '0x1596e19fa8', '0x184967a88b', '0x1989337397', '0x177622be59', '0x18698a48c4', '0x158fc6377b', '0x17f671b574', '0x18c26c519a', '0x19d89c30cf', '0x19c24c0094', '0x16cf940943', '0x154d3dc224', '0x17eec56cea', '0x1a3e9ca750', '0x1b6ef42248', '0x18b2205637', '0x19e55b622a', '0x18cf7a24b5', '0x1be88ab481', '0x1f64c3d114', '0x1bfe53f0fd', '0x1e65f3ae9a', '0x21d3407be0', '0x1e13830584', '0x1ba225e5d6', '0x1b2d25aaca', '0x1c6b0aee66', '0x1f700f3cd9', '0x1fe5ba4f42', '0x23e11523f8', '0x244f511fff', '0x245cbee295', '0x2065005abe', '0x20b98de17f', '0x1cdf187daa', '0x1fbe482fc7', '0x1dee033931', '0x1d6d1d0ec0', '0x1baa4f4070', '0x1ab6587ff3', '0x193d2c0db1', '0x17e32d9aa0', '0x1a6d7e4a82', '0x1a80b10e33', '0x1db559c0f9', '0x1c031d9adb', '0x1c98e72922', '0x1ea39fd971', '0x1c174b8660', '0x195803b891', '0x19fa2d48a0', '0x192ddd6230', '0x160821b5ea', '0x18c89e1db6', '0x1be1566c5f', '0x1e340262a8', '0x1d7c0bc226', '0x212b510559', '0x2409933ac2', '0x20f6ebea2d', '0x201d0a6817', '0x20665a99cb', '0x1f843f757a', '0x1d4c371f54', '0x20f4c7e4b4', '0x243f7c2fe3', '0x2232eae8f9', '0x226861c143', '0x255848d941', '0x2222898bbf', '0x1f40cc2153', '0x23282dcb23', '0x21b3511f12', '0x1faba320d2', '0x1faa3be9f8', '0x1c2ab8d475', '0x1faf9060fd', '0x202778a292', '0x1dec8dd97a', '0x1ca2459990', '0x1980750d30', '0x1a0fc068a3', '0x1a067e66af', '0x1764ca2063', '0x16c3e7ac37', '0x18b2e7b6b4', '0x17ed3b30c6', '0x18585d6370', '0x1b633c9d3f', '0x1ecf87f39e', '0x1c8806ef71', '0x1ac9100ca6', '0x1ba7902ec6', '0x192aaeefd7', '0x18b5abce5b', '0x17d4c37649', '0x16b258bd72', '0x16cce04b6c', '0x19a64cfae4', '0x1cda5267a1', '0x1d75721510', '0x1b3dc3c7d5', '0x1e37dbffd7', '0x1c5e5b4dbe', '0x198aef2ed6', '0x1cbbdb2773', '0x1cc512f63b', '0x1dba60f1f1', '0x1a7a1a0e41', '0x1dc79d7938', '0x208bbc2bdd', '0x1cf8d69f21', '0x209746cb49', '0x24a973d3fa', '0x2060a29641', '0x1da00d81a2', '0x1afc9c8c2e', '0x1e59b2fd11', '0x1c235ce1f5', '0x1c05c035a9', '0x1acdcc4a1b', '0x18eef9429b', '0x1bda31b0bf', '0x19beb63d42', '0x1b1a2e86ba', '0x186f195d82', '0x166fa0d373', '0x15e2b87f83', '0x14a492045f', '0x17387692df', '0x18f0612e15', '0x198298e738', '0x1c663f3cb6', '0x1a921c1821', '0x18a57ee8dc', '0x1bb978faa4', '0x1a730fc02b', '0x1af04ca59c', '0x17bdf61b5b', '0x15e1c5b0c2', '0x189c28829a', '0x16128926d2', '0x14588a77fc', '0x16e38bd7e2', '0x16ed32ea5f', '0x163070ac9c', '0x1730bcf9d1', '0x14ddd7a6d9', '0x17012fbc5d', '0x161526a5b8', '0x160342968a', '0x164c4816bf', '0x141fbefebe', '0x12ef2ac850', '0x154cca60e5', '0x1473026e40', '0x156269e3d7'], 'gasUsedRatio': [0.9108800834880779, 0.3815847, 0.16622236666666668, 0.9998913727411849, 0.1895163165324393, 0.6176127981283326, 0.18436663333333334, 0.8893841169235092, 0.7442482946317417, 0.35821589882670984, 0.08077718411741035, 0.5832504, 0.043490068051452245, 0.9994425328130306, 0.999902661626739, 0.9997611664498844, 0.16254967908276594, 0.03944386666666667, 0.9611643102823241, 0.6573946448397034, 0.19417816141908653, 0.28111807222471097, 0.524833646472008, 0.2105626801104566, 0.2939865557433668, 0.5774254864292557, 0.7000484045809376, 0.0773633500712084, 0.9835477687924516, 0.5038894832208931, 0.2565354270164013, 0.11904590768983893, 0.878290000370724, 0.26086323654464144, 0.999717799058875, 0.7004730821191916, 0.9714556936634551, 0.09068701173391634, 0.899680180421858, 0.12030654163881085, 0.27892940004412914, 0.20500903691364217, 0.9990276533254641, 0.39767401229081684, 0.2350163020755919, 0.37648924470745343, 0.5227777297677489, 0.0546144203447523, 0.7058121101089188, 0.8217712839577163, 0.09674113543750945, 0.9996487563432062, 0.27406260920296227, 0.9797365289079373, 0.4226535423682452, 0.9996881202742482, 0.21380823370143703, 0.28069760833372337, 0.0814599913631322, 0.26982062583364896, 0.9998228872609449, 0.17735502936048414, 0.9997134398034718, 0.9997794504619545, 0.7036289638437622, 0.06630310218872973, 0.2699559, 0.9993974666666666, 0.13844576666666666, 0.9766021186355143, 0.2375086326849098, 0.12336828838962458, 0.14163953578178465, 0.9149577333333333, 0.19540296666666668, 0.04987523333333333, 0.7461807333333333, 0.5866560666666667, 0.03800918263350829, 0.9493837603925369, 0.8561067157777823, 0.20864589642720321, 0.21689100616042736, 0.9505386541789772, 0.999751756878962, 0.9999888999578198, 0.22629243447351438, 0.27185811823151174, 0.6551152038298754, 0.12352970703400162, 0.9996011322615133, 0.9998630323698162, 0.9783471961273327, 0.13627461098191435, 0.7245986139505559, 0.2675657581029813, 0.5186097333333334, 0.639324533740531, 0.1999803416255425, 0.3742005352164896, 0.24025212314570063, 0.7312254333333333, 0.4079067333333333, 0.2706405528334914, 0.999840766512741, 0.9999204, 0.6488314333333334, 0.1002354, 0.41886657678776673, 0.13081786666666667, 0.42256133113985805, 0.08364507806873953, 0.9995224333333333, 0.3403966973749867, 0.9998605332031644, 0.9989290865868662, 0.37583787804248364, 0.9736983906232239, 0.5687872080840548, 0.01776264563916002, 0.7535102349456657, 0.4397339461112249, 0.05867245433291132, 0.3868232, 0.23228385852117928, 0.5188876031939414, 0.5121038644573783, 0.0825266439531954, 0.6538280271360174, 0.999396998271395, 0.9995759180015601, 0, 0.9995048479357648, 0.2094619914534262, 0.21948393333333333, 0.3910187666666667, 0.18148615456326436, 0.3654911631164809, 0.3877613147812598, 0.988564566598567, 0.9997995038345517, 0, 0.9995056146998206, 0.34436540858855264, 0.297204, 0.9994025333333333, 0.9998657666666667, 0.19810136666666667, 0.5240588768265545, 0.6234789725196231, 0.08314103425628437, 0.55125834739086, 0.463260387296264, 0.5098711378743686, 0.198152230356003, 0.661081745443966, 0.078107, 0.44853479422656223, 0.4104131872356966, 0.15305721411330495, 0.9999567822624252, 0.5614230648364212, 0.13949243365540062, 0.7360364448304337, 0.5273529864068841, 0.06825094777381804, 0.997569853924715, 0.5562485541016708, 0.5202918299438803, 0.9999121807443069, 0.21303870385938445, 0.17037971128837062, 0.89032103030552, 0.44018864723912543, 0.4152137431056055, 0.8255123, 0.49336750670362944, 0, 0.968910678585995, 0.28841256974871926, 0.5366443862007921, 0.4118131668039726, 0, 0.9644735417468492, 0.9787802108903386, 0.35130264574320846, 0.8263825462520309, 0.816132807372799, 0, 0.4428972215421277, 0.8511863282450653, 0.17856743333333333, 0.5193649401359572, 0.6595877, 0.4780390666666667, 0.9995921, 0.4886671, 0.7409163381375247, 0.08667128813252055, 0.9993373522839458, 0.408500214535662, 0.0697626386557993, 0.13044572717183325, 0.3850946770882784, 0.29516137228288125, 0.9997544537815687, 0.9997795509793449, 0.4143010738530426, 0.6561111181550465, 0.8816913517568828, 0.13927106665507719, 0.7183346742855463, 0.18911145998578344, 0.18735139749562624, 0.5620062247627844, 0.42397589714800127, 0.4139811924296054, 0.9998196324795937, 0.763201113264833, 0.0813285, 0.23447993632448752, 0.6435319339631383, 0.349632642599298, 0.2187750343086715, 0.9996374786424371, 0.8847823735500584, 0.022439133333333333, 0.2034831346142842, 0.822934901405908, 0.19630961289262835, 0.25454424181591806, 0.6845562, 0.22298273333333332, 0.7354569333333333, 0.859807702221219, 0.5147479804314484, 0.1053872423369015, 0.1331360814337067, 0.9993818952463089, 0.19138382427984868, 0.3778304678992449, 0.27719865335488275, 0.9387909300820928, 0, 0.9999475333333333, 0.9994851972951587, 0.9999384999426, 0.28365068296588697, 0.9993094179599424, 0.05985919957419673, 0.9998603270837775, 0.9994745186944587, 0.9999021662948986, 0.1808976673166038, 0.5012817394002331, 0.004990697038290539, 0.42627874224282075, 0.05966505305527511, 0.9306658487172458, 0.7223858863026157, 0.11902448689130779, 0.37313139053893984, 0.17605238063143172, 0.9998875329097073, 0.5558469115324782, 0.5299934909694075, 0.10552543333333333, 0.03608940797355284, 0.9994594114016835, 0.17896019429124654, 0.45705880174505664, 0.7319698333333333, 0.08616433947749978, 0.3732135149992807, 0.9378900249734099, 0.03851441865964228, 0.9996994058987313, 0.5153327934429147, 0.2862352196918182, 0.6395671090361107, 0.5513824351551013, 0.7091410329628549, 0.24558543509558245, 0.5591615499433981, 0.9993525641316525, 0.9990061934740038, 0.11496808861857923, 0.2781425620073005, 0.9995952921484179, 0.9996566017351626, 0.9996401483483938, 0.18005923333333335, 0.37798857250772044, 0.9552436248940499, 0.044149152853637574, 0.35771905865488635, 0.14286739190029488, 0.9996776704904679, 0.2754346185641365, 0.6312198551229229, 0.06306479478903006, 0.9999527998222126, 0.8888374310390665, 0.029054036553971804, 0.5858469997428143, 0.7479252799790772, 0.08048236235713287, 0.08632943644094718, 0.6081795333333333, 0.5447224881763709, 0.9999970999972934, 0.5815856577518193, 0.9569179, 0.1945536149383206, 0.21840493717794138, 0.7602097666666666, 0.3343258, 0.15564987456415477, 0.10222276548200664, 0.9588662931726999, 0.6032401461562777, 0.43253435828281056, 0.5825754329768557, 0.3790854436607902, 0.1708585967783015, 0.22465215932247384, 0.17625951952714947, 0.9994936778194481, 0.9995883972879065, 0.7413703005491848, 0.0831467, 0.66312452556745, 0.45945124413620264, 0.07427607454674383, 0.9277809666666667, 0.221925143235703, 0.5304587575252732, 0.07145454443536742, 0.3039540657555561, 0.9996618024295572, 0.9487466175573738, 0.3978517126791075, 0.042508474802923225, 0.32321961457392956, 0.9997577574774577, 0.9999404590768984, 0.1468059253776145, 0.221666588675502, 0.3275925127183361, 0.9999216849591576, 0.057374062046107066, 0.9996245697902417, 0.9997000127210433, 0.40346721256398116, 0.13037273020082574, 0.9996254018780922, 0.14209656806417498, 0.11110464178729333, 0.728585785824358, 0.20955626666666666, 0.43472864585601173, 0.999903311257128, 0.999773336631876, 0.8003802092152641, 0.9995486917733644, 0.6354364004031344, 0.08203066870154839, 0.29675498444377474, 0.4596634927998753, 0.39985795551800063, 0.501517240457071, 0.08080427742046885, 0.9876916575177154, 0.9993710982181117, 0.9999698, 0.5685110666666666, 0.1603489140479011, 0.36318257230373413, 0.08559626666666667, 0.8096030106732558, 0.7039162581302876, 0.13441428548358403, 0.2847888020233116, 0.9596871844932837, 0.9580795795695402, 0.6463270099838317, 0.3819921744768415, 0.9935313938926197, 0.44788981502183856, 0.5238040019034544, 0.08170181485668315, 0.6078200483051451, 0.5836786443977927, 0.4493951282188975, 0.5346304141272985, 0, 0.4820673053903804, 0.4216701268921184, 0.8722795666666666, 0.4433422, 0.3908598079357826, 0.5740407691047178, 0.9997044882913726, 0.6583105, 0.08388976666666667, 0.1912235, 0.1896454112559086, 0.45738223333333333, 0.1161045761185798, 0.999499332866044, 0.37243306666666665, 0.42236938962436515, 0.07692340769262744, 0.7467468201251116, 0.3919519113752983, 0.9999926666666666, 0.7290811333333334, 0.9996768155895768, 0.14916637752749828, 0.33199816666666665, 0.3017784666666667, 0.6231513333333333, 0.9471858936918568, 0.04536157567080396, 0.12487362230756416, 0.27532197047500434, 0.18383346265986641, 0.8528070162865461, 0.5348275333333333, 0.3571628, 0.05001193665614473, 0.4137841008170683, 0.2773685319033705, 0.9957117249989229, 0.3299780838906119, 0.9994966652405515, 0.5972193666666666, 0.2675411539368193, 0.9997443997614398, 0.9647713329932454, 0.265782740358587, 0.6731918414559945, 0.027706243627137132, 0.4781414606749086, 0.05866793482258075, 0.6916008631524033, 0.9993169984179188, 0.2667766892006194, 0.5026281738582652, 0.26973657469654094, 0.2795874128741739, 0.522455972958272, 0.3537780769241144, 0.9994596333333333, 0.7476246221101572, 0.10326397816965237, 0.45553058618222664, 0.7615167724206177, 0.48432221635319367, 0.1768200266112155, 0.3024070008727044, 0.382389096158348, 0.1179704342495637, 0.2761775699001222, 0.9997755946433016, 0.9999183532950685, 0.9999249329780161, 0.42648945233361146, 0.8394605898154843, 0.09271848944577797, 0.9999685774415479, 0.7810180678627439, 0.0951246036380219, 0.7665235743045548, 0.09845587413232171, 0.17323583333333334, 0.8021481643491536, 0.645853902796976, 0.9928594666666667, 0.14385514121206025, 0.999656228935965, 0.3689763708453407, 0.1478145259226068, 0.99986293204863, 0.08946931329863865, 0.6051196196930506, 0.9951428797166597, 0.5099856198729384, 0.26505324213451614, 0.5118062195358416, 0.9998281978036438, 0.5965928283442876, 0.2530685807128864, 0.41027945119382725, 0.999744434213352, 0.971411029613335, 0.3177385194721144, 0.7242124618771403, 0.00842903564431904, 0.5284889722962278, 0.03766261576993597, 0.03374760836849843, 0.9997664712897655, 0.9997742324754167, 0.04113295597007079, 0.5772902026643845, 0.9378698003727791, 0.8165748878101938, 0.05872281087817788, 0.34425131686706856, 0.12922654692583435, 0.9555078866308773, 0.9548505626466793, 0.46564520508553203, 0.3853664758933474, 0.9994212357806742, 0.16889523338303436, 0.08565555195964385, 0.3718960629137864, 0.2998883284679378, 0.11455195538943976, 0.999574168350789, 0.17912229844091562, 0.6121740961881774, 0.10696956425806192, 0.2904901272184576, 0.9995111884134104, 0.37999787666065055, 0.16096296973502716, 0.8574223416022649, 0.9998982335717037, 0.8419490185586879, 0.016232991986154254, 0.14036176666666667, 0.9997413525692161, 0.9999209877206934, 0.21262559670023623, 0.5281164709283945, 0.8569591528088459, 0.7611103243730976, 0.6803167982892799, 0.2061976475632511, 0.23207993967805052, 0.15474897521520198, 0.2565135287032571, 0.39523598617845457, 0.9994640666666667, 0.49380329892139674, 0.48954873176097957, 0.07442378009758606, 0.2298634367405298, 0.13883827269934237, 0.9993135313883389, 0.6499919333333334, 0.9998856117001748, 0.21178033333333332, 0.07941735104329378, 0.6467511346649416, 0.4443549789049284, 0.4995034969963004, 0.08891388797881801, 0.6322821136345951, 0.47790841195231376, 0.16598062683086734, 0.49637843421747646, 0.019089354847021667, 0.9993074056710896, 0.9475520356242604, 0.274625343295456, 0.4796160573026927, 0.48134441489708124, 0.9996159905934545, 0.9996054954497213, 0.32583892191146085, 0.21429786644509133, 0.6352975850532547, 0.39448245197611675, 0.05770525070038312, 0.9998068561233422, 0.9995889978755214, 0.8527641059709303, 0, 0.09393409028287641, 0.9967484627702634, 0.6171908083918345, 0.11008029797178422, 0.21727834572918217, 0.8703132506852648, 0.3858001862713487, 0.08654288896843376, 0.9996090970161072, 0.645935186348058, 0.575441459294446, 0.9831878717057506, 0.11582240417358645, 0.2872913455097174, 0.16251050636031678, 0.6913449574730258, 0.47985486450007686, 0.9998938951755071, 0.677672703141519, 0.5828058333333334, 0.3010341068613166, 0.4503579821814169, 0.9998464164924977, 0.9999759333333333, 0.13786296666666667, 0, 0.42532343333333333, 0.5050190333333333, 0.356599052307912, 0.8257418698460641, 0.12878678478923866, 0.9555560661824566, 0.9997647364769936, 0.5287237595595127, 0.9971945189785543, 0.0534085713995237, 0.09312503333333333, 0.9401924666666667, 0.031627150579207265, 0.47968024770156453, 0.2767694, 0.3786808485152418, 0.8685941202957587, 0.04345337353989342, 0.17145248002682573, 0.8490655652208797, 0.9582631835839557, 0.6668620816454536, 0.1131235805945486, 0.9996143464586905, 0.5995627718078571, 0.06340020773276345, 0.9995240667759938, 0.6803701537520611, 0.3455453272599517, 0.29132675085158816, 0.9256214333333334, 0.9994781904529774, 0.3704244933058993, 0.41009491110650503, 0.051472692835774936, 0.3499277886614826, 0.5189292688620877, 0.14207006802121863, 0.9783845720896209, 0.15955113333333334, 0.1467708, 0.6865943333333333, 0.06000549536622512, 0.9993527698970236, 0.6673008977174889, 0.9996551993448788, 0.3906380335853933, 0.10469867772632131, 0.5901549447477211, 0.326315673332892, 0.42746103333333335, 0.8678574628124364, 0.9873912548985045, 0.3681410666666667, 0.21252226666666665, 0.4631673, 0.6570867785726094, 0.9366439742010426, 0.16491259106359193, 0.14914884507784415, 0.2945486333333333, 0.17318137828255958, 0.9553641250065167, 0.3641992137848605, 0.3677649531612459, 0.6447650833320293, 0.9997734326989449, 0.5609231787356025, 0, 0.13746991926385974, 0.486112171518389, 0.17159052888584708, 0.9999208117163124, 0.3723520660424625, 0.17772463372509478, 0.7154569666666667, 0.5209664, 0.2094879350314418, 0.15427878246948973, 0.9997481666666667, 0.6573640493275016, 0.03939286416370516, 0.9997329852033618, 0.9995865258182564, 0.9994454908015336, 0.6418495185736359, 0.9650984158424414, 0.08344531709220496, 0.33856152519648347, 0.6039798039659168, 0.06083390723517495, 0.5516658701109934, 0.07246556697739735, 0.9989171508154551, 0.11544222693565322, 0.4009299914045298, 0.3289470777852555, 0.14533840071128454, 0.8128501498520498, 0.2609957297088503, 0.9998778800497141, 0.5657390049266995, 0.049553607925913186, 0.3339706, 0.9995555333333334, 0.9998392666666667, 0.5301437520405342, 0.8294761741777625, 0.2340664510181068, 0.7004477077064841, 0.1977198157343812, 0.999605332215108, 0.9995656, 0.061863009228511644, 0.23474680808583742, 0.20408638764103954, 0.5515369812535977, 0.002942779215184136, 0.8865950786860562, 0.23861653370168578, 0.9998824, 0.15033396666666668, 0.1343098202060979, 0.5903206176325765, 0.1441830626648841, 0.9998505748393278, 0.3279612058930391, 0.7188442508407941, 0.9785812597735367, 0.19860026208060927, 0.34923410032894664, 0.05292670113694967, 0.9995008725536737, 0.9961283386453744, 0.15981236668470614, 0.3317098708888012, 0.9224341138242989, 0.7901728050724829, 0.11073116500538169, 0.3553136490107195, 0.9993659975907908, 0.6913439911812216, 0.013957799594967811, 0.2757413424546393, 0.1407466355891562, 0.4422430711444781, 0.9996852979124762, 0.9999017619444821, 0.6792024, 0.5617880193342132, 0.13555495985129587, 0.22487439973411344, 0.9994593989908781, 0.9998627657345692, 0.4791125081816896, 0.40706267640531746, 0.13078706666666667, 0.5415157333333334, 0.11160826666666666, 0.999673, 0.452413815424095, 0.5700066576628684, 0.09912896192264732, 0.9353246771168865, 0.8616210433621588, 0.022542363870030967, 0.3864261399997731, 0.02223543471799688, 0.8158890827344712, 0.35836102957554, 0.4085603, 0.9774221193662278, 0.9996231309932408, 0.435471825860718, 0.8253425348174828, 0.1261718131686709, 0.03341996817047283, 0.6869579503846751, 0.10048206907957931, 0.3851601520023463, 0.261480763558778, 0.6586735897269324, 0.9016222211371359, 0, 0.9999879999195994, 0.9336489302949327, 0.999340528299366, 0.1587987, 0.9997191257262718, 0.3184531417629307, 0.16215760365231668, 0.2815462016044497, 0.7019518333333333, 0.19248653333333332, 0.2913852333333333, 0.29553846666666667, 0.2746048, 0.9999484, 0.9998084537116173, 0.9999912666582245, 0.4533000240498719, 0.18361153333333333, 0.7323735372408843, 0.38583947297815724, 0.2455412, 0.9994529, 0.48498924133916566, 0.9993789135821576, 0.6902887306595473, 0.27502346999564947, 0.4509829917258554, 0.3969266194789876, 0.9668843454257299, 0.36457958994274303, 0.0611548147117299, 0.5041302286989988, 0.03875880344539866, 0.7884115666666667, 0.30750194231333566, 0.9996345532903262, 0.9995959050106177, 0.016055897172871297, 0.26010813194793686, 0.322837825468433, 0.28217176666666666, 0.4498119666666667, 0.29709546666666664, 0.9997175333333334, 0.4797691, 0.6766181843236587, 0.2367892951567657, 0.056216727622842855, 0.9976175136708658, 0.998706347242931, 0.12274897867759643, 0.919863634236198, 0.37238677136447484, 0.21695663704034696, 0.2503919575386319, 0.7717898382599742, 0.10730000578924666, 0.9920613815141646, 0.9950920527891445, 0.9996774888378943, 0.9995517570632162, 0.20360449348496332, 0.11278031659521803, 0.25623632534354174, 0.5306585617796628, 0.9996931033160217, 0.9995739027141557, 0.1395378474505306, 0.4779165603612169, 0.012313921246119325, 0.9994814824720348, 0.999570694900474, 0.6158448759599726, 0.038150508093106265, 0.1579737089189346, 0.3164295548033517, 0.999756361160846, 0.7057424738477095, 0.17505036666666668, 0.6621038666666667, 0.032915466666666664, 0.9454311468482306, 0.6330056574719469, 0.6755559442317569, 0.486510774820113, 0.042199186277214085, 0.2353664904312032, 0.9940400906653473, 0.8863964990292709, 0.6811932127727102, 0.10083613043767087, 0.6943843568929958, 0.33233375700602963, 0.9994521299001745, 0.9995271160262368, 0.06677243990847459, 0.8436203288290397, 0.9509408541548311, 0.05666373980302328, 0.1751151024062651, 0.43384311418083593, 0.6827735171602223, 0.9250239367214715, 0.5584827929741042, 0.9993332311337375, 0.5480058022102158, 0.5057786997063158, 0.0635312, 0.5407827256683848, 0.028999261365952655, 0.8978767666666667, 0.27147266666666664, 0.43270743881400187, 0.2606280967534024, 0.36221225040102534, 0.2793772641501352, 0.28580112782346245, 0.9253777219035454, 0.5113507161346679, 0.9838297554556068, 0.27161606522874376, 0.5835503621383807, 0.7856049, 0.1673326670160078, 0.10881566822795702, 0.5999765666666667, 0.37710876666666665, 0, 0.9996237666666666, 0.9997747666666666, 0.8332737, 0.404830216706614, 0.9998753665503421, 0.8458867979525454, 0.15892486332641154, 0.3967257045708018, 0.5356710177345503, 0.3909590666666667, 0.21838615407945858, 0.9994872661881151, 0.8995382720250197, 0.2738807779107854, 0.5244270486101252, 0.8414487347310822, 0.15618292180809074, 0.16230507801579386, 0.9996409480333255, 0.3342868378148044, 0.2590538666666667, 0.49930770730952106, 0.05811192090445951, 0.9997236, 0.5591290228241211, 0.22256860773070056, 0.32754132826485577, 0.0624639, 0.5877967501932304, 0.49444952815289295, 0.09552430197022242, 0.3925428361590186, 0.8397448396844807, 0.37494739568428775, 0.5699621495985068, 0.999888532913474, 0.9999370666666667, 0.2040879, 0.25522302528419, 0.6297934878072553, 0.14015866666666665, 0.4273518666666667, 0.3577810268273031, 0.30958653333333336, 0.5182636333333334, 0.999873209522432, 0.9995331328975907, 0.5840059268597769, 0.19890077128143974, 0.9371208811661036, 0.25516477495928547, 0.10154953497235242, 0.9997277683315515, 0.5050126043320785, 0.6332258608066056, 0.0625569, 0.9989676333333334, 0.8715401923311447, 0.06076535135019233, 0.9996404819163905, 0.9996482326649754, 0.03254577612068982, 0.15997665571938716, 0.1437570909029273, 0.9985590278576392, 0.20843846666666666, 0.4835565666666667, 0.32605872968286864, 0.2208752966373893, 0.9682585070820559, 0.1973534044439926, 0.7108845531429469, 0.10618923774248153, 0.17292549079483477, 0.40186862710078297, 0.27286011810711375, 0.9994864309024396, 0.7960176, 0.5916096333333334, 0.9530364734496569, 0.24243665960754895, 0.21031693333333334, 0.9995498, 0.31604096666666665, 0.5739841711235645, 0.025346566666666667, 0.1866126, 0.9986893333333333, 0.08755163333333334, 0.187112950870142, 0.9999522, 0.5065893333333333, 0.37135636282162865, 0.680477601779095, 0.09917666666666666, 0.9098541274445504, 0.3396821, 0.48734096666666665, 0.5518318304491002, 0.11001536934767805, 0.263514, 0.9997751195957147, 0.3402425, 0.6829254433621098], 'oldestBlock': '0xd10718'}}), - (('0x400', '0xd10716', []), {'jsonrpc': '2.0', 'id': 0, 'result': {'baseFeePerGas': ['0x16f3d613ff', '0x19d1f5e210', '0x1d0c248b6b', '0x1a07047a95', '0x1c04d70a06', '0x1bd90ebbe0', '0x18bff65e5a', '0x16d6b27b96', '0x19b0b18052', '0x18a7d6ab7b', '0x1826502d79', '0x1680e48233', '0x14c834fdb3', '0x17267bc3cf', '0x18ecd2d93d', '0x186771b36c', '0x1717c43037', '0x14c98eb22d', '0x17620a0408', '0x16d9459fbb', '0x171d28b82d', '0x17f55fe19f', '0x1af2fc1714', '0x1b296bc6d6', '0x185ad3cab0', '0x1590159f67', '0x1725321cf2', '0x14b6b30b90', '0x13b0e9d9af', '0x122418d408', '0x11dfc92dbd', '0xfeef5ead1', '0x11ec45a01c', '0x11663c7c9b', '0x138f0bdfa1', '0x160074f995', '0x16720d37e3', '0x166b2b5eb0', '0x16af0ea7a6', '0x15278b0b1a', '0x17cc078167', '0x15de6e116a', '0x156f85459d', '0x13b34b9e90', '0x1629090472', '0x173a25d6d7', '0x15d344147c', '0x140da9ba30', '0x11cd1703b4', '0x13d0ab9b94', '0x1334b4b487', '0x13da127b91', '0x1200da8991', '0x14402b7c37', '0x15b550ca1a', '0x158227ac85', '0x12d1e2b6f5', '0x132ba40121', '0x155ce93b0e', '0x142f683d18', '0x120b0ae994', '0x144c5d7daa', '0x15361d5e43', '0x16d50e8490', '0x1797a59250', '0x157d320085', '0x12d827dc94', '0x12e182b397', '0x11d3cb7661', '0x10703ac63e', '0x105e114b1c', '0x110f3911c0', '0x101b29ef06', '0xe7eb0dc7c', '0x1005f7b368', '0xed166a963', '0xda9a06428', '0xf5eb2248c', '0x114a85f9f0', '0x132879a341', '0x1548a2a279', '0x15e417718e', '0x142f8c6ed2', '0x1561559f5b', '0x12ea23bf81', '0x11946e9483', '0x13771f17b6', '0x15dfbca960', '0x147b3d5298', '0x134812d5fc', '0x15b07ce81e', '0x17c706dbb6', '0x154336a98d', '0x14f70dea2d', '0x12db116496', '0x136fb74503', '0x11390e06e4', '0x135fdaa3d2', '0x14d7a13da6', '0x12a95be87e', '0x14a193e5b1', '0x156ec6d9ae', '0x13566c8d13', '0x13238ecd21', '0x11acfe64ef', '0x13e2369c03', '0x165e7bd07d', '0x180f8d1b8c', '0x167382fed0', '0x175fe0ae46', '0x152ecebfc4', '0x17d40a9273', '0x1acd8440f0', '0x19ed4dd151', '0x1b3c4d21f3', '0x196672d386', '0x1c92ecdd9f', '0x1aa4d1705d', '0x18cbe0b5c3', '0x179fcd5ae6', '0x1a92fd2f34', '0x17409d894e', '0x198088cdc8', '0x1cb090b64e', '0x202d19c2a4', '0x1e73d02f9d', '0x1d59dee89e', '0x1a3286f11c', '0x1d4d11018a', '0x1c043c12fd', '0x1b8a171369', '0x1866c94d2c', '0x1b4d5808e2', '0x18e6529bdd', '0x1614f694b2', '0x18d77f971c', '0x1bf2693090', '0x1c1f30fece', '0x1a13e8419d', '0x180cc9e35f', '0x15b6db92bc', '0x15e13b2925', '0x1562757997', '0x15166fe37f', '0x13a7745902', '0x15454e6845', '0x1589e5ee74', '0x13d32b9555', '0x11887a7b28', '0x1299f94483', '0x11e265b8f6', '0x117aaa1708', '0x13a917b31a', '0x161dd06f46', '0x138f45d716', '0x160054c828', '0x14732e3479', '0x17017bfa87', '0x14c62e8a18', '0x1238ea6912', '0x147f7677a8', '0x170e822bd6', '0x159b1c318f', '0x184e08bdc4', '0x162dfaa09d', '0x18b93b5a87', '0x16871c6b49', '0x146f9198f2', '0x16c5f12baf', '0x13f69f4dc7', '0x1627d6099a', '0x1726e4e4f6', '0x193b1d0495', '0x17380af02e', '0x15e68a41ae', '0x18a3587945', '0x15e8e94cf7', '0x157db15739', '0x135f4bda5f', '0x12a4963c10', '0x11aa8076c5', '0x12a433dffa', '0x114e64ddba', '0xf42989888', '0x10f8bfea74', '0x1139ae4b0c', '0xf749f771c', '0x110dcb37e1', '0x132f1a3faf', '0x11a1a445cf', '0x12c7a2a01f', '0x13e7a1a127', '0x151858dabe', '0x128224b053', '0x10c066a1fd', '0x12385c46d8', '0x141ff9b2bd', '0x16a326f458', '0x152207938f', '0x159290eeeb', '0x1844cadcd1', '0x1a9bc545e5', '0x1974a947ca', '0x1c8c8bd422', '0x1adb520a5f', '0x182669042e', '0x175d92ec10', '0x15933eb284', '0x1845676613', '0x1646cb4eef', '0x16f6e37b82', '0x19d582fa7d', '0x1d0feb1998', '0x1a2230835f', '0x1b6f3af8c1', '0x1828392e18', '0x1abf39a795', '0x1d9bf5da46', '0x1b4c8e8e86', '0x1a2fd3b850', '0x17a0721a97', '0x17cb177065', '0x1abd22f5ce', '0x1e143c4f5e', '0x1cdf524e29', '0x1b4a04ac97', '0x1eb25173b6', '0x203648376d', '0x1e8e41f9fb', '0x1d6425cf8c', '0x19b7a1159b', '0x1cee21fad8', '0x1c37e41c53', '0x1ac26c3d76', '0x193c227bcc', '0x1793428036', '0x1a84d5deb5', '0x1dd45a7e2d', '0x1b328119b0', '0x1d283ee8d6', '0x1be75d67fa', '0x19aa06e750', '0x18931d69e6', '0x1ba5638984', '0x1f196a8513', '0x1cc7e5e27d', '0x1c213555fa', '0x1b66f98b95', '0x1901ef72d8', '0x177e7c8c6f', '0x1a6e1fdae3', '0x17205bdf87', '0x1a041e91ed', '0x1926adadf8', '0x1647feb983', '0x1711c671ba', '0x1676e53e3a', '0x194585f38d', '0x1a627da614', '0x1d6f9eb76d', '0x1ded90dd05', '0x1a2fdec165', '0x1d74d2a2ac', '0x1d67b12832', '0x1be02e52fe', '0x195ac30e2b', '0x1c5b3dcc52', '0x1e6053dce4', '0x1b7d09c894', '0x1eeba9ffd0', '0x1e4cecb93f', '0x1b3229c28e', '0x1caa6608d9', '0x1fd0018b1c', '0x217cd4c4bc', '0x2581ef65d1', '0x2887bdb1fc', '0x2873323407', '0x24cf2130cf', '0x26ef981fc0', '0x27d22907a3', '0x22d7e3e6af', '0x20ddbb4185', '0x249f6aaa1b', '0x277a649b20', '0x24d76f22dc', '0x22e3244273', '0x1fa492b068', '0x1f69002065', '0x1ceb92d138', '0x207e884389', '0x1dfa5ae041', '0x1c86d9c449', '0x1a21b0f27e', '0x1c04923726', '0x19391fc80c', '0x16281cdbe8', '0x18ecc87281', '0x184b55a56a', '0x1650fe60bf', '0x16026b8ed6', '0x13e4c42b27', '0x1660b522d8', '0x16db8b3cb2', '0x149c0c0846', '0x13d3a7e8d9', '0x14e4cd35a4', '0x1295ae32a2', '0x128632f958', '0x11c9f17071', '0x1402a8f54a', '0x16821eb6ad', '0x1707a745a8', '0x1547cf2b6f', '0x12bbe7381b', '0x1510ac213e', '0x14da713025', '0x13d5ed8f13', '0x123e72c557', '0x13100f1937', '0x14e5e248e5', '0x151f4b3e3d', '0x1368f66539', '0x121221aa18', '0x11f46c64b3', '0x12fa4fc292', '0x1559896e7e', '0x1724abbb54', '0x155a5b7db1', '0x1560b506e1', '0x148065e9b5', '0x135fab8771', '0x12d6efe4aa', '0x1404ae5695', '0x15c90b5dc6', '0x16e59b5476', '0x158a333568', '0x151566ac41', '0x1767140b86', '0x164e0a347a', '0x13cd98d2ab', '0x13e3c9d92b', '0x11f951686a', '0x131a7c286a', '0x1444948135', '0x163b21bc12', '0x1901e638ae', '0x177b111a64', '0x17e9b40e80', '0x173acbb1a6', '0x173e1d77ef', '0x1682cb61e1', '0x149ea2325e', '0x16e07511f3', '0x1681c9d6ad', '0x13f3bafc6e', '0x14a6b148e7', '0x136a86806c', '0x119b6babd8', '0x13ce11d3fb', '0x16474194ea', '0x190ed08aa8', '0x1743a4e5c1', '0x1490ef2a3c', '0x1535010c00', '0x15186eba99', '0x1301322ec7', '0x15611182da', '0x180c65b6c6', '0x1561f1021d', '0x17f7fb0d48', '0x19511cff70', '0x18ce0fe5fa', '0x1801f8908f', '0x15a14b211a', '0x18550c7bef', '0x16df03336c', '0x1498cfc747', '0x13959bcc6d', '0x11ad9c5606', '0x13470f211f', '0x10fc078e77', '0x10e5e9afb4', '0x1302a4ec15', '0x138934dccc', '0x1295c1d3e1', '0x11143af2ce', '0x13368a3ff3', '0x115f9e8511', '0x1339c81c61', '0x12e5676d9b', '0x1137fa7345', '0x114f024665', '0x11a2edbfec', '0x13c1c5703c', '0x1554b18b53', '0x142e70d44a', '0x12b57c7d59', '0x1335e9f490', '0x121b3bfa4a', '0x10efe1f40b', '0x130d2cfc49', '0x15239ba765', '0x17c7d7bff0', '0x161e15fca4', '0x1857f4ebae', '0x169275576e', '0x15b20f9043', '0x13846e0cbc', '0x14a08c0ba2', '0x13d9ab0555', '0x119bdcbafd', '0xfdc19b23e', '0x1128f3e2ee', '0x12d0797904', '0x1529edd396', '0x165cc65f6a', '0x14a0370354', '0x146e9ca657', '0x16ccd67e9a', '0x1408a3bc66', '0x11bf444912', '0x13f66c2ea9', '0x1674c6f56d', '0x1588d2e90f', '0x183990f9d6', '0x172028a867', '0x14de391777', '0x170de23a3b', '0x15e5c54118', '0x18a1b16554', '0x18949c015e', '0x1682b423f7', '0x13b25d9f79', '0x16286e9794', '0x1874494aa3', '0x190956f49b', '0x1980e22e81', '0x18159655bc', '0x1595616a9e', '0x1713ca952e', '0x16a09d77a0', '0x1974749062', '0x1c52e34a42', '0x1ba40bc5a6', '0x1871a3dd6e', '0x1aeb4754a0', '0x181c131fda', '0x154483ea41', '0x1531749b56', '0x1352437a09', '0x14bd018ccd', '0x128ba63c1e', '0x12d56a602a', '0x11eefe3253', '0x1024e98dbc', '0xfdee1a0c1', '0x1166eca24e', '0xf7cab9717', '0xe096d5be3', '0xfba287ab1', '0x1075d173cf', '0x1036966e63', '0xe410f3309', '0x1008d3eb35', '0x1066a6f965', '0xe59d21a39', '0xfabe69807', '0xeada1807f', '0x10834333be', '0x12934fa295', '0x14e5b24314', '0x156d7a6165', '0x13cf1509cb', '0x14d3feffb9', '0x14587aa5db', '0x16a41aa779', '0x16f3d1979b', '0x176e64e62a', '0x16d9479917', '0x18a6ebe464', '0x16322e98db', '0x161441ab16', '0x189b3c5f8d', '0x162acba5c7', '0x18efd02a81', '0x1c0d4bfb39', '0x19d115cc49', '0x1b511756f3', '0x1dd4aea05a', '0x1a7a855732', '0x1d2f83fcef', '0x1e98bb2593', '0x1f095dfd92', '0x1c5a0140ee', '0x1ab5c1f48a', '0x1b34639bc4', '0x1c1bf0f70e', '0x19af85af38', '0x1c7e7be70e', '0x1c88d4c9f9', '0x19aa21c587', '0x1769d3a06f', '0x177dd6366e', '0x1a6cda9434', '0x1db9bffd67', '0x1c98ba8eb1', '0x1be9633205', '0x1f65ac6bba', '0x1c6c54a798', '0x19a7baae9d', '0x1c95b16538', '0x1a4a3757f5', '0x19938e175e', '0x1c7eaa4e2c', '0x2004dbc302', '0x1e807e08a6', '0x1d1ca24066', '0x1a7ccc250a', '0x1a0e65561d', '0x1cb71b54dd', '0x19dd5adf8f', '0x1843332472', '0x17f47d8885', '0x1576c344da', '0x16129dd92a', '0x18d4bbc789', '0x1be83da1cf', '0x196534fcf0', '0x1a48b1281d', '0x1ad26cef22', '0x1a7f0ce28e', '0x183809c658', '0x16d349803f', '0x155bb630f2', '0x1740a00257', '0x1655ed7ea5', '0x155c8a572f', '0x166b49ec6e', '0x14283347ad', '0x136dd06af6', '0x15db2a2aec', '0x1895b43169', '0x1aeb7e915c', '0x17980e10a9', '0x1a8a2dd2a2', '0x196bf9e2af', '0x17f652d721', '0x15b27af76d', '0x1868842ab4', '0x1a2afa178b', '0x1b947e1571', '0x1c5edcbb5c', '0x1fea143710', '0x2066fe6ed1', '0x246b9c5ce4', '0x286e08f9ca', '0x279ef69fd4', '0x2375d46fbe', '0x2243233ff0', '0x2106700e06', '0x1f882d93d2', '0x1d58c97848', '0x203c567775', '0x1c7f527985', '0x1e225e547c', '0x1cad5b6335', '0x1a05661cf8', '0x1a86549a10', '0x185363df2a', '0x1b5d083737', '0x1ec6702539', '0x1c4112784e', '0x1eabd1cbf9', '0x1bf6995be5', '0x19000f93c8', '0x1a38f19a73', '0x18b216b1d5', '0x19db0045e2', '0x180e7855a7', '0x1b1012cc3f', '0x1b64e4b3e8', '0x182edea929', '0x176b1d287e', '0x15d236de3b', '0x171793ef12', '0x19fa7515c0', '0x1d3996436c', '0x1bd392da15', '0x1f4e04dbc6', '0x1d2d80ce2b', '0x1aca211afd', '0x1908c70e28', '0x18d596de65', '0x1649f91c1d', '0x19124a7cf3', '0x1984e46f80', '0x168ceec981', '0x15e36165cd', '0x189fc7925e', '0x1bb383ea6a', '0x1ecfc512ba', '0x1e4e814f75', '0x1d82a8ffa5', '0x20e701d297', '0x24ba165705', '0x22b2698595', '0x212313f47b', '0x1fe988f592', '0x2017664e53', '0x2338119183', '0x231ff8905f', '0x223f8d5252', '0x1f3bcb20d6', '0x1f68119153', '0x21f25fbaf8', '0x243727792d', '0x22e46956ec', '0x20887031f9', '0x20d7a2557f', '0x1d77664b48', '0x1f7f3a8761', '0x1f0529c4c9', '0x1e1723c39d', '0x1aacb14f6d', '0x1e01f6652f', '0x21c0dd4540', '0x2048a7cbd2', '0x2450650bea', '0x240eda5674', '0x1facb9a8cf', '0x23a1b2417f', '0x212fce3b9a', '0x20b4839f91', '0x22523d5999', '0x1ebaee718d', '0x1cc7fcdd2d', '0x1f106e717e', '0x1ce475e63a', '0x1a5dcbb2f4', '0x1da94588fa', '0x1d23e018fb', '0x1a27747198', '0x1b8cd54ea2', '0x1ca2dcda7f', '0x1a56cf7cb7', '0x1742caef59', '0x17aa53706b', '0x1919fcb7d2', '0x18e7aea515', '0x169374e1a7', '0x19656afceb', '0x1c91760073', '0x2022a76ae4', '0x1e36d82fb1', '0x1f2c8f2b5c', '0x2289299624', '0x1e38046360', '0x1f87234aad', '0x237771c845', '0x230ff752f0', '0x1fff36047c', '0x1c85d87541', '0x1fdf765bb3', '0x1cac143da4', '0x1a65ae30b9', '0x1db1b4e005', '0x1cc69a3838', '0x1bff5dc41a', '0x1a5a08ec65', '0x18ed9888f6', '0x1ab189cfff', '0x1b1d1aa3fb', '0x18b37886f2', '0x169526e62d', '0x161929b7aa', '0x1816b5939c', '0x157c34dab6', '0x12dab2d5a4', '0x14f2f7ea95', '0x1685a1e954', '0x14613eb935', '0x16ecda20c4', '0x19c9f00c64', '0x1985c25cc6', '0x1cb64024f1', '0x19821a5590', '0x1b30899f9a', '0x1a5dc6aa49', '0x176162c6d6', '0x19716d9a3d', '0x16b591854f', '0x194f3223ae', '0x177c35b146', '0x1a6b2f41a1', '0x176ab14c61', '0x1a575d9dab', '0x1da210b45d', '0x2156097e2b', '0x1d2b484e66', '0x1f49e64e99', '0x1d2bc9b865', '0x1ab2feb01d', '0x1ceccc05ae', '0x1ac25c915b', '0x1920039172', '0x1c4370fc93', '0x1e09c12d63', '0x1b8ea0b2cd', '0x1ae446ed41', '0x19e3eb7b53', '0x1753ee805d', '0x173f932979', '0x154b87a4f1', '0x1444a8341f', '0x13eac4dd98', '0x1392d52961', '0x143cd7d033', '0x1648179baa', '0x1865eac4f0', '0x1b729fd06e', '0x186bed0f98', '0x1a57f40290', '0x17d5606fdd', '0x1769141b79', '0x1632510a7f', '0x18f7adc9f3', '0x1816bc1890', '0x181bfa5aca', '0x154b71aeab', '0x1453e2d85f', '0x13803dd210', '0x13ecc77eaf', '0x12c9113ac2', '0x12f23ee0ff', '0x119a0bee66', '0x13cd1754b3', '0x13e89efa5a', '0x1525ccd7d2', '0x139b013cf4', '0x13d6483c7b', '0x115b7f34ec', '0x138636c2ab', '0x15f6d9ccae', '0x16a901f051', '0x1885cd49e7', '0x17db590033', '0x15beb7eaad', '0x17a848bf84', '0x15dae2cc1e', '0x135edc7a61', '0x155b5e1168', '0x13c81c6c5f', '0x15d1932f3a', '0x134dbd8157', '0x1175a70872', '0x1196a0ac78', '0x113335520c', '0x11fc25f8fa', '0x123080594c', '0x1475d61514', '0x14f42e0dd9', '0x12fd2a5d26', '0x13d4c3e034', '0x11bc2352e2', '0x13f34e053e', '0x15ee553b18', '0x1385e31afd', '0x11644b9a43', '0x1390c069cb', '0x12ecd2a89c', '0x115fab1b83', '0x138b9238b9', '0x1566338632', '0x1318941e30', '0x157aed32a7', '0x1829b828e4', '0x1b2eb5f102', '0x196d6009b7', '0x1ac320dece', '0x1a590af6a6', '0x17e42683ef', '0x19b25294d2', '0x1a322852ab', '0x19f6d5a74a', '0x1a881d986a', '0x1c3dfa290d', '0x194fdd34ed', '0x179fa8cfe3', '0x1a939a94e8', '0x1de5db5d87', '0x1e1164005f', '0x1c702efbee', '0x1b1073b79f', '0x1bb8b6ed52', '0x18dd1c4002', '0x1a0a5bdbf1', '0x19b45dbaa4', '0x17234d79be', '0x1a06e96115', '0x1c58d47b52', '0x1f0f883bba', '0x1d5589d0fa', '0x19aad896db', '0x174fdab9c6', '0x19a830bad1', '0x198f58a981', '0x186e36979c', '0x16936295e8', '0x1963fb63a9', '0x1af073a675', '0x18d4a70a14', '0x1bc37f1776', '0x1a65e7e72f', '0x1d89dd2c3c', '0x1a21744025', '0x1d0a99de64', '0x20ab7b59c0', '0x23f0388fdc', '0x207d13f3a2', '0x1f69e94607', '0x231b2f66c4', '0x1ef7db4826', '0x21b485759f', '0x1f4c6e105c', '0x1fd94d249e', '0x1c193392d5', '0x1f9c156d07', '0x1d844bf2f3', '0x1b06870017', '0x1872f4513c', '0x1b7670dd4b', '0x1ee5398d84', '0x22be7bb32a', '0x1e8a4b78f3', '0x1cc3917c62', '0x205bc8a06a', '0x1ce59052ee', '0x2018a039d2', '0x1d10cc9172', '0x1b0e0ab037', '0x1a72eee96b', '0x1d3c9f658a', '0x20e40062be', '0x1de8e9a859', '0x1f44c37845', '0x1d1e774b20', '0x1dac616861', '0x1f7d1da4cd', '0x1c7ff30044', '0x1a231265b7', '0x1abc63a1eb', '0x19dd4d6dae', '0x1d1817a145', '0x1de590314b', '0x21a11a9ad5', '0x1faf10e7e5', '0x1be8c12986', '0x1f659cb0ea', '0x1bc548fd5f', '0x1a6b5a005c', '0x19c6191185', '0x19983762ff', '0x1cc5c6b76b', '0x1ad2b4cc95', '0x18138ee367', '0x1a46509300', '0x17d384c486', '0x17c1ea3cce', '0x150e153765', '0x128cd93ca3', '0x14ddaef31d', '0x1727f6d7e1', '0x16758fff6f', '0x14c445df8f', '0x170bc878ce', '0x16f0012902', '0x152a3c4147', '0x17cf432389', '0x199ea4bb99', '0x173e17f146', '0x15ce71124d', '0x146b9458a3', '0x156d582199', '0x12dcb4988d', '0x11efe26cf7', '0x1169de4690', '0x1018f00729', '0x10558554b3', '0xea4e895e7', '0x10795852bf', '0x1226887b70', '0x11272cbc49', '0x1070a08d19', '0xee9b8c72d', '0x10c6d29ba4', '0x120f9c7584', '0x1212b9801f', '0x10179fb276', '0x1124fc0b90', '0xf71386f3e', '0xfa9964000', '0xe3934ef44', '0xc720e515c', '0xdffe3ea07', '0xe357cbf4a', '0xe8aa5f41d', '0xd1cb29c0a', '0xb83990a3c', '0xcf401e9f5', '0xe92178a66', '0x105f2bc75d', '0xf121a107d', '0xe6f7c50a6', '0xe3c3f28c0', '0xe02255e1c', '0xcdc0f187b', '0xe77902ffa', '0x1033c88f04', '0xe71459d6a', '0xd55107995', '0xefea576b2', '0xd7d6c4d17', '0xd77b3b5bc', '0xc2fb26330', '0xdb58b75d4', '0xd8d9195f3', '0xc7c376d5c', '0xe0b7f69b6', '0xf88b16005', '0xdc5cd8b4f', '0xd9c36823b', '0xc4d84fd3f', '0xdd68c85ee', '0xf47300c3f', '0xe79fa794c', '0xcf96e36d6', '0xe8e2cdc7c', '0xf1481c1b6', '0xd597acf67', '0xbae4b757b', '0xd12c85c00', '0xeb51aba83', '0x108b581bcc', '0x118848a95b', '0x112befe303', '0x10e5aaf8d9', '0xf860b139b', '0x11765bf795', '0x11093b0d87', '0x117d745d50', '0x13ad1b53f7', '0x16224b109f', '0x14def83c22', '0x15ebdc6678', '0x13843e3fc8', '0x15f3f93097', '0x14f38b0410', '0x125519a38e', '0x14020889de', '0x1681ba87ad', '0x19519d0248', '0x18d7b380bc', '0x1bf1c8cf37', '0x195c89cb00', '0x1935673db3', '0x178061c66c', '0x167da0b991', '0x14bd3a6da7', '0x13e01c38fe', '0x14e74a307b', '0x1783056ae4', '0x1584305759', '0x17df26199c', '0x1721afcfdc', '0x174c35f4ec', '0x168196b3c4', '0x16750cb749', '0x19437a4358', '0x1a1664f5b0', '0x1794ae7915', '0x1a262ccf3d', '0x1919de313f', '0x16c6c4c1f4', '0x1629a72d43', '0x14d571e3a8', '0x13446e2dbd', '0x15acec97b3', '0x15ea5c584c', '0x13f51b9688', '0x12891e8654', '0x14b5e1e730', '0x124d34fec7', '0x148eb87d17', '0x12d673bb1c', '0x14fe979e68', '0x179e17ecbd', '0x168f88c824', '0x15bdbcc77d', '0x159e8aa340', '0x16489ac6af', '0x13f3925771', '0x15fcc124ed', '0x1805bcba1f', '0x15b694ab8a', '0x1376fbc7e9', '0x149763bff0', '0x13bdedfa3f', '0x1635368ea2', '0x18fb3f23af', '0x19386e5969', '0x18141a3efd', '0x18a90cbf19', '0x15ca9fd906', '0x180b2d964b', '0x1509c7e382', '0x131e0ae95f', '0x12fc35d7fc', '0x1415b754e5', '0x127baa99ba', '0x14cac07ab9', '0x1498fb558b', '0x172b2f773e', '0x16b4a4a2e4', '0x15aeca5267'], 'gasUsedRatio': [0.9997581333333333, 0.9999619704691702, 0.08412564798812638, 0.8060610311225546, 0.47558430361017684, 0.055007, 0.1911186273395971, 0.999424643532485, 0.33891308563061223, 0.41791592313120857, 0.22733792742819575, 0.1940157336096154, 0.9558292268706414, 0.8066507645709777, 0.41638729347891495, 0.2850783292435862, 0.10065474956706628, 0.9994640982609103, 0.4086092471931015, 0.5464243017899051, 0.6461616792697117, 0.9993076062583355, 0.5315618875428625, 0.0866243703541792, 0.041451390848618555, 0.7935543880332556, 0.07976317754570705, 0.3025263, 0.18512333960779367, 0.44116304508550874, 0.06569187609609219, 0.9994520989772514, 0.3831493, 0.9964353666666667, 0.9996242997954169, 0.580671509497974, 0.49520907856994806, 0.547315440388412, 0.23031841019920557, 0.9996626323774584, 0.1759048, 0.4207567976537578, 0.17619240365265687, 0.9994669456237824, 0.6925689101671868, 0.25857857329116546, 0.175259459351034, 0.05075111292410833, 0.9525523239352971, 0.37701587645539797, 0.6345342368665629, 0.12753891093227285, 0.9993138913253738, 0.7879116197078552, 0.46317602851010625, 0, 0.574518178570188, 0.9574665643073322, 0.2794779457786741, 0.07552053761633744, 0.9999499843012767, 0.6799330743476544, 0.805659833806253, 0.6331655327533429, 0.14338878450933065, 0.007714544567099712, 0.5077566678479015, 0.27679512659208466, 0.18836004915858498, 0.4827366337626315, 0.6691193495938873, 0.27646286647309715, 0.09984811777145529, 0.9217831155957938, 0.19910384727199468, 0.1881168195335846, 0.9998467828332176, 0.9999902999350095, 0.9318981422534636, 0.9438070043934669, 0.6141249333333333, 0.18841121644713937, 0.7366970666666667, 0.0387127696862653, 0.217721740685935, 0.9290161539438757, 0.994963255015646, 0.2453470175279811, 0.26566703736666736, 0.9995179504906916, 0.8850805909848274, 0.07692759528798265, 0.44403367065531235, 0.09755472720197907, 0.623178652118317, 0.04445863393691951, 0.9996982425626811, 0.8030539044269562, 0.08147709142622207, 0.9221735947205488, 0.6554073772744837, 0.10898519840016967, 0.458899512573465, 0.19420580069129628, 0.9996422860781319, 0.9999949902110393, 0.8025015545496487, 0.23242238758962921, 0.6644996798200693, 0.12494550602058067, 0.9995446540493541, 0.9993246974338502, 0.36929265091902924, 0.7018875889345876, 0.2304460880497974, 0.9997973988519269, 0.22980877718732748, 0.22264890281609193, 0.3109127916988525, 0.9994785294049215, 0, 0.8870023061862693, 0.999978, 0.9860929136031998, 0.2857074039229813, 0.3553364574412175, 0.0702116, 0.9738901666666666, 0.324647981246313, 0.43187922239541343, 0.044230618224234984, 0.9754813192638839, 0.148023497791022, 0.047334191009232036, 0.9999397076163061, 0.9999843666067386, 0.5250365775248335, 0.20925393077707002, 0.1889599534369759, 0.11153064688751772, 0.5304906989808956, 0.4094683237509062, 0.4444534533019531, 0.22808234102853653, 0.829011658006366, 0.5503860483071472, 0.18172939805797308, 0.03759832510403266, 0.7437309333333333, 0.3457981, 0.4093718333333333, 0.9991911, 0.9996701887273743, 0.037574802988976225, 0.9993204, 0.21794933333333333, 0.999928330014259, 0.11198470451905755, 0.008654533333333334, 0.9995134750915731, 0.9993237666666667, 0.24831150952238193, 0.9996638996863064, 0.1502397, 0.958792, 0.14474624470795733, 0.1285542130608423, 0.9575096783252318, 0.006465221548398312, 0.9392528132333964, 0.6798768729815928, 0.8591892966964482, 0.1810270414331664, 0.2728800561042907, 0.9999914583014966, 0.05706611494903297, 0.4235369666666667, 0.10565123333333333, 0.3494065, 0.2903987410372896, 0.7208519394618101, 0.2135003162081845, 0.027086818131621115, 0.9486295333333333, 0.5597789666666667, 0.08903336666666667, 0.9136566857536385, 0.9996192996446797, 0.1762756643768841, 0.7605377969841768, 0.7396156065761408, 0.7391975943931841, 0.009510213669253422, 0.12032181712028846, 0.8506757174057729, 0.918162303043112, 0.9993632418371067, 0.23417603480339838, 0.5832058666666666, 0.9999315666666667, 0.8856418333333334, 0.3267062333333333, 0.9860678619338451, 0.26289361920426135, 0.09687100915345578, 0.3700595409231016, 0.193506084048814, 0.9998213919165178, 0.17128501855007958, 0.6235144703607495, 0.9998380011761229, 0.9998293011880047, 0.096915544188224, 0.6991219252914644, 0.022153221726274885, 0.9288343516851967, 0.9280479012461297, 0.18791208222884465, 0.33703082810096024, 0.10895093743671756, 0.5282028249375337, 0.9951789, 0.9996826666666667, 0.33953005109489415, 0.28065992861593336, 0.9994547, 0.6974793666666667, 0.29431973333333333, 0.34755806666666667, 0, 0.9997264994420108, 0.4015725571221683, 0.2932038237539318, 0.2721086, 0.23692502395255635, 0.9994486994854529, 0.9993598743198226, 0.14703090779102787, 0.7882534333333333, 0.32804376807285646, 0.1789535960163303, 0.33019121757547276, 0.9999265665271431, 0.9996347092662128, 0.20180273844109226, 0.4095049120506334, 0.39655427357290624, 0.15043954255022865, 0.25791768747705407, 0.9998849784407838, 0, 0.9998079, 0.3670048, 0.04358123333333333, 0.6415009333333334, 0.3950995, 0.9998370924125924, 0.6761907458223546, 0.9625836009444919, 0.5668536292503499, 0, 0.9993847666666666, 0.493034815163674, 0.29196222973659447, 0.1382272124926378, 0.9735834831419513, 0.7849257447025463, 0.11972313333333333, 0.9994293093872834, 0.4197846917990457, 0.09016666666666667, 0.7161600636354734, 0.9391189431776803, 0.7106211848334291, 0.9801699719552286, 0.8223541246088506, 0.49207962755894474, 0.13996183333333334, 0.7311183666666666, 0.5909210322786466, 0, 0.2730201708635149, 0.9571979475401282, 0.8118693752519963, 0.23285864243142063, 0.28781912481428934, 0.12801233333333334, 0.4705835418380618, 0.18291159683683406, 0.9943335944341763, 0.19024473333333333, 0.30636583333333334, 0.16415336666666666, 0.7887307622560097, 0.10100946094216355, 0.013708333333333333, 0.9997575333333333, 0.3987908141033614, 0.17434400186586846, 0.4449861, 0.11546788772569748, 0.9994859328535374, 0.5857689666666667, 0.10660167013577908, 0.3480748031389764, 0.7152594333333333, 0.057941246293672435, 0.4869841254785425, 0.34120785263568965, 0.999537932455405, 0.9993187000828277, 0.5926974126426692, 0.196153, 0.021344433333333333, 0.9977324666666667, 0.45977486666666667, 0.30480133850705216, 0.1790189670843693, 0.6795208, 0.8850977312679165, 0.5429242910778033, 0.1757480225459846, 0.22402208179240723, 0.47431280097781003, 0.7279060040684162, 0.9999475486308774, 0.8360211435470122, 0.190572885266093, 0.5046464211135085, 0.3360525909159261, 0.279949571989135, 0.3897241537304607, 0.7502573767072654, 0.8530860869071782, 0.7040954581112381, 0.2629273076340564, 0.41527404367183934, 0.9399726666666667, 0.31236203333333334, 0.051356616402583787, 0.5175094830088508, 0.1146969, 0.7513775333333333, 0.7438163700186565, 0.8874290616004575, 0.9995614278563643, 0.2558021526907568, 0.5736218983319947, 0.3857130595203353, 0.5022327532763753, 0.3740725756733684, 0.16394020511840407, 0.9378585283049431, 0.4353405039471564, 0.045934026959486104, 0.64015, 0.26078266666666666, 0.12731922722538558, 0.9993091180189809, 0.9995485920971552, 0.9990541315361833, 0.21368121295651923, 0.03609727014550775, 0.6246509956968189, 0.478948953339356, 0.10356026666666666, 0.9997721225223569, 0.9994118994315028, 0.0565875, 0.9837751666666666, 0.7249893666666667, 0.4191180978441219, 0.37143989239189595, 0.10385267919882754, 0.9997063994421589, 0.25981163303509486, 0.10225473567835766, 0.3033663521907449, 0.11066134948343523, 0.8618944776693073, 0.024196512512231816, 0.47965359007099584, 0.9999928666395599, 0.6105996333333333, 0.3052875, 0.1758751087103223, 0.9997996331463243, 0.1170239, 0.9264415701932938, 0.43142510389781547, 0.14491227659617145, 0.5208989823792534, 0.5757568538391296, 0.9809311793050081, 0.818656, 0.28445756666666666, 0.20815152663242323, 0.6072579334407379, 0.2700817, 0.2416729, 0.9993613569682538, 0.9383129012014824, 0.9998401559332153, 0.22025763333333334, 0.9025871763777329, 0.2089207283260131, 0.34466613333333335, 0.09839768533973425, 0.7274561456257359, 0.3493496860912389, 0.0483327, 0.10268363723842999, 0.8279251985158496, 0.8856374990806427, 0.9994977190452955, 0.7265410883569404, 0.18937818014054467, 0.46242351312112556, 0.9635984976283234, 0.014669900575684838, 0.04344785365819445, 0.9993374851287833, 0.9996491323392083, 0.33582364996119535, 0.9997383656811774, 0.31849263333333333, 0.1095133064103764, 0.9190470410940182, 0.2993093787819017, 0.9994299533655897, 0.4917004797493868, 0.16315676227749312, 0, 0.9998179659810051, 0.9145342207454561, 0.5952373976157688, 0.5746060333333334, 0.2774221026832702, 0.08465807901420708, 0.7768394087327424, 0.42201739998216514, 0.9998365734367839, 0.9508171606486219, 0.4035473333333333, 0.03736542066661428, 0.905033544697975, 0.08254253333333333, 0.028483080394672063, 0.48599706533801085, 0.14670843593918267, 0.7933466324180001, 0.0770532581428756, 0.5621496403973364, 0.3088340877635212, 0.10088752832296902, 0.4322211851490151, 0.8859752995361169, 0.05980928882293723, 0.125448706342696, 0.9816915855946918, 0.6864408158198615, 0.43997788763594464, 0.01666771538546628, 0.9996010081101658, 0.5914283564747647, 0, 0.8680964, 0.24648436666666668, 0.9999230915655805, 0.9996600663493953, 0.9999758901873962, 0.6015248, 0.19782333333333332, 0.7058052855279847, 0.4073390195888387, 0.9512833893862704, 0.5550125394896233, 0.5834439749183935, 0.4005637349305823, 0.8156913666666666, 0.1014912, 0.4789337788350324, 0.9578555939985544, 0.10348184655989105, 0.9997660995555891, 0.9996911, 0.1812767, 0.732411, 0.8681296, 0.0505057, 0.9089356243628097, 0.6933827, 0.5575207333333333, 0.1539557, 0.2683951545350702, 0.5740777691392512, 0.6329920740323098, 0.15512832807715668, 0.9373564666666667, 0.5056739760290743, 0.0976913, 0.14913626666666666, 0.5133537899759115, 0.9995260662243285, 0.9995798333333333, 0.34807846666666664, 0.40419462938893164, 0.999503232869684, 0.12111283333333334, 0.11046219967131236, 0.9567567863641018, 0.17887323566972674, 0.3914381726862004, 0.9564208495598665, 0.9947139628646505, 0.3104805017532574, 0.3177069222591451, 0.13940997318819745, 0.434873975540898, 0.9081982144663673, 0.10291595826188174, 0.2522228, 0.4493113, 0.08403352540422389, 0.6134562725591878, 0.9998512333333334, 0.9955420468087087, 0.13997083063944193, 0.6399648, 0.5818783041640162, 0.45143022133487326, 0.15619470324277293, 0.2698394370336158, 0.24290126666666667, 0.8547468333333333, 0.34228986666666666, 0.32554005653187, 0.6980406848379725, 0.0964040285109342, 0.35552019761260406, 0.9996974706719721, 0.999387703593231, 0.8799292066673698, 0.005802710579001242, 0.9994153601914411, 0.331501113488641, 0.2703418, 0.1219024, 0.9998025738800606, 0.7883632691390512, 0.7158631666666667, 0.6146490666666666, 0.9996469114576283, 0.561157242452001, 0.9960181666666666, 0.9403548333333334, 0.41997256666666666, 0.07995173333333333, 0.3648610333333333, 0.3555717666666667, 0.3191436437681396, 0.2228053976565855, 0.8937557497868917, 0.036123884483859794, 0.729761623097426, 0.30658870766811686, 0.1295191176905328, 0.5774201134437682, 0.16838706666666667, 0.9994978333333333, 0.9987305729288682, 0.17233813326019548, 0.8421768, 0.1468485, 0.07615270355164848, 0.6955499390316078, 0.2671035982031662, 0.6878571666666666, 0.22169153333333333, 0.9998666, 0.5489717333333334, 0.031135833333333335, 0.3735196333333333, 0.22717810608726088, 0.7329760507776474, 0.9999541666666667, 0.9998932, 0.30858963333333334, 0.9999991992180364, 0.22821834633712323, 0.17260267427392448, 0.23791584410957567, 0.46805115898557953, 0.09002306573557627, 0.9993489266433058, 0.5714217275894117, 0.03468722507352845, 0.38251910902755937, 0.9999832339062784, 0.9998497528529524, 0.949130820812634, 0.43444803722582703, 0.39490501571390824, 0.9597675879417944, 0.9649551230165563, 0.27891075544101934, 0.32016855933880684, 0.35215604335354805, 0.5224564240628614, 0.8898381234234679, 0.4893090105192873, 0.40016919903558884, 0.14790236767189513, 0.5221492233937992, 0.8235322251022914, 0.7673211761419398, 0.35385090005468667, 0.2295363123932645, 0.5380363530599555, 0.08883342501238252, 0.7756470931159046, 0.4394458450965611, 0.3801065029682765, 0.045926923781445896, 0.9998144471539201, 0.9993004299987164, 0.32584664244868017, 0.9993501283094135, 0.4717990167208571, 0.01374909166061107, 0.9996943666666667, 0.2255375707711914, 0.4419518528134821, 0.6976589049909986, 0.0814781881418908, 0.24630836666666667, 0.8172880515509938, 0.22035174634002147, 0.1502841644279228, 0.9998526789437331, 0.42972924091173503, 0.09011619693260939, 0.7135050600173877, 0.6576838301041853, 0.17913614777078718, 0.032528590275309716, 0.5695461260673839, 0.7427477490060119, 0.46868652417373674, 0.12593766816239352, 0.9996742133456815, 0.9996097640781018, 0.9994587582656501, 0.2608702159469745, 0.6270689995130385, 0.9313497851564976, 0, 0.6732781666666666, 0.9997097666666667, 0.45441203333333335, 0.15028606666666666, 0.06569768712481071, 0.9698082384876893, 0.09831506666666667, 0.18261996666666666, 0.9995951286901674, 0.37628876666666666, 0.39181653333333333, 0.26486123333333333, 0.2839092, 0.7832786666666667, 0.5629634004271838, 0.14407203822341466, 0.15694861203664542, 0.4142115536686186, 0.860284, 0.06767683333333334, 0.010194466666666667, 0.9444195590327288, 0.8003292293442954, 0.11954740874960719, 0.9995794119248225, 0.9996449859876236, 0.4586918329601934, 0.99986006957892, 0.05367633333333333, 0.7636618333333334, 0.378882011617678, 0.04701300585496261, 0.8528877180548405, 0.07020501038528246, 0.957981993969016, 0.21170118574910132, 0.9996331744311968, 0.04548510972155893, 0.9995573043774781, 0.9998688216942146, 0.9998489912350395, 0, 0.7906637830870293, 0.2292791712608508, 0.1610546, 0.8334615752282103, 0.20049935379939687, 0.25572228481859116, 0.999642832666621, 0.7511599098171013, 0.16962437494824986, 0.40341052659536153, 0.3510477105781195, 0.10410613333333334, 0.48636500209120875, 0.16392425299596947, 0.3071199666666667, 0.43070418263434246, 0.43101366741303476, 0.6357142570589926, 0.9039876879545753, 0.8799551814828962, 0.9999791999410665, 0.05899264012556297, 0.8148003357479313, 0.11887252677558054, 0.42900082077195983, 0.2925860706409419, 0.9993472226670742, 0.3592268873411836, 0.5034009557796415, 0.03302887068276823, 0.318354216458637, 0.3373180173975836, 0.5869651763226915, 0.2712412491047908, 0.5342505470432166, 0.2161389, 0.9998124333333334, 0.521723696522988, 0.748932899004039, 0.20830446666666666, 0.5472422845757784, 0, 0.9993517663732376, 0.9998880331205963, 0.6267377, 0.8287665666666667, 0.3913924, 0.14591553333333335, 0.8517805, 0.19525983789837442, 0.045281392296522296, 0.9101798262916134, 0.20497214393042945, 0.9118897929734452, 0.03893041030282919, 0.1178773, 0.5295102666666667, 0.4116788043524502, 0.682539670370359, 0.5454833402662209, 0.9993748321663534, 0.5964853480483523, 0.12490861641079262, 0.6774057100601145, 0.07718969074783515, 0.9996912306570387, 0.897100349704977, 0.06080566666666667, 0.06334203333333334, 0.9999275666666667, 0.3690861459548583, 0.17209988377979707, 0.9999498532371407, 0.879433066111449, 0.06947716802377306, 0.9994073085871588, 0.9995831918058419, 0.9998553839567638, 0.24171331823253, 0.7100067940321584, 0.43806240810357816, 0.12704914309654466, 0.8022634164609813, 0.5777309989489597, 0.4646158459920563, 0.5874286782103318, 0.7578646226463255, 0.0849983558193578, 0.2332014, 0.9999913582279762, 0.9998839332250044, 0.5227512666666667, 0.283195559536113, 0.3067458, 0.5971429333333333, 0.0876378, 0.6893123333333333, 0.448402, 0.1005915276267275, 0.9994571737002077, 0.8565518508825093, 0.8829231775540374, 0.2776560253218416, 0, 0.13292905827576446, 0.9023797287984948, 0.4848700848108067, 0.32325063005298227, 0.1963146971913741, 0.9987360261708149, 0.7439820477011838, 0.18691189030471256, 0.9724775843970019, 0.3032552909164932, 0.9758622568717781, 0.03852126536459038, 0.9455651742998683, 0.9997608993225481, 0.9001869666666666, 0.116034, 0.36766183333333335, 0.9701737413250706, 0.028515959948229284, 0.8535204, 0.2143930548180298, 0.5703264323046702, 0.028976133333333334, 0.999851, 0.23515497117065187, 0.16239052364417286, 0.11866278892074374, 0.9930449498886308, 0.9999879215153413, 0.9982831617450637, 0.016019822613607012, 0.2673525898229312, 0.9998747105078679, 0.07206997686688973, 0.942882085427694, 0.12231368082108673, 0.22327846163104018, 0.4104201171554713, 0.9216195125310603, 0.9998936330319602, 0.1374875795028598, 0.6817185582762408, 0.2250149488209959, 0.5761500604436194, 0.7447140450481571, 0.12031728580852911, 0.16837633333333332, 0.5916548666666667, 0.3696235707501709, 0.9994726372193613, 0.6103482283816354, 0.9993964655199512, 0.26859943101664, 0.02346017373079752, 0.9998674034727144, 0.03800857776592884, 0.3053624, 0.4022652213446902, 0.4721849564454579, 0.9966624042781017, 0.22897900362671644, 0.0904015291969279, 0.8652153686565092, 0.12725733158864685, 0.4884557227984133, 0.04499060428938488, 0.024137710142677727, 0.9993503629268784, 0.9390232747842018, 0.37962023164573744, 0.19855824713661985, 0.9390370149972253, 0.48116638461582134, 0.19089318070887465, 0.9998135692340474, 0.8040927243214762, 0.12885619842589555, 0.2528429842292218, 0.24572974374270928, 0.6972344989793494, 0.021168569566262334, 0.3038223868521874, 0.38325820327098825, 0.19767553908076996, 0.558805253505174, 0.08616751693289026, 0.9998110469975462, 0.9070694900408529, 0.28017297782569356, 0.3337141147757508, 0.12847232636088743, 0.9998802160991167, 0.8062184446223475, 0.5026935163578741, 0.061589818248372404, 0.7615391565774621, 0.10285655809358127, 0.5570334666666666, 0.13250065355486298, 0, 0.9994694, 0.5598198974632062, 0.593648120738246, 0.1067847, 0.0124972, 0.9999456333333333, 0.9994976094155943, 0.9944425614797241, 0.18212301310377474, 0.33140288528538586, 0.44453892206338275, 0.4362274259751938, 0.17197431148494594, 0.9999962259626384, 0.9797760128509734, 0.0655399963014398, 0.19252184948198767, 0.9987681953191422, 0.09858423333333333, 0.49337344583652604, 0.11945067568231024, 0.9998536235886037, 0.45443729785729187, 0.18485744946877863, 0.9996922990600643, 0.9240805537471195, 0.04646739832429525, 0.452816441058556, 0.11576006666666666, 0.9991611333333333, 0.916241242907032, 0.2901309883646871, 0.08494319580913023, 0.9874341761249347, 0.6442032262024098, 0.0409648, 0, 0.9768598369641288, 0.9999688333042445, 0.9995768666666667, 0.7388846333333333, 0.4176997, 0.43605985421902177, 0.1748482690199934, 0.9995577, 0.4023536316546441, 0.6065973184053485, 0.9999735408036843, 0.9996411326514854, 0.27175656666666664, 0.7013047333333333, 0.0612024, 0.9993593589193486, 0.3174864088067386, 0, 0.8655862333333333, 0.9995635070980146, 0.9997699331186043, 0.42476431409398036, 0.999446846992928, 0.13026777436044165, 0.47588926421589073, 0.22912193333333333, 0.3279669597361824, 0.18848309823997098, 0.33340856242281625, 0.7068976613625632, 0.9991180370580588, 0.16052132682780357, 0.9378644333333334, 0.37598923333333334, 0.5287242325464149, 0.36410802981473367, 0.4912947559858519, 0.9998585570953405, 0.6304476318202503, 0.115648431074946, 0.9356655214300195, 0.33967727357780186, 0.12956016708714008, 0.39221623333333333, 0.260148768605877, 0.19924541929572467, 0.9999513141629465, 0.5442871666666667, 0.14262336666666667, 0.21502770789008802, 0.9693354741345422, 0.03474983347055635, 0.9930527985506628, 0.16536807040853035, 0.9579746391104633, 0.9997597307541629, 0.32100233535157463, 0.35469957164878635, 0.4775800666666667, 0.6229103, 0.08136768888152614, 0.9081648650275247, 0.8702295050180194, 0.11549155556388434, 0.08579554456278014, 0.7315127849313297, 0.3349884359672926, 0.9996377251221746, 0.999565073641691, 0.5382686811384241, 0.3188915666666667, 0.5966546333333334, 0.034662066666666665, 0.9134020037233025, 0, 0.13478781726511607, 0.4723481641281785, 0.731682, 0.1810016518869324, 0.9996847825909767, 0.4625982200164333, 0.9993027986520774, 0.4200549, 0.3198046666666667], 'oldestBlock': '0xd10317'}}), - (('0x400', '0xd10315', []), {'jsonrpc': '2.0', 'id': 0, 'result': {'baseFeePerGas': ['0x1dacbbd575', '0x1bb1c0b90a', '0x1ae693b338', '0x1ca0955ddf', '0x190c82b224', '0x1c2dbea40a', '0x1a9a01210a', '0x18fdd0f987', '0x16c50757ea', '0x185770931f', '0x1b6228f03c', '0x1e9acbddc2', '0x1c1400cc67', '0x1ecd259d56', '0x1bfae0945c', '0x187b8481d1', '0x15ae65809b', '0x15ebc8d0a8', '0x153880b55c', '0x17df35ab86', '0x19343323ee', '0x187f82313e', '0x16bd03d50a', '0x168d4fe47a', '0x154399376d', '0x14bde50266', '0x168eb5940d', '0x1405050e06', '0x1184646c46', '0x13b446379f', '0x162a24e7cb', '0x1364e04ad2', '0x15ade86ba0', '0x18611b5cfb', '0x188ab76529', '0x15d694aaac', '0x13e981d5f7', '0x166629eb03', '0x147d6ce0d7', '0x170cce7e00', '0x14f8997cbd', '0x147dacd86e', '0x14d4bf01c2', '0x163629953f', '0x13d0532927', '0x12287428ca', '0x110ea4cf61', '0x133076fe6f', '0x159625666a', '0x14041c427e', '0x13ec93e077', '0x14e5eaa7d9', '0x12d5fe44e2', '0x1412e96089', '0x11b922eed6', '0x12d2c59c05', '0x1167f65fca', '0x1128dd33fe', '0x134d59039e', '0x13e8837bb4', '0x164c40574e', '0x1763e7deb6', '0x15d81c676e', '0x147bb1d758', '0x1326df13f3', '0x158b8c9dde', '0x143e5a5690', '0x14a8eff8c0', '0x13574519e3', '0x15c1df1497', '0x143677c54e', '0x15cfb8c088', '0x1717ae2d37', '0x15a050dee4', '0x185393eebe', '0x171cedfe41', '0x16e875131f', '0x18d1f14696', '0x1a152e029c', '0x1796e20c73', '0x153f332b17', '0x16b89aca17', '0x148398d801', '0x1713780e23', '0x155f4f4ea2', '0x13509bc9c1', '0x15ba1d6162', '0x1776768d3b', '0x19651f739b', '0x1c90abe5ec', '0x1ddfaf7d0c', '0x1c33def029', '0x1eb3d2c797', '0x1c118bba7c', '0x1a86157b35', '0x184bff5251', '0x18fc20939d', '0x166a1a8c2b', '0x17122dfe9e', '0x151b8c56b0', '0x17795c1a67', '0x184311f6c5', '0x1675db779b', '0x1499fb8873', '0x1375e6c263', '0x113772c13d', '0x135db77a7f', '0x11fe92efba', '0x12f85b8231', '0x155705c1db', '0x14deb567cc', '0x177a5f5bb1', '0x180be24da3', '0x15ec9ef18e', '0x18a9dba478', '0x1b8462ff4b', '0x1e0a29e96d', '0x1a48e4ac40', '0x17e8b59dd1', '0x17116a036d', '0x17ce14abcf', '0x15606062df', '0x12b4545684', '0x150a211fb8', '0x17ab40cdd8', '0x1a79eae65d', '0x1c77fbf3c1', '0x1900fe95e8', '0x1719811507', '0x199e341f94', '0x170fc47dc2', '0x171c9aad9e', '0x153ce174fc', '0x17e467507a', '0x14e7da666b', '0x178476f1fd', '0x15ef0d2df7', '0x145228a500', '0x14fbfe632c', '0x14ad65e485', '0x126913ca44', '0x12beab0a4e', '0x11bd6f74b9', '0x13f49f196e', '0x14032a57c9', '0x13c5ab1693', '0x163e3a3751', '0x1811923748', '0x16a34ebc15', '0x1611144d35', '0x144fedfec1', '0x16d9d09975', '0x17f0bd5e7c', '0x1aeeb5c3fc', '0x1e2c05bacf', '0x1b88770b97', '0x1a612d7489', '0x1a7c331acd', '0x17c9fc11ce', '0x1ac2336b42', '0x1aec8b2be7', '0x184e987bba', '0x19c3d4cd86', '0x180d129a0c', '0x154fee1a68', '0x12b3682744', '0x15095199d4', '0x14f2671c1d', '0x138cdf5e60', '0x1381ae1c7a', '0x11fdcd63a2', '0x13eddf2c1c', '0x11ecc824d7', '0x10f8d7b0dd', '0x12f98dfeda', '0x1558115720', '0x1712a57b4f', '0x19d406563d', '0x1813521f81', '0x1b14d5972f', '0x1892184461', '0x1af7323e8c', '0x1b6cf6437e', '0x1a45d47146', '0x17643ee62b', '0x1a5076467c', '0x1a28fa463e', '0x19e7b05a2b', '0x1a86667150', '0x1839096190', '0x17dac05925', '0x15a004730f', '0x1822566fc0', '0x160f98a7ff', '0x14016da86a', '0x13b3c3fa53', '0x15ff55dc20', '0x18beec8f51', '0x19331236d4', '0x1aa496abc1', '0x1a69a02e55', '0x174f1ac0d0', '0x1a388e4406', '0x17b88ea9f0', '0x170a18cf19', '0x14763adafb', '0x166f8d1cf1', '0x185d4f2068', '0x1767c24049', '0x16c501a4bb', '0x177ec7a2ab', '0x152cf5c3a2', '0x1573685bf7', '0x17c51d559a', '0x1701253a94', '0x186d1d5036', '0x17d526437e', '0x1aa6f9a406', '0x18253d758e', '0x18b2e6e4fa', '0x17a526189f', '0x14d6d9b89b', '0x1566b2b1ab', '0x14835183d7', '0x1643c32b86', '0x1508f83ee4', '0x1438765425', '0x149f44513a', '0x126ebb1537', '0x121f1e122f', '0x14327541cb', '0x13b3bf7d20', '0x12288ea01e', '0x146cd8a9f5', '0x126f11ca07', '0x1419bd905a', '0x1204489295', '0x14445382b9', '0x16ccc46255', '0x194b2e629b', '0x16a8a5ff83', '0x1524c04303', '0x175e329bc8', '0x154dc93942', '0x17db8dacd1', '0x1ad6ce2f69', '0x1a2fc4d94b', '0x19d35a0372', '0x18116721b8', '0x190abce999', '0x193a181edb', '0x1c4fccf16a', '0x1970b18c9d', '0x16f9058b72', '0x14362188a1', '0x16bc8b9f10', '0x19606da7b2', '0x169d9fba63', '0x14fa82b88b', '0x14ed031521', '0x13a80d74f7', '0x161c524603', '0x13c1f3e3bf', '0x1541029f72', '0x145c719630', '0x130cfa6bad', '0x12e4d6827d', '0x10b094aba0', '0x12a6413490', '0x14c990cc41', '0x16854886f6', '0x1934a4d6d1', '0x169dc0d388', '0x1971579e73', '0x1c9f546413', '0x1bdb6eafe0', '0x1b68c1e25b', '0x199737943f', '0x16ddd58504', '0x19b909e7de', '0x1cf01507c1', '0x206d965b0e', '0x1d29c33685', '0x1c4bc9799c', '0x1a6ed25617', '0x1dbbfc329d', '0x1e58279726', '0x1acf62ad2f', '0x1b395c700a', '0x1ab8083cca', '0x18b6376862', '0x19e3888dac', '0x18cd9e4b8c', '0x161e969f27', '0x17c7559ae1', '0x158c1eaf20', '0x183cabfc5d', '0x1985efb9fb', '0x173d5ecba3', '0x17daa378c5', '0x16f8013b42', '0x19d6594bb1', '0x1adc008ea9', '0x1b59386639', '0x18045bb6b0', '0x1b04d89e0e', '0x1acff95db6', '0x1ba689374c', '0x18e2b324a5', '0x16a1d1e1e5', '0x1549b3e2f9', '0x15bb037b9b', '0x154df870c1', '0x13c298ecb9', '0x114a45cf22', '0x137320634f', '0x15bbc25a6c', '0x14da227fa3', '0x149b064a3e', '0x129703abdd', '0x14a36bb985', '0x124c5629e9', '0x11a69e1136', '0x108aa0714a', '0x129b7f62be', '0x14b426e540', '0x1536e03d24', '0x13f1d2b629', '0x146687cf4f', '0x135ef1f2cd', '0x1586ec9554', '0x1509514774', '0x161369f4bd', '0x13f6b7894f', '0x1293a65623', '0x11a5e4c42f', '0x13da719101', '0x13868f7838', '0x15f329780f', '0x15697a8fd5', '0x181612cf37', '0x1752ebc57b', '0x15a6c2ed40', '0x13c559d00e', '0x1523b9064e', '0x17c8238b74', '0x14cf1f1a06', '0x1766925f4e', '0x1a53455866', '0x199fdded3e', '0x16cd0a3c00', '0x16a5e89bd0', '0x148b0cee90', '0x1476b38743', '0x1514a0d6b8', '0x162ba25fe5', '0x16d3d37ab5', '0x150d3c2030', '0x15c4e34241', '0x14f50d83f2', '0x132bfd0568', '0x156cccb4a8', '0x1819d78b16', '0x1719b684a0', '0x15a42fa89d', '0x17e9cb513c', '0x1a1723b6a8', '0x17908b5b4d', '0x19ca5dd215', '0x1a3273da5c', '0x1aee14a410', '0x1986870465', '0x179c3480b9', '0x17b760a576', '0x1512cf841e', '0x171289b6ab', '0x1430387fd6', '0x1212aac62e', '0x13ebc2e638', '0x1633cbb64e', '0x14b541fe44', '0x15144bd7ca', '0x145ce64a02', '0x120ef01ddb', '0x10ae49109e', '0x129746c3c2', '0x14e88b031c', '0x13b84d1a9d', '0x1258483ee9', '0x1421fe2860', '0x12285f4d9c', '0x11a398ee65', '0x11d60b405b', '0x106498cf70', '0x1271135ffb', '0x104f863f20', '0x115be1b28d', '0xf85c3ee5b', '0x10466f886f', '0xf9e85e3b3', '0xe26b62252', '0xfeb6fbc8d', '0x1045cbd055', '0xfd1884cd3', '0x1065c18bf4', '0x11ee3acae1', '0x100708ea79', '0x1207564058', '0x1447bc8f6d', '0x120e2d55be', '0x144f762a57', '0x16d94a4249', '0x158eca78e2', '0x15ecda0ed3', '0x13796d088e', '0x14b98aa212', '0x1561f08284', '0x13b8acf598', '0x162e95aeff', '0x18f40db1b4', '0x1c122e01e5', '0x19493f9bfd', '0x1b804e1aa7', '0x18e16cf586', '0x1bfd72771b', '0x1f7d0148b7', '0x1d167b8a3c', '0x1b1548acc9', '0x19dced1ad1', '0x1a41fdce44', '0x1849bb1f7e', '0x1a53299f5d', '0x18a384695b', '0x18ef7c6e36', '0x178a5127c7', '0x1a7b4415ea', '0x1d4d4be8c8', '0x1d499a15a8', '0x19de78fa13', '0x1d13b2fdc6', '0x20b5e2cb72', '0x1c9f267204', '0x1ba624a930', '0x183160140a', '0x18e2e50dd4', '0x165980b775', '0x138e50a087', '0x15cd8f3e5f', '0x1735a34714', '0x14a4ae7e36', '0x14807d6646', '0x1257d7a1f9', '0x14a2a7e928', '0x147ac6cf82', '0x12a2a972a5', '0x14f6cdb4bb', '0x16237f71ff', '0x1447a95ec3', '0x1623626657', '0x15a275a74f', '0x185650fba9', '0x17513cf177', '0x176018ca3f', '0x155090f09d', '0x15def00b07', '0x15f991d5cb', '0x14376e2453', '0x12f0ef58b3', '0x11a12d4c19', '0x13d4aad7c2', '0x136938a9be', '0x118348dc14', '0x13b31aa64a', '0x16289c0e07', '0x1363888c47', '0x15cfaaddf4', '0x1582149e25', '0x15c6c5b32b', '0x1386487f1e', '0x1383bb622f', '0x111343f5ea', '0x1176bbaa81', '0x10b6ccdfcb', '0xf51999906', '0x113b8a9f28', '0x132ae412da', '0x158fd9006b', '0x179aec91b6', '0x1a8dcefcae', '0x1b4bd16c0e', '0x181f8be714', '0x1a9a27a531', '0x1decd20c6e', '0x1bd295637b', '0x1f4c22f83a', '0x1c86be8a2a', '0x1c2b75e1f2', '0x1ab7c3735d', '0x17bbc95793', '0x19c4f7707a', '0x19a4b38758', '0x1ba413477f', '0x1f17b01aa3', '0x1c36dfaf43', '0x18b003b95b', '0x18b81954e5', '0x1642e5f2bb', '0x13dbc4f88d', '0x1656fb274b', '0x15d262f128', '0x1318169303', '0x1559976118', '0x172316b803', '0x16d058f517', '0x19a9e2738c', '0x1847f8b1d4', '0x153ef99b9a', '0x14b4efb68a', '0x174a2887e9', '0x1a336af97a', '0x1768d7032c', '0x191c442698', '0x1aa3f5a6b4', '0x1a0d896a23', '0x181f4387da', '0x16a06b6ca4', '0x16f1ca1e07', '0x19d000a518', '0x196b016d26', '0x17d2efca14', '0x17fcbc84b2', '0x1afc434179', '0x1d159a65d0', '0x19ab3dd058', '0x1881ebec44', '0x187e1b86f0', '0x15d39880ab', '0x17afb94145', '0x161c886d96', '0x167a64ab7d', '0x15995cdf2c', '0x136137bb62', '0x156b8ead85', '0x17d56c0251', '0x16bb1d9662', '0x1922d20b32', '0x1634baab7d', '0x15f50119d6', '0x14493138b7', '0x132006c061', '0x11e03b757e', '0x13f94241fd', '0x158cae4d45', '0x145ce1f04a', '0x12381e8745', '0x13df5ad5a2', '0x1329bd3bf0', '0x140e776ff2', '0x126b22459b', '0x14b7df575b', '0x1220e36c70', '0x13daf631bb', '0x140ac499d3', '0x130fc023ac', '0x1242209a87', '0x1489e5dc8d', '0x171ab9eac1', '0x1725fb8eae', '0x14413c1cd9', '0x16c90d416c', '0x161b1497bb', '0x18de57bab2', '0x1bf9f8f905', '0x19b9af8b0b', '0x180576ce0d', '0x168a5526a8', '0x1534b49537', '0x15701ac8e2', '0x17c41a7158', '0x16b1286224', '0x1986edeb60', '0x1cb7a4ca95', '0x196d18a92a', '0x16d102fad1', '0x19aa9cbe50', '0x1cdfdddc8a', '0x1af50df33c', '0x1a87d17156', '0x1da275f636', '0x1a2c9c0e97', '0x197955241f', '0x18257cb2f7', '0x17b52a9d82', '0x162d4a97e6', '0x172d748406', '0x16eadd2c95', '0x19c57a399b', '0x185775efaf', '0x15d95db7d4', '0x16547739a0', '0x191e3b3bef', '0x19daa76ee1', '0x192a095528', '0x16f6ac6491', '0x18a3599da1', '0x1bb72a43c5', '0x1d11f640c4', '0x1a467e299e', '0x1a2ed5d692', '0x1791b547cc', '0x167b85e750', '0x18ff6e5497', '0x1c1f2841e0', '0x1f58ab39fa', '0x1cf8174c55', '0x19da5ea1c7', '0x19adb209f1', '0x168a827dd4', '0x19104b13d0', '0x1c323c79fc', '0x1fb7dafe4b', '0x1c30ed27a5', '0x1a09d3d3fe', '0x1987c5a95f', '0x16af369530', '0x167a14ee7f', '0x1948ada1e1', '0x161f97eda5', '0x148a07d6c8', '0x171b38da3e', '0x147cbd8111', '0x11ed25d0ef', '0x12f98cf826', '0x135b52f4d5', '0x119ce52a8a', '0x12036b0513', '0x10e8d3f30c', '0x1011b3b433', '0x1213baae32', '0x1455757d8e', '0x16df0de5a7', '0x149c75302a', '0x136070af04', '0x15ca29561a', '0x153ec037b5', '0x1355e4dc71', '0x147988301d', '0x16b4fa4401', '0x198a7fb905', '0x18efeca9c0', '0x177a06daed', '0x18b32e18c3', '0x18c889acd9', '0x15af78773e', '0x132f67cb67', '0x1550137562', '0x14db7ca0ca', '0x1776156295', '0x19a63d1fa7', '0x18c77fb8cf', '0x1a8f69bffd', '0x1a05956088', '0x1d0b2d403c', '0x1af5942f55', '0x1a33e41cf7', '0x195e13aa31', '0x1b4c5772ed', '0x1eb561b253', '0x1d6cf38509', '0x1afb7d1d42', '0x1af35884d9', '0x1c7605f507', '0x1a7ca44cae', '0x1dcbe83354', '0x1c13f579c8', '0x18c9f111d3', '0x18971ed56f', '0x184d9e1b5e', '0x1ab8e30404', '0x182aa3fd44', '0x15b5e89f7b', '0x134b93ae33', '0x15b4b19326', '0x186a9762ca', '0x1942b6840e', '0x17cfb8264e', '0x195f44afd9', '0x16ebfb0de4', '0x159a865f93', '0x1704f501dd', '0x14d1b077ad', '0x151d6cfa1b', '0x13a0a7880f', '0x11c1a49aa4', '0x13f9561417', '0x13f81a6b61', '0x128321b30b', '0x10c14c7e15', '0x12d9617b5a', '0x1211d56136', '0x1453f89264', '0x16de20ed32', '0x16382ec5fe', '0x18ff048171', '0x1c1e12f2f0', '0x1941c24a2a', '0x17fc475580', '0x173d3adf24', '0x159509ec89', '0x1846ffd814', '0x170494108d', '0x146c5f1809', '0x14253196a5', '0x14880f1289', '0x150d8dc2d6', '0x17237a16e5', '0x16b290f9c2', '0x14bb3ba738', '0x13b5cc3943', '0x12084047d7', '0x130931ff65', '0x12035e4349', '0x105c1678ab', '0xeeff36732', '0x10cd87447d', '0xfcf3fc114', '0x11972b78d1', '0x128374c639', '0x146d91ee93', '0x1433bf7736', '0x1318fb0c08', '0x1165761500', '0x139203680a', '0x160377d5f3', '0x18c30d04a7', '0x169c8adbcc', '0x1447ae7ff9', '0x16cff22aef', '0x16b41d79c7', '0x193a52a9ec', '0x1c611328e0', '0x1fec16c6d0', '0x226738706e', '0x26b2b5dfff', '0x2742f9c4dd', '0x27dd45a07d', '0x2354a568a6', '0x27bd17db14', '0x291e2375da', '0x280d5ea0c1', '0x2709bab4bb', '0x2beaa4d5af', '0x2d9a2b6001', '0x2843c38b08', '0x278aa341dc', '0x27db868286', '0x25658ac00d', '0x241ef0591a', '0x21fa88c16b', '0x2638791788', '0x217169f497', '0x221bb87953', '0x1e2953c026', '0x21ee07c8c0', '0x262a454f15', '0x22ac6d769a', '0x2701e8a533', '0x2be0a077ef', '0x2dd3aede4d', '0x2874f2046d', '0x2d82289c2a', '0x28f0e6fd31', '0x2e0ea4eb35', '0x29b35ad97c', '0x2c52a9b2a6', '0x277e2ec5b6', '0x23a15a7e1a', '0x281559bdb5', '0x2d1744a1b5', '0x32b3e38e9e', '0x3908e2f938', '0x3a4a9c1496', '0x4192936944', '0x49c2bba5d0', '0x4fc2a6f0dc', '0x5481921774', '0x5913f22709', '0x64267ecf79', '0x70a7b817f4', '0x665bca5d7e', '0x5994ea71f6', '0x64c5a62f70', '0x65c47b60c8', '0x6d7be78ef5', '0x7b28706643', '0x6e762019ea', '0x65e69c664e', '0x5c547f423c', '0x5cb54e120e', '0x528c122c38', '0x5cdb9b2aea', '0x5f123fe04d', '0x5435261625', '0x4c73d791d8', '0x47385da544', '0x401fa9cee4', '0x3dd4e0c73c', '0x361a44ae55', '0x3a05f89cd4', '0x34492f9372', '0x2f4ed9b3a5', '0x32484603ac', '0x3891318c80', '0x33595235fa', '0x31163089e7', '0x2c9441628c', '0x2841dac80d', '0x2d4978c137', '0x32e2f83004', '0x31e4273bc8', '0x2f59faa895', '0x2d12c5baf7', '0x2a450e56a4', '0x2942ca3a09', '0x24785adb83', '0x29069a3308', '0x25bd1259bc', '0x24676ea2c0', '0x2457591081', '0x1feab1ca14', '0x23e04268ae', '0x224b8780d7', '0x1ff7359f96', '0x23850f8bcd', '0x209e82a377', '0x1ce8023ab9', '0x20814ef07a', '0x1d58ec1b4f', '0x1b4b095a9b', '0x1eb3efba94', '0x1e41a60299', '0x1b1dd8081b', '0x1dcff99f24', '0x1aacb97eaf', '0x1d184ce94b', '0x1abb690981', '0x18140efaf0', '0x1a38529ca9', '0x1a8748a47c', '0x1a51950c6a', '0x1be3edc4a3', '0x1e7ec57788', '0x1bd3f66570', '0x1f4dc64caa', '0x23376dc4ce', '0x276ece7001', '0x2931db6311', '0x2625df5293', '0x2651bb6231', '0x21c4f8d9aa', '0x204fa53125', '0x2459545203', '0x264b4ba8e9', '0x2181e233cc', '0x2227d1d708', '0x1e74d98cec', '0x1ed3fc5e49', '0x1de7c035bf', '0x1cc47f1a28', '0x1ac4490f54', '0x1e1bbc3803', '0x1c81f2f99f', '0x201105613d', '0x238fd4a087', '0x1fc69e88c5', '0x1c9c7d5301', '0x1c70c91190', '0x1ffe57fac7', '0x23fd19af5c', '0x244181b0cb', '0x20b3d370f4', '0x240d561eeb', '0x1fb13cf434', '0x1f29913bac', '0x1c60a6193b', '0x19aee03a90', '0x195f73a659', '0x18a29631f7', '0x17057e0b16', '0x190cc9bdfc', '0x1648d0b303', '0x165e128200', '0x157d975607', '0x13d5b62007', '0x145830a083', '0x1275b5ea94', '0x14c44947a2', '0x122bc01eae', '0x1470cb1539', '0x15c4becda7', '0x13f9acf5b8', '0x13ce718374', '0x1647cf73cc', '0x172f69cf25', '0x1a14d34b27', '0x1cdd1cd797', '0x1b6bfbb232', '0x18dc91d0f2', '0x1a4a0b7d2c', '0x1816849540', '0x1764228a4f', '0x17e75c4749', '0x16ea779c54', '0x167fc28c41', '0x15883985ca', '0x1670ad3220', '0x15788f8e24', '0x13b680499a', '0x149d194043', '0x13019c9728', '0x1533778b0e', '0x17d9d54dad', '0x19bdfe5167', '0x17de4ee5b1', '0x16b35cadbc', '0x19774127d2', '0x17cca021dc', '0x1556f61127', '0x143949924e', '0x12527204b3', '0x144f03c576', '0x148f9be710', '0x12af979984', '0x127245b684', '0x10f21ae0c2', '0x13101de0b2', '0x1308bb4725', '0x12d836e367', '0x1155754226', '0x11f22e6667', '0x143024aab3', '0x16b5e4ca9c', '0x193fbe1ce5', '0x1bd06e9cc9', '0x1877d20e10', '0x159bad647e', '0x184eb27467', '0x188f9343d2', '0x15ce975132', '0x17ff2b5f97', '0x157c3d1123', '0x156fde1d25', '0x1527356a52', '0x141763a97a', '0x1699d6a72c', '0x16ab329b49', '0x144bb9d892', '0x1698ef12e8', '0x16925f791a', '0x191d8c01cb', '0x18f2ec4585', '0x16480276e3', '0x154f225cb3', '0x17f8fde1f2', '0x189e96560c', '0x169866e9d3', '0x18f5073fed', '0x188b98af32', '0x17dc6163f7', '0x1ad722e9db', '0x1d07676019', '0x19667a7416', '0x1704dc0080', '0x16c37d11fd', '0x14b04777fa', '0x13d3e503e9', '0x15e6cf073c', '0x16f8298c09', '0x14464ef396', '0x16cda86795', '0x195f72320d', '0x17662eba30', '0x1a5287d4af', '0x1a0e69166e', '0x1782a26861', '0x1a30690017', '0x17fbaae4ad', '0x190494477a', '0x190bf8754b', '0x169c5f0a4f', '0x196fa52829', '0x1c9d77a18f', '0x1967a4beec', '0x1c947f5b5e', '0x1c8b12c5aa', '0x19dfa4c931', '0x1cad70f7f1', '0x19d5b9efad', '0x1b2216c2fa', '0x18bb07a4bc', '0x17dc2d5570', '0x159c960a96', '0x16c580594d', '0x15b23edcc9', '0x15406d3086', '0x17e820c90f', '0x17db4b0127', '0x1a09d91d52', '0x16f2745439', '0x162d9eb761', '0x15efc72af3', '0x135d3a5664', '0x12fbead0de', '0x11d1e67e54', '0x140c1d367f', '0x118e22fd85', '0x1355b1029d', '0x1188388bb3', '0x13b8f4418c', '0x15741e065e', '0x1483062acb', '0x14ec47aa84', '0x1788a7c1a8', '0x167d9093b4', '0x14f372d2c8'], 'gasUsedRatio': [0.23305321960455436, 0.38536927863555037, 0.7567350774160527, 0, 0.9997943666666667, 0.2761272048822342, 0.25789260736643355, 0.1443864, 0.7761427632583449, 0.9998652965394053, 0.9705378746187137, 0.16978427797178777, 0.8879485016552369, 0.13360496666666666, 0, 0.04232526666666667, 0.5442404, 0.37221056971200955, 0.9997379, 0.7231899333333334, 0.3879816307290736, 0.21267289849470525, 0.4672202099405362, 0.27156019038515555, 0.40175327288168844, 0.8501498695016817, 0.049975929553827535, 0, 0.9994050248173219, 0.9994731372119029, 0, 0.9713363988594637, 0.998169672396517, 0.5266680257693347, 0.059339868013720154, 0.14721120610755484, 0.9995826448036821, 0.15906907549427993, 0.9997736245554234, 0.13923098267596498, 0.40841232927908205, 0.5663944603399966, 0.7650913964188893, 0.06818849455219574, 0.16573820161032804, 0.2575021859871828, 0.9999913163495604, 0.999693132224443, 0.2089937923862748, 0.4816297901131825, 0.6955378137341645, 0.10528477563908997, 0.7628940725651491, 0.03159328990348435, 0.7482935476457515, 0.1988365272739157, 0.4433582971252128, 0.9994314666666667, 0.6256061333333334, 0.98012247706781, 0.6959650060995058, 0.2356038615879068, 0.25078014314893865, 0.24001286191743335, 0.9998522662480877, 0.2583585, 0.5822672506369136, 0.2446235882191096, 0.9997517735238465, 0.21604116172217674, 0.8163639972015286, 0.734939113195881, 0.24601841466189836, 0.9994382017405826, 0.3004693167378648, 0.46452732016793913, 0.8338656133617721, 0.7034876739256892, 0.11762495487019482, 0.10278539856729157, 0.7775443030421919, 0.1114519486083371, 0.9995599397261707, 0.20467272207264514, 0.11493589545552844, 0.99953898096609, 0.8195535108032279, 0.8294183333333334, 0.9993282440302956, 0.6832512377011551, 0.2762383666666667, 0.8545506666666667, 0.1568485, 0.279857, 0.16416523333333333, 0.6132668666666666, 0.08848626666666666, 0.617164794755412, 0.15958944895015234, 0.948454619288576, 0.6342641276831639, 0.20297364854879102, 0.16894848431898837, 0.27847392808269994, 0.038767955435011756, 0.999398671722099, 0.21668994998350774, 0.716893063266548, 0.9996872648840766, 0.41190673333333333, 0.9998691722466989, 0.5968402570509066, 0.14699586666666667, 0.9997572963332028, 0.9628097319557498, 0.8666902666666667, 0, 0.1384642770331896, 0.3593004116903136, 0.6277923127259458, 0.09192910727748317, 0, 0.999380798224955, 0.9998941963794609, 0.9744244348084214, 0.8010167089013848, 0.013176927743843572, 0.19536592466308067, 0.9360861885110318, 0.10084431181430586, 0.5086972718274585, 0.17567644414311726, 0.9999358077840577, 0, 0.999723358668242, 0.23064328267395912, 0.2058671919592297, 0.6305880428876913, 0.441477457358536, 0.061475852662124485, 0.5726411348029368, 0.2855798780193208, 0.9995654654354854, 0.5113877454651654, 0.4519850842099867, 0.9998819, 0.828293, 0.2622271314605379, 0.39907127246652097, 0.1819661264241712, 0.9999184331810753, 0.6907238812212575, 0.9999202664434127, 0.9811296202370982, 0.15015256157086282, 0.33242452912189674, 0.5160055428888547, 0.09280551079492648, 0.9993222497843689, 0.5247249879013713, 0.11120420219142409, 0.7399227631144955, 0.23391763333333335, 0.044496150490954414, 0.00987404145385402, 0.9995705802565147, 0.482978907238467, 0.23330593422991597, 0.4910547713213362, 0.18930503272912055, 0.9308213273857177, 0.09772414663840436, 0.28736031418755686, 0.9720190640033473, 0.9994389699089417, 0.8239920594158453, 0.977684487165631, 0.22855276442388056, 0.9994148906147039, 0.12916203477300145, 0.8898837735679669, 0.5682383614352989, 0.33185658332646384, 0.06134236520920241, 0.999789955855327, 0.476554811466171, 0.46100404568959225, 0.5957290130831318, 0.15282545017542323, 0.43918093840783823, 0.12616196666666665, 0.964102746331793, 0.15638567526382668, 0.12733316392329622, 0.439342834751386, 0.9659771333333333, 0.9997668056190203, 0.5733376351151261, 0.7291200333333333, 0.46542066666666665, 0.029982144230507757, 0.9997071663933553, 0.11862606666666667, 0.3850827666666667, 0.052488188048963144, 0.8858718141727194, 0.8438693910845741, 0.3425280572958989, 0.39134918193914187, 0.6274820390890075, 0.10509290331708443, 0.5519816687152249, 0.9324624735057936, 0.37118128371375964, 0.7472135115437848, 0.4027908171325265, 0.9732391465689585, 0.12377990882860894, 0.5916721270919558, 0.3293485357388936, 0.025339050114416638, 0.6078549616665978, 0.33399003203771, 0.8415858108211012, 0.27908365148668435, 0.345118914690327, 0.5794400798092006, 0.07529248935217069, 0.4325129310877477, 0.9581393545108685, 0.4019738434484926, 0.1865895186579389, 0.9993284551395543, 0.11002728253902792, 0.8616568867796416, 0.08532149151402273, 0.9995726650570383, 0.9999230082257985, 0.93751210422396, 0.0833118817287483, 0.23251445091522185, 0.9208186666666667, 0.14667723333333332, 0.9794961446519193, 0.9998741332158577, 0.4027558002777181, 0.4448564970654612, 0.227772, 0.6618690333333334, 0.5295481, 0.9891265179552168, 0.09430063969339376, 0.1120364713543115, 0.019205533333333333, 0.9997278675960408, 0.9644808335154447, 0.06480430855799486, 0.21043831937106502, 0.4899461423766891, 0.2573576667714177, 0.999413554672275, 0.07432191818100004, 0.8029348630165912, 0.3319675557849533, 0.24256565827202264, 0.46707774754113707, 0.03336688708954875, 0.9696683289130338, 0.9585519138591865, 0.8335241450619796, 0.9768963165531122, 0.0890734494774452, 0.9999100700514182, 0.9998891834681908, 0.3930593871396955, 0.43567911464423353, 0.23461231135209357, 0.07419634384933681, 0.9996415175079064, 0.9999475286776859, 0.9824488165703519, 0.0972698954667455, 0.3810701319194175, 0.2366209773938393, 0.9995926110472881, 0.5820650396789989, 0.0341137061132247, 0.561762889590036, 0.4257728761820565, 0.19952436531903506, 0.6905195488114694, 0.3322663515365908, 0.0671992, 0.8000366357748341, 0.12465374967683303, 0.9993016666666666, 0.7122688333333334, 0.1421354, 0.6057377362327646, 0.35154926144597737, 0.9995533333333333, 0.6582337652717879, 0.5728435679873302, 0.0127352, 0.999962963834184, 0.46942417146256005, 0.6250365315404787, 0.1000098200183307, 0.1377918, 0.26242465767822276, 0.5831685171567244, 0.4215941990224724, 0.2100291536036546, 0, 0.9996111401808754, 0.969666858338738, 0.33778993708045146, 0.4527099313968787, 0.10871444135758385, 0.9407689666666667, 0.046442166666666666, 0.3584908337008911, 0.2486038736504112, 0.9995678776147725, 0.9506388728805252, 0.5986567924724217, 0.26058900500218085, 0.5914308333333334, 0.2981167109682605, 0.9452390822231435, 0.4088307714904138, 0.6976458356055598, 0.11730146666666667, 0.2220999, 0.30002216666666665, 0.9998347, 0.433982, 0.9966242333333334, 0.4019901899128834, 0.9995693329170218, 0.37340242175385036, 0.2131701716899929, 0.15258428846783692, 0.7768999031808186, 0.9999635643161057, 0, 0.9981679333333333, 0.9999183, 0.3935172637253056, 0.05924293333333333, 0.47318409760464425, 0.12823966571011053, 0.4845225045974939, 0.6205848228451774, 0.7068002353554736, 0.6185360488362608, 0.18884000452884483, 0.6363108999178129, 0.35082423218888936, 0.15922837629746653, 0.9700999473904852, 0.9995933346657506, 0.33394775848431546, 0.24734871504912054, 0.9199194624013424, 0.8641712077346367, 0.11276739710450662, 0.8778320035680459, 0.5630598334792908, 0.6119089869685279, 0.29138438496666913, 0.1998575163311291, 0.5179824709642509, 0.05425804766895723, 0.879421908117758, 0, 0.08085875542571766, 0.9090151550118829, 0.9580876538423296, 0.2307869654387362, 0.5717101140915106, 0.3640573565381543, 0.04730636666666667, 0.19486715444298025, 0.9580405924391474, 0.9986191502654128, 0.2726375368640801, 0.22107925863025787, 0.8898493090338765, 0.10758926533720592, 0.38574503293618956, 0.5446864840142012, 0.17635261840037755, 0.9999086104107857, 0.03777374546239519, 0.7570764333333333, 0.07684176666666667, 0.6939422986786736, 0.3387949, 0.12404963220082256, 0.9998741791830157, 0.5886871160953451, 0.3883635, 0.646410580068563, 0.8739841781847055, 0.07545058376394313, 0.9994372008344697, 0.9995515207841617, 0.061179989017163275, 0.9995779644346109, 0.9999198320417756, 0.2739902362647584, 0.5681749921436738, 0.05286481769980142, 0.7568411440877367, 0.626960051047278, 0.18924473619341922, 0.9990687666666667, 0.9997504333333334, 0.9997617326680497, 0.10316536639318752, 0.8504000333333334, 0.118835, 0.9999015627906016, 0.9999313009024133, 0.19506410846006025, 0.22432692285300143, 0.31979234104416304, 0.5610580666666667, 0.19993386875617375, 0.8354481838848221, 0.24379881787364352, 0.548176689073761, 0.27619185482846464, 0.9997738715306798, 0.9260228559710448, 0.4980298724271828, 0.03311507241432852, 0.9960241395080962, 0.9998518661037579, 0, 0.3640634, 0, 0.6146511734005561, 0.09227582988118119, 0, 0.9596151874994494, 0.7580484681050617, 0.05772720276481443, 0.47260628043783726, 0.07881406405412773, 0.9998579659896378, 0.4698036, 0.13979796666666666, 0.9998397666666666, 0.7241142308797874, 0.16416486075251296, 0.8665283358973952, 0.4090057771109765, 0.9996745, 0.3323819956479165, 0.5099569, 0.14737825180378028, 0.6043671, 0.5190264666666666, 0.17993326666666667, 0.24765746666666666, 0.22302535092184184, 0.999417966123435, 0.4153413, 0.10884275161361737, 0.999472632841124, 0.9992999824461757, 0, 0.9997521, 0.4444186585132951, 0.5499024315723505, 0.08635865425415326, 0.4979583207329419, 0, 0.5910195, 0.32827623333333333, 0.16607433825797557, 0.9997363330872442, 0.9491395333333333, 0.9996701666666666, 0.879051326954104, 0.9996815663694619, 0.6118063333333333, 0.0350356543501937, 0.9110459666666667, 0.9996454, 0.21896641263139877, 0.9995675995820129, 0.14584113333333334, 0.45000026666666665, 0.2938298248239406, 0.0532143830000908, 0.8431193808360358, 0.4804362794955977, 0.8115901264463818, 0.9994930093571837, 0.12972711708089846, 0, 0.5051167, 0.10228136666666666, 0.0682472, 0.9997958, 0.40726, 0, 0.9725799401606088, 0.8348200718592322, 0.4441229, 0.9996531720108647, 0.284524, 0, 0.3984818508606988, 0.998947278350492, 0.9999931266148284, 0.07385808062673337, 0.790631013070889, 0.7437318854374781, 0.4117749613869926, 0.20356383014288484, 0.2520143733943625, 0.5561905887740478, 0.9999926857081175, 0.43886384195134576, 0.24915104034046293, 0.5274144329069744, 0.9999571830451538, 0.8111291045125401, 0.030266847640761964, 0.31901752462206057, 0.49756831759092174, 0.06459323135088704, 0.8408463490646557, 0.23403093333333333, 0.5663261174536935, 0.3435765843978502, 0.08899779237545392, 0.9211382168292787, 0.9507034666666667, 0.31492423333333336, 0.9232292, 0.033729770454181844, 0.4551606581499476, 0.19556184971148313, 0.27111118177791205, 0.23873170843686797, 0.9694049516286507, 0.8155889904453701, 0.27972385849252146, 0.07891756540809436, 0.8629714833068983, 0.3572023121557338, 0.6864977708777771, 0.17331938138953337, 0.9994458844790542, 0, 0.8810247413197976, 0.537620803551728, 0.3043042061145417, 0.3314477885162843, 0.999576032132091, 0.9996889286908313, 0.5076124453402108, 0, 0.9997396987765842, 0.38069960912313827, 0.9999131661775028, 0.9998975994289858, 0.17814071273999776, 0.2350486096214522, 0.2533889421966979, 0.26318368151540056, 0.5437667705586574, 0.934393046003879, 0.3192367674922811, 0.9997431, 0.9999070666666666, 0.041573329689775396, 0.08944550358603351, 0.9996399146952841, 0.9999560332497965, 0.23440421631744368, 0.4366842518281886, 0.9679999268617041, 0.03293045846907552, 0.3929786703238518, 0.2915484466626475, 0.42731803203029584, 0.2417272452067539, 0.6804830804822113, 0.4551079925761679, 0.9981288025537519, 0.278086839080669, 0.09040447246017842, 0.5880325978599764, 0.9994454229963441, 0.6172104753699326, 0.393260726976024, 0.15019567456918614, 0.7916825503236796, 0.9996171307808719, 0.6955116333333333, 0.1154406, 0.48593172100776927, 0.1006900640003952, 0.31557936831321387, 0.9475060669281938, 0.9998733666666667, 0.9586712091023551, 0.19664650041190407, 0.06973486350458027, 0.47299986536641087, 0.01127292943415838, 0.9476439849912908, 0.9999415902050037, 0.9996340806241582, 0.05519944083723096, 0.194552, 0.4219569590295077, 0.05410997092048707, 0.4634031347952361, 0.9995386, 0, 0.213565, 0.9999525203027423, 0.046605810983427046, 0, 0.7339457611636129, 0.5805125, 0.13963698885294823, 0.5909516515548748, 0.2548779, 0.30121550360593785, 0.999819633164991, 0.9993634666666666, 0.9991647, 0.10471995904000256, 0.2604320097365424, 0.9981181333333333, 0.40003113333333334, 0.14046386296218258, 0.7356721143453431, 0.9360905306240006, 0.9992424318939539, 0.4054373465665474, 0.265725485407637, 0.7084205367930505, 0.5135107513408551, 0, 0.03881400187282882, 0.9435964966011319, 0.41452525128228673, 0.9993713321388644, 0.8730585666666667, 0.3643120492838743, 0.787484327901517, 0.41891677718580655, 0.9645100992358552, 0.2129333, 0.3877429023891503, 0.3724998666666667, 0.8044403666666666, 0.9997122476568298, 0.3328892217929144, 0.16787916161520564, 0.49528456666666665, 0.7241820971512015, 0.22254742741480887, 0.9998141850387359, 0.2692954783280755, 0.031429033333333335, 0.4679661355980782, 0.4532953564089993, 0.8981403, 0.11744947725212997, 0.09349058917177798, 0.05498958915612523, 0.9997324994828324, 0.9995039834012432, 0.6383047177503481, 0.2705210540351247, 0.76218331377548, 0.11369563333333334, 0.2699680237752165, 0.7621321995289605, 0.11766717259178529, 0.556841110689176, 0.2182303165417044, 0.118671136234886, 0.9995493586719261, 0.4990354130333891, 0.20816585805178622, 0.12032466833047635, 0.9999250264334374, 0.3345852626498217, 0.9999206554037157, 0.999739631614902, 0.38661273333333335, 0.9998678333333333, 0.9994869333333334, 0.09304943333333333, 0.2986437077527128, 0.3755439666666667, 0.21479253333333334, 0.9995155, 0.29248846666666667, 0.049123066666666666, 0.44554497466776305, 0.5766813715692801, 0.6015931171658218, 0.8962652063617186, 0.4237538199456408, 0.15350482981352348, 0.30295926666666667, 0.1594816671813359, 0.7226431809988552, 0.2850879574220552, 0.1328374436426877, 0.15221646733699135, 0.9995645491435415, 0.2635451072932461, 0.9505981894204376, 0.7098844567290801, 0.9136456550442891, 0.45577293478847675, 0.2812984875904666, 0.14367263341334233, 0.9998826900060844, 0.9993637852169411, 0.9993960986649882, 0.1526240556506061, 0.08755711718867068, 0.9994638518661415, 0.4809376125061268, 0.9447315337401757, 0.9996664893136001, 0.9993831930115247, 0.8108784041294188, 0.999358447047083, 0.5582494913022902, 0.5614054906488902, 0.04508773333333333, 0.9990563666666666, 0.6388153333333333, 0.396346068064535, 0.3987102334940937, 0.9998792844287303, 0.6535316968279472, 0.03181916666666667, 0.4281604987270069, 0.5319630940905377, 0.25303303135371386, 0.3635392573912557, 0.2627735333333333, 0.9993663145394811, 0, 0.5795694333333333, 0.0371389, 0.9997602992655662, 0.9993030326828305, 0.13405593073523164, 0.9999674332725421, 0.9993908936553471, 0.6777166666666666, 0.03127349476569463, 0.9994574, 0.098544061609495, 0.9998584570320237, 0.12163582830096992, 0.7515355945842964, 0.0641079, 0.10877888925202127, 0.9999245193233538, 0.9997071429049017, 0.9978211684975299, 0.9995412903998175, 0.5881379358625137, 0.9996354323271132, 0.9994841582303965, 0.825359494090707, 0.7380016908404482, 0.7163998031268083, 0.9972033272843852, 0.9994401922756496, 0.13440300535064234, 0.0007020546800302218, 0.9996718925394629, 0.5395125590878115, 0.8032989193117044, 0.999578453818388, 0.08763405206284607, 0.190005694682763, 0.12431090221661541, 0.5163827758718705, 0.06158925323704269, 0.9996263663378959, 0.5953479356529043, 0.0429251, 0.1316197933949168, 0.22624421116126375, 0.10143351116159305, 0.35701819976730625, 0, 0.7898724666666667, 0.10447336666666666, 0.11918034627480402, 0.751484601385628, 0.9999645012980171, 0.1310048822426096, 0.3237756153954362, 0.13268604261045405, 0.11220608716136002, 0.999761366829348, 0.9945879273339975, 0.4217573274963449, 0.296377591214575, 0.30755394997323227, 0.25119835111780525, 0.404532030408997, 0.035563978035665106, 0.9996585336450504, 0.17949632591384118, 0.35855005649868615, 0.49309646231303617, 0.013012550063184922, 0.9961952359625015, 0.3237288029274509, 0.22831351700177088, 0.9447405140347619, 0.17335512541614326, 0.04469771717214385, 0.997999223862993, 0.11141395642117234, 0.22001001339007586, 0.9997253635946105, 0.44183771612892647, 0.08490003188801577, 0.8976644957392013, 0.0790078, 0.8629232887418768, 0.17515266666666668, 0.10291623333333333, 0.855781270410556, 0.5470543866330001, 0.4683703163719097, 0.7388670038473073, 0.873585, 0.15014531690195476, 0.999616399641973, 0.9999662002963764, 0.9789023963801304, 0.6787257986547371, 0.20415504548704683, 0.5179644426020152, 0.025059441088445735, 0.32726292828217224, 0.9998686767364312, 0.7140563325016299, 0, 0.5773785666666666, 0.0667935, 0.5488073895840712, 0.38026586759033865, 0.3478245522218225, 0.22179436666666666, 0.9993661143439903, 0.2873377348485525, 0.9993577666666666, 0.9360128, 0.07415230973045178, 0.10163852819595964, 0.47613258786246304, 0.9997033661129501, 0.9994938599676135, 0.5296995666666666, 0.10795991048074888, 0.909712485460493, 0.016282316057941608, 0.4331114, 0.1425384, 0.12020301157413547, 0.4516802215682068, 0.38369396666666666, 0.23799180100631734, 0.8524536333333333, 0.05839936030867476, 0.5149046472443374, 0.34318664206350763, 0.1918129913842506, 0.6027853, 0.12944566666666665, 0.9998830333333333, 0, 0.9996337, 0.7598627392982581, 0.17048937328928557, 0.4661830624293766, 0.9996540911065979, 0.662419815326188, 0.9996531893454583, 0.9267221382734201, 0.3001765505002264, 0.12654406666666668, 0.7296936124792527, 0.16506792359137862, 0.38428933001044085, 0.5876570165483315, 0.3346930303275391, 0.42724255103664055, 0.3280933532137389, 0.6686809672623968, 0.3272377694336138, 0.1724790886907513, 0.6827781333333334, 0.18809606666666667, 0.9618989610020852, 0.9999505332871644, 0.8171788, 0.20884023333333335, 0.30430043333333334, 0.9872471802048033, 0.2382344890188564, 0.0866056, 0.2908286, 0.12386325246603308, 0.9337066576428293, 0.5496973107980614, 0.13521848621085267, 0.4487248346828384, 0.17459113027177, 0.9997681545749387, 0.493946722096753, 0.4601725109514755, 0.17932074808550938, 0.6412729398629476, 0.9997295042797707, 0.9997930268052854, 0.9471006478961761, 0.9063834154625872, 0.018786757203485074, 0.0324622030122052, 0.9996819118102164, 0.5417042089886696, 0.051506490037374064, 0.9016617634276315, 0.08136861290099565, 0.4910033643583549, 0.44704026844987543, 0.2992178106164574, 0.9996309985977947, 0.5120011431547201, 0.08128483333333333, 0.9536096665060098, 0.4954634290992005, 0.9507662773183269, 0.4734824445475347, 0.07230527681617027, 0.3254733555078406, 0.9999748666666667, 0.6079326795949578, 0.17112855434665497, 0.9181080867178305, 0.43399189125126003, 0.3884613333333333, 0.9994815937763226, 0.826157071079933, 0, 0.12499285552341861, 0.4556270919186191, 0.1353768, 0.33355514993724705, 0.9183807238220089, 0.6950154327776299, 0.03072459171005758, 0.9988909142483069, 0.9507206587325551, 0.18885058730351884, 0.9997163655888559, 0.45956381560988957, 0.10915383333333334, 0.9557683077525203, 0.16306201885788427, 0.6725902333333333, 0.504616257775718, 0.11097806992436368, 0.9998116821898757, 0.9999180065334264, 0.05125114284579535, 0.9999375780316353, 0.49484772086797, 0.12588050748324486, 0.9334759666666667, 0.10350293728492539, 0.7010138209462329, 0.14580985274373348, 0.3591996705060516, 0.12306856666666667, 0.7146665051756373, 0.31112909038715103, 0.41803096666666667, 0.9997413666666667, 0.49161123333333334, 0.8658282479507906, 0.025105474226054206, 0.3659726260428694, 0.45643103388563105, 0.030928666666666667, 0.4214798, 0.25471442863956656, 0.9999791333138578, 0.00275662775318689, 0.9054658748535891, 0.12707124711639128, 0.99973765406019, 0.8510930371143474, 0.32440782193612927, 0.5801792970922963, 0.9991339625962908, 0.3226683309160158, 0.22619241509035218], 'oldestBlock': '0xd0ff16'}}), - (('0x400', '0xd0ff14', []), {'jsonrpc': '2.0', 'id': 0, 'result': {'baseFeePerGas': ['0x1c3951214c', '0x1d43ae1772', '0x1b87b4cdf8', '0x1d74085c39', '0x1b0894ecfb', '0x1aab5b2e3e', '0x1e0009d939', '0x1cef2a1acc', '0x1a27b55ada', '0x1aba6fb66d', '0x17d59d3bde', '0x186987490a', '0x15c383c2e4', '0x16065cc0f3', '0x15732616fd', '0x131c863d38', '0x154ecad4fd', '0x169d6dd2d5', '0x159d9ef0c3', '0x163699c876', '0x14cb255d5a', '0x12a8134d61', '0x14ef87347b', '0x176b51f0ca', '0x155270d027', '0x136788c588', '0x1218d3ac0b', '0x11dca96b38', '0x1078bfdc95', '0x11f060006d', '0xfd0b346e2', '0xe523594ed', '0x101c2283d2', '0x11ec11f82c', '0x10e08e6058', '0x11fec5aa65', '0x1021ee519f', '0x107cf58740', '0xea0aefd68', '0x1043031ea6', '0x10b3d89037', '0x12ca2f4d73', '0x14f5490161', '0x130fd73e1f', '0x147a16b3cf', '0x12dfd25c59', '0x12ef1fbd2a', '0x10bd0aa81c', '0xf62f097e9', '0x114ead5ed6', '0x1372fe2107', '0x1356fa6cd5', '0x1162127104', '0xfcba148b5', '0x10198f5167', '0xe5f452be4', '0x102aaaa967', '0xf8c320f88', '0x117bb389e9', '0x10d8e960d9', '0xf88a7b5e7', '0x10a2e2d897', '0xef16b17b0', '0xfd0a53cff', '0xef78e41ed', '0xe03987ad4', '0xf62a9328c', '0xd76540c3b', '0xc3965936c', '0xda5c8a708', '0xf5a123d10', '0x11384b01f6', '0xf8ff2d485', '0xe16becd2b', '0xfd99359c9', '0x1165ec9013', '0x106e3a5c2c', '0xf47dd1de1', '0xe04f2457f', '0xfc5640687', '0x11bd71c36e', '0x13f475b542', '0x127b9e3c73', '0x10437c95c0', '0xe99827de0', '0x106c2f1b11', '0x12790b1843', '0x1354a3d552', '0x11cf1e1003', '0x11e448c006', '0xfe4f2ed81', '0xe764aed18', '0xd8543ff70', '0xf083b6d59', '0x10e8a31f41', '0x1305402ddc', '0x12c3b23ec3', '0x117e233d71', '0x120d5fc558', '0x107d8a84de', '0x12616bbde3', '0x10ffed1181', '0xf1aabcf6f', '0xd37565582', '0xeddcfae5c', '0xfa68a4d42', '0x119ad59dc9', '0x1098fb65fc', '0xf6fdd7410', '0xfe01b7a9a', '0x1165ea706f', '0x1162b0dff6', '0xf5602261d', '0x114057ce45', '0x133a5d9f7b', '0x145509e235', '0x12439e22f6', '0x148bfb3384', '0x13043f8a3e', '0x11ca38db28', '0x132333d603', '0x1494be5b75', '0x14b73b33cf', '0x1411655d05', '0x130fa2fdfc', '0x15466989bc', '0x17ef123f40', '0x1672d1a39e', '0x1702849fbb', '0x1455346988', '0x1386882b1c', '0x11c3e4df0c', '0x1124f72ca6', '0x133c4fdb99', '0x1286a9a281', '0x126e0e270a', '0x11f357badf', '0x1271a0cd3a', '0x10f2523ab5', '0xfd12b0a8c', '0xfb7f8bb9f', '0xe36722a58', '0xf57aec005', '0xe282aee94', '0xd1d944d2c', '0xe8d27cb0e', '0xeab295e6f', '0xd101fb777', '0xeb1f2c8ae', '0xd3e1d9488', '0xb9659e1f7', '0xd03e34787', '0xea404dce5', '0xf56cbfc1b', '0xef6c4ea79', '0x10d4f7aa43', '0x117c36f8d7', '0x1184510fb4', '0xf595cd717', '0x10703792ac', '0x127d7cc439', '0x10d00b7eeb', '0x12bcd4fe08', '0x1198cd3787', '0x1278d07d74', '0x10d616f023', '0xebb54121f', '0xe5574b09d', '0x101fccf46d', '0x116b20c359', '0x11cdb230c0', '0x1022489442', '0x10ef09a72b', '0xffaa89245', '0xe9aaa373f', '0xf2bbea97e', '0xea3575ac5', '0xe3c503b98', '0xdfcfd7e8d', '0xf90b12b0a', '0x118240126a', '0x1184266ebe', '0x11a6d1e228', '0x109c986e82', '0x1240f92d8b', '0x10f2e3d58d', '0xf825eae01', '0x117201afe4', '0x10cf41ea7b', '0x124464f541', '0x1096837e90', '0x12a9373f46', '0x14fe1960c8', '0x17574ec97e', '0x1527c383f7', '0x1723d4b433', '0x157ae07c50', '0x17e7f3541f', '0x18efd43979', '0x16a9989f4c', '0x17841d33d7', '0x1917f4f3c5', '0x196140c2c2', '0x168091501d', '0x15f30a108b', '0x13c4e7f606', '0x163d3c16ff', '0x18dde3804c', '0x18d31ef0cb', '0x1621256200', '0x18e4f32293', '0x1c015e7e4c', '0x1d1525a69e', '0x1c9280134c', '0x1d8b65a48d', '0x1a44a0dd70', '0x1a291a40e4', '0x17d00b207e', '0x1a9f698c65', '0x17d8ee1616', '0x1628f62ebb', '0x15aea68531', '0x14256044de', '0x167addb64e', '0x15306fda28', '0x153c853a9a', '0x13947cce87', '0x15dedc6b95', '0x14995b5ede', '0x147f5cd440', '0x129425171b', '0x1126e3c541', '0x134b9b0210', '0x120ea68655', '0x1156d3342b', '0x10fbcf7a3d', '0xfdaebb0a4', '0x105a3e9156', '0xe961b3a39', '0x1044a70683', '0x10dc45269c', '0xf743deb20', '0x116219aaff', '0x132f9799b8', '0x11821713f8', '0x114353fb38', '0x136b6b48ea', '0x1478288f32', '0x124be87d94', '0x1161785fa0', '0xfcec1eb6d', '0x11c74bc2d2', '0x1400180bb3', '0x142e88c202', '0x12bb1add61', '0x1512672728', '0x1547face77', '0x15a7867687', '0x148c74a94d', '0x12fe6d6a71', '0x14ca6cd7d3', '0x17630485b7', '0x15df30e458', '0x187c992736', '0x168b8f10f9', '0x147810af04', '0x17062c8a98', '0x1659f91677', '0x13c9d6c76e', '0x137058dab7', '0x118597e244', '0x1278a80f11', '0x14bfc17ff0', '0x13ce5fc3e6', '0x1647cc57aa', '0x18d54def34', '0x1665146ee2', '0x1476b2c3a2', '0x170565d356', '0x16aab8c387', '0x13f5828616', '0x13774e36ef', '0x15e6339f3c', '0x14e2c061f9', '0x12fc3f336a', '0x142e702329', '0x159d81651d', '0x13b54145c9', '0x123dc6a4bd', '0x144821fa64', '0x142d7fe7e7', '0x12d79f8a9b', '0x10ee4a0ae9', '0x130bfc5921', '0x120e503529', '0x119563014c', '0xf62b6a123', '0x11239e6fcc', '0xfd30829c7', '0xe88e03c49', '0x1026df52d2', '0x122b9a87cc', '0x147059cb1c', '0x12b9066d0a', '0x10a6ecffd5', '0xf62d576ce', '0x114efa9436', '0x1378219785', '0x15e7243dd2', '0x138308eeaa', '0x15f2c530e3', '0x18b0cedcf8', '0x16ef8aa2e2', '0x15a3748cca', '0x13f1674bc9', '0x15675264a9', '0x13185df4d0', '0x10c083184d', '0x1282dc4427', '0x14d26c2ea9', '0x1647d53b57', '0x1672c11d69', '0x1639d5e93e', '0x183d4182fe', '0x16bef1ba5f', '0x155e17f711', '0x13bcac532c', '0x148d3769bc', '0x121728d2a4', '0x14596b3927', '0x16e450989f', '0x15288e9895', '0x1361322711', '0x11ba4ce241', '0x13f18555ea', '0x1437312237', '0x125b34b606', '0x10faddfe1a', '0x131a31cb5f', '0x10ec8a67b8', '0x13099c9e29', '0x13ee4beb43', '0x141dd2da46', '0x11fb195b1f', '0x1045513378', '0x124dd46472', '0x142b16de19', '0x12d4a5d660', '0x1238bd6efb', '0x10f9d2165f', '0x10c424a852', '0x10b79dd4a2', '0x125fd4d9d4', '0x10656aab1a', '0xf17fe231f', '0xf0af58078', '0xeb35bd55a', '0xe52438aec', '0xcfb93a386', '0xe9af5d3a5', '0x106e452b21', '0xeca9abf2d', '0x105e6bc2e3', '0x1269f55293', '0x11d871d932', '0x12e34d390b', '0x10a8ba82fa', '0xfe76e3fbd', '0xf0265c338', '0xf503f6aaa', '0xe1aece137', '0xf0eadbf2a', '0x10ef556608', '0x130d3a733c', '0x1326c35f37', '0x1120abdd41', '0x12f4ab67aa', '0x1502a90d88', '0x1380260806', '0x136a34949d', '0x12326af1a0', '0x11a826070c', '0x11019befc1', '0x123fc3e662', '0x1151cd04a4', '0x137bc695b3', '0x15e9d87d66', '0x13752d507d', '0x110687a66e', '0x13275741bf', '0x158c0ad94e', '0x13deac0ad7', '0x14277e41f5', '0x11cbd710d7', '0x119b24c7b6', '0xfe3bfd463', '0x11dfd9e57f', '0x10722dd75a', '0x127fbad3c5', '0x14751e8775', '0x136b8f143f', '0x113be89551', '0xf146b82a7', '0x10f6da3076', '0xf23bdfbca', '0xf9141350d', '0xec2922344', '0x109a8686f2', '0x1025fedd9e', '0xe99baf659', '0xe0a747c2e', '0xe1613e15e', '0xfd74e1faf', '0xf3d5e1245', '0xdffb4f3d8', '0xc3fbe555d', '0xdc77c94d0', '0xf45a61601', '0x1112f39994', '0x1123488f8f', '0x110e0d4ec8', '0x115784bfec', '0x13823e0fb3', '0x12d1e02e6d', '0x124bf0b42d', '0x10aabc8625', '0x122d9c7ee7', '0x129a7492ae', '0x14ecfb2598', '0x175ed89d9f', '0x15bc858000', '0x1468dbb26e', '0x13326bba9e', '0x11c85aa550', '0x12c7b5bd46', '0x1093030b03', '0x112742f634', '0x10fcd9254b', '0x114e7dea24', '0xfcad9a735', '0x10fdabe040', '0xf1e0539d0', '0xef9190028', '0xeb1cb0275', '0x102d488d47', '0xe8028e649', '0xe0de3c12b', '0xdd72fee6e', '0xc87e474b7', '0xe09f57c52', '0xd711fb101', '0xf0fde400e', '0x10f13fc434', '0x12ca26dbd8', '0x13da38b6df', '0x11c413637a', '0xffa4c6090', '0x11f8dfdb58', '0x1205bf4f4f', '0x1275aa3b93', '0x11dcb8198c', '0x1417c39313', '0x15f3b49eae', '0x1390e368f4', '0x111ec6fbd6', '0x1341e1dfac', '0x158981551f', '0x16e0fcf0e8', '0x1558bae250', '0x1402e97414', '0x13296b9a58', '0x13aefb51b5', '0x138213918d', '0x133258098c', '0x145cfc7ce6', '0x1279b23f07', '0x1338e11a56', '0x121df3bb96', '0x1271211416', '0x11045e6325', '0x12e20eb99a', '0x11058cec21', '0x1325b068ec', '0x11c0e4a80a', '0x103582fdac', '0x123b54b1b8', '0x104fd69d68', '0xff8a59fe2', '0x11c51151cc', '0x111a2f23a2', '0x133cc8ad97', '0x12796acdc9', '0x123b9b51ad', '0x109c22b827', '0x12af2f2c82', '0x10927ebfaa', '0xe802ee7b5', '0x104fa1c130', '0x125926df75', '0x11c22a6c3f', '0x13fa3d009e', '0x1679395944', '0x148fd9dd04', '0x121b85b804', '0x145e9a5880', '0x142d55ea3b', '0x129af0844c', '0x11be999312', '0x12220597ed', '0x13b97369bb', '0x11bb5f77cc', '0x11d6fb2d87', '0x105de8de53', '0x125f2c38ce', '0x142a9d4db9', '0x16af8aecc2', '0x1450ef4fa2', '0x138f8f0e11', '0x13065c2745', '0x1566dc4031', '0x17e71c903e', '0x162c39e9b2', '0x14ff8da151', '0x14c896563e', '0x1441d509d4', '0x124c2fe23d', '0x1495387539', '0x165dc560f3', '0x146511dff3', '0x1463a90449', '0x1370daa6bc', '0x134e4c39c5', '0x12cf39dc7e', '0x13a827b8f6', '0x1543aec11d', '0x1414dd6ddb', '0x1696e7e208', '0x142f8819af', '0x165aebf484', '0x1478e747c4', '0x13bb2c8943', '0x127e5c11a9', '0x129b2e2a2e', '0x13106a0a61', '0x146d32384b', '0x16d9cd66d7', '0x19b4c89bb1', '0x1779cb91f7', '0x16ed91a755', '0x14a3b7d623', '0x1736b377fc', '0x1548f6c758', '0x12d431f4a5', '0x152e9adf57', '0x17d37747bb', '0x16bdc9e60a', '0x199527b9df', '0x1cc44a81d1', '0x19ad2658ae', '0x17f6b46f20', '0x1a7ae6c447', '0x175bd659f3', '0x16885dc5f1', '0x1958a05f07', '0x1a3ffbb401', '0x18374ea5bd', '0x172e927fe5', '0x14a6f6719c', '0x1722851dd4', '0x19d39a1517', '0x18c6fd6aee', '0x1a8fcc8713', '0x185a1bb126', '0x154ed83b02', '0x14fc802044', '0x155de33bb2', '0x1809220c70', '0x172a60b9b8', '0x172e3d1025', '0x15353b2e60', '0x141243903a', '0x16645067a0', '0x17bc889b73', '0x1865527677', '0x179390e776', '0x14cac38001', '0x1535decbd3', '0x17dc1ac2d3', '0x16e13ab0b9', '0x19bd3419cd', '0x169937c23f', '0x196bc2fa9d', '0x1b94a17c60', '0x18c8e9ca3b', '0x1be1333ee4', '0x19bf123609', '0x16b6c0b472', '0x152d31700f', '0x17c8394634', '0x1596675759', '0x1848b80335', '0x1b50c7dfff', '0x1882926762', '0x1b86a93685', '0x1856e42196', '0x1619a7b2d0', '0x14f934448c', '0x14e69e84e7', '0x161d3780d8', '0x13c9ae4786', '0x16425a9d52', '0x15082092b6', '0x1518df1b2c', '0x15d1dee679', '0x14997246ae', '0x154018aec5', '0x1424fb1bee', '0x12a323b1aa', '0x128a42465e', '0x11baa7e021', '0x13f1563967', '0x165f6da34d', '0x14219ad0f8', '0x122ecd1ff5', '0xffe8885b7', '0x11fdc9c1f9', '0x1076f15c78', '0x101adf5fbf', '0x121ded5b2a', '0x14615ea1d5', '0x13adcbbece', '0x14a42e7a49', '0x17389f436c', '0x1a1f48cefb', '0x1bc7f992b9', '0x18e88e3ea3', '0x187e6ac42d', '0x16151576e4', '0x188f3f555a', '0x19ec1d4499', '0x173857f799', '0x19dd1e5ad7', '0x1d13881954', '0x1a94069ea6', '0x185175aad3', '0x16592b44cd', '0x14d7c5e357', '0x1587e7707e', '0x150d5ac0dc', '0x13da2f42ca', '0x165566f2d5', '0x16f19ffaa9', '0x1421b2d259', '0x16125338cf', '0x13e4f2c08a', '0x140e14e4d5', '0x11ccf27a6a', '0x1405fea0e4', '0x14444250e7', '0x1500b972d0', '0x1344245b39', '0x15ac5c92ef', '0x174de0d997', '0x14b58a0edd', '0x121ed8cd02', '0x1419189e6a', '0x169c02ea8b', '0x15e56fecf3', '0x13a07a464d', '0x12ab7ec844', '0x13dede944d', '0x1284745e3e', '0x11dc2936dd', '0x11968bc078', '0x1375ef82c0', '0x11f551e50a', '0x1010498b07', '0x11c14a08bb', '0x11e3220dca', '0x10350a6c99', '0x10030bb9bb', '0xf0e0034bd', '0x10efad87a1', '0x1219a86c25', '0x10e7bd72f7', '0x10e8e451c0', '0xecbc7c788', '0x10524713a9', '0x125bde9433', '0x12c00c2f50', '0x12748529bc', '0x113c812770', '0x1205ac462c', '0x10c159ffe5', '0xfba5fb76d', '0xf9ed74a4e', '0xdce736a71', '0xf8817acb8', '0x11786e0b3b', '0x1047b2dd45', '0x103b1b8ab0', '0xfbed90349', '0xe98398174', '0x106b0c4775', '0x12783e73f4', '0x136b43358d', '0x12ea92f3b4', '0x1260af6aff', '0x10bc67e6cd', '0x12d34e1caa', '0x128a3dcb7d', '0x10e11255a7', '0x12fce383c3', '0x127cd91b18', '0x13ba002afe', '0x11f8b6f28d', '0x108d91b9f3', '0x1287256903', '0x14d804a854', '0x15eea5eb2a', '0x1545893851', '0x145d1c3382', '0x1409a531f5', '0x147deeacb2', '0x11ee30d71c', '0x133ed8a80c', '0x11ad3b59b2', '0x13933a3ed1', '0x142e156c14', '0x11a852be92', '0x126bb67f75', '0x107040743c', '0x113a09559f', '0x1360ef79a2', '0x15c679b8b2', '0x150b7f7061', '0x135b8438b5', '0x143f20c5fc', '0x12feb9e94e', '0x111ec2a1cf', '0x103682a957', '0x123cdbd04b', '0x124372acbd', '0xffb045726', '0x11fa5c814f', '0x143911ed52', '0x12b7801cea', '0x1119a7b35c', '0x125546a201', '0x1279f97113', '0x11a272593b', '0x1015f2937b', '0x1218847fba', '0x114caa3360', '0xfd54cfa99', '0xefa02945d', '0x10d91baca5', '0x12f3da2ca1', '0x1517e7b7df', '0x17baaac2f0', '0x16030ba686', '0x172a7199ac', '0x16208f73c1', '0x164a4b7423', '0x139a0ebdb2', '0x159d33c1a6', '0x17a1d48041', '0x16aa090da7', '0x153146224f', '0x16ba077d3f', '0x1404fd2fb6', '0x15388b6388', '0x17df552762', '0x1ab4f99b8c', '0x1a26ddbc3a', '0x186f7b707f', '0x16ec4ba0c8', '0x1943df1fce', '0x16b9edaf6d', '0x145d0cc95d', '0x15959beead', '0x182480f34c', '0x164afe1e70', '0x141136c8ec', '0x14a911dcfc', '0x154a1feead', '0x12d6c6bedf', '0x15319f1045', '0x17d2e62c07', '0x17b3a5d299', '0x1809a91d54', '0x186297d807', '0x1594a058fd', '0x149f062782', '0x170cfaedcd', '0x18f5f9c2ac', '0x186b31ac9a', '0x15e1d133a6', '0x14c5657cc9', '0x127c787d84', '0x1354f63784', '0x12183a043a', '0x10bba0b91f', '0x12d2c32767', '0x1336c36bd4', '0x12ba668f6d', '0x10cc24191e', '0xf8ccc9f7a', '0x117dd2c1d5', '0x12c329dbb8', '0x151b8dd6d7', '0x17be9e2a8e', '0x162a60ea5e', '0x16e25cc0fa', '0x150bf375ef', '0x17acc962a2', '0x17b962a425', '0x1a81655448', '0x183a218082', '0x18c37998bb', '0x16ca4663bf', '0x1556d0e4ca', '0x1458f3dbdd', '0x16e3e7afa8', '0x19c01c7843', '0x17e5ffd801', '0x171c7d89df', '0x19ff1d148f', '0x16bf3971fe', '0x199658ffa9', '0x1a3953abb0', '0x17c6b6615a', '0x19e2fb53af', '0x172306f3f0', '0x155afd9a6f', '0x18058e8828', '0x1b05e0fc11', '0x1a14635a3a', '0x16fea534ac', '0x19ae5c5f34', '0x1988557a4b', '0x1985929359', '0x19ed7a6796', '0x1755c715c9', '0x1833236532', '0x1638710369', '0x1468f23da0', '0x141dd5da3f', '0x150da0a953', '0x137e0c1228', '0x126a17ffb1', '0x14b6ab3ca8', '0x13adafa95c', '0x1149cf6ba8', '0xf20957e33', '0x11042fa675', '0xee3a9b1a7', '0xfa5343cb5', '0xdfaca78b4', '0xd886c2f98', '0xf073292cb', '0xd54fa32a7', '0xeff2e3fd5', '0x10df0baf43', '0x12fab79be1', '0x155995d089', '0x1477ec3445', '0x145fcd4bc3', '0x124dff4c1d', '0x1497b0581b', '0x125a3f9b21', '0x101db5cb6f', '0xe270cc015', '0xc622b2813', '0xdee1fa365', '0xfab7bd8af', '0x11a0db4e95', '0x13d481dcd4', '0x11f00f540b', '0x1117e16fb8', '0x1316e95524', '0x118a27bb85', '0x12b6b5c723', '0x1093d7ba6e', '0xe815cc321', '0x1051287d18', '0xe47036d75', '0x100fbfcc10', '0xe0dc7d28e', '0xfcf655693', '0x106e23d5ad', '0x127bbf4450', '0x14c9525221', '0x128a7a381d', '0x1183de07cf', '0x137d4940ce', '0x1289ff26e4', '0x10b52837cc', '0x12cba89e71', '0x11b80908bd', '0x12f67ceee8', '0x1444c89759', '0x14e4075c67', '0x12b283f7a7', '0x1365e2ec30', '0x116756d97d', '0x13941b2557', '0x160601f1b4', '0x15088495f9', '0x177c22044f', '0x18a4d25551', '0x16637c98b7', '0x192f8483ad', '0x1c52f82ce7', '0x1bf5aa3427', '0x19f888d9f9', '0x184c24ddaf', '0x17657717a4', '0x16379622bc', '0x15995f11d5', '0x142ac97959', '0x1473c362da', '0x13ff25d1d3', '0x122a751747', '0x14592d04e4', '0x12426e7a5c', '0x133d738c79', '0x11475c44dd', '0x11f666e4d4', '0xfd560c510', '0xe2e7c7937', '0xff3d11772', '0x11a1bfd8c7', '0x10622158e2', '0x11cace63b1', '0x11d1d85938', '0xf979d4e11', '0x1149b89e0f', '0x1256681439', '0x12aba89644', '0x11a308d1b9', '0x109698bfd4', '0x11ae9c6bcc', '0x13ade52c80', '0x15156d9f12', '0x161c8a8f29', '0x15ee8ca411', '0x186a0bf138', '0x18aac4fd2e', '0x16c86c8be8', '0x186b011ce0', '0x18547165a4', '0x1aa8ee6c19', '0x1c0d6ab08d', '0x1c1b9bd6cb', '0x1bb633fb7a', '0x187736540c', '0x160b90e674', '0x16d31cad29', '0x16863ae622', '0x1956de2833', '0x188e8b298d', '0x15cbd4a9ff', '0x15f435025d', '0x1410c1ec61', '0x1692ca67d3', '0x16c9571530', '0x168294ade8', '0x1952caf0a3', '0x1890b694d5', '0x1983e21b7b', '0x1728e5ca2b', '0x164e000166', '0x191521ab80', '0x18cc54e692', '0x1894557648', '0x169207ba46', '0x174a91c5de', '0x183d53e3bb', '0x16c2ce612e', '0x199688cc5e', '0x183315daac', '0x166ed75af3', '0x17091a3f00', '0x1791670563', '0x149f3a24b7', '0x17324393aa', '0x1a17a803b8', '0x1bb71966e7', '0x1b0cab8b29', '0x18ad869660', '0x198fa283a8', '0x17713dc9c0', '0x1a5eabb4ee', '0x178bd6549c', '0x194b608075', '0x1727789f03', '0x16ee3358d4', '0x15c6a18792', '0x174a3611c5', '0x14d6d6bbf9', '0x12ed80dec6', '0x154a9fe4cd', '0x143c71acb3', '0x11f7c6fd9e', '0x1435fe1001', '0x15c1b4edd2', '0x14c1f8c00b', '0x16f7b83703', '0x1491d5b498', '0x12dc4e0389', '0x11294e4685', '0x1156c4ee20', '0x13813f8975', '0x15f095b3ed', '0x18adf0bb1c', '0x163d2f0182', '0x16d258e3f4', '0x14f36c5f7b', '0x130f6304ed', '0x1570980889', '0x181dce1a16', '0x15f82a1ec4', '0x1772c7bfcb', '0x1a60e82119'], 'gasUsedRatio': [0.6474610091847197, 0.2629510116945331, 0.7794250331593805, 0.17138024761952794, 0.4461169041215822, 0.9995680756721574, 0.35787882528688036, 0.11580112673308905, 0.5876549280036185, 0.06692491060190699, 0.5969673, 0.06603844679004285, 0.547992407768301, 0.3955629151908009, 0.0639350236077123, 0.9596955666666667, 0.7453891057951423, 0.3232584683745705, 0.6105821, 0.24434303430633347, 0.08891184965105968, 0.9886461431109856, 0.9745133666666667, 0.14180100201179785, 0.14025886424160663, 0.23048404945940995, 0.44805326969943676, 0.18866069166787744, 0.8563176333333333, 0.026454433333333333, 0.12210984025901292, 0.9996174329762708, 0.9499710667196474, 0.2667742434307536, 0.7649806767807116, 0.08596502302329784, 0.588164343264675, 0.04865656822299931, 0.9468507164300853, 0.6084155021423506, 0.9998672367711235, 0.9616041912118751, 0.13808493333333333, 0.7969341604589785, 0.1869439, 0.5126679, 0.036151866666666664, 0.1769209299547675, 0.9993601660694883, 0.9950172609940828, 0.47749386666666666, 0.0953073, 0.13466476681145806, 0.5770889719497072, 0.0707551, 0.999442977266033, 0.3468385, 0.9979712522611663, 0.35451246421163324, 0.18813966064230048, 0.7838878299239492, 0.09288153886824406, 0.7334146099201433, 0.28551861789979655, 0.24531485735262937, 0.891421263884277, 0, 0.1321516672158722, 0.9657600404482278, 0.9995013666666667, 0.9867308426678651, 0.11495804062750459, 0.121277, 0.9999857, 0.890724407615963, 0.27754796829636935, 0.2200682093390219, 0.16980713900271027, 0.9998061326147859, 0.9993855666783895, 0.9994141601476217, 0.20492734729415066, 0.0197148741000353, 0.09074980679730806, 0.9994493935738538, 0.9993685636778681, 0.6857429666666667, 0.18514779682359825, 0.5185709173328562, 0.053446707259899404, 0.13955678773978913, 0.2395915615890414, 0.9471965619379383, 0.9993514333493313, 0.9995692452161862, 0.44614822542754456, 0.2289099096689645, 0.6279428724298555, 0.1539271601553881, 0.9584863830560463, 0.19949992930971142, 0.05398606588616016, 0, 0.999476087403916, 0.710971013661661, 0.9994774882694282, 0.27114543035263533, 0.2202935, 0.6136094333333333, 0.8836595602272286, 0.4971037972968775, 0.028448473152608466, 0.9995756992079718, 0.9583182866677328, 0.7297049098404143, 0.09314738590168019, 0.9999241330500968, 0.20210307483739143, 0.24198019820498265, 0.8029983019338575, 0.8017152829960942, 0.526182846613651, 0.37491753566800684, 0.2993074583858629, 0.9646047287512298, 0.9998953347539568, 0.25175586666666666, 0.6000199471882374, 0.0346329, 0.34117986666666666, 0.13938380828879401, 0.3602179360924482, 0.98790214141316, 0.3524469406232686, 0.4792459598424723, 0.3959634165525271, 0.609924717009789, 0.1752756299476182, 0.23339633948179916, 0.47510942291215963, 0.116771, 0.8179782109436802, 0.1908967, 0.20576593333333335, 0.9379060986386539, 0.5322200300720281, 0.062162433333333336, 0.9997715333333334, 0.10463803333333334, 0, 0.9929108774718512, 0.9995740662691285, 0.6907971333333334, 0.40218223094852124, 0.9993234660352349, 0.6552551, 0.5072399666666667, 0.004982334750116511, 0.7838673333333334, 0.9992806, 0.1371026807677697, 0.9579757941107412, 0.2564806333333333, 0.6989102333333334, 0.1458099, 0, 0.39195043960427356, 0.9996324329902708, 0.8210691403467463, 0.5884191492651816, 0.1248871896263304, 0.6982955118372836, 0.27450786666666666, 0.15580741260507552, 0.6552210448729752, 0.3595133670153664, 0.3900256868330516, 0.4304964310414643, 0.9509387609931561, 0.999469680640574, 0.5016954230527602, 0.5309264666666667, 0.2643416296013057, 0.8954083300875529, 0.2140292923957449, 0.1602632132862207, 0.9993355621723178, 0.3542329906921543, 0.8468412978635466, 0.13229728822134026, 0.9998944574763254, 0.9997750553292947, 0.9474860411770025, 0.12542914392981333, 0.8752505669485424, 0.21305461833176995, 0.9517821490896691, 0.6724710025346168, 0.13518269608318112, 0.6506605102047789, 0.7683289835178585, 0.5456392219077358, 0.0464635, 0.40172613333333335, 0.10268423782490269, 0.9997750331233642, 0.9725987504386371, 0.49323405403690085, 0.06572039864735661, 0.9997602649069438, 0.999874877463329, 0.6538645397888332, 0.4298083411167968, 0.636111415781079, 0.05640638267997673, 0.48362685658424237, 0.1410035035871651, 0.9720234284223755, 0.0830143545778523, 0.2169707870188085, 0.41375849987630464, 0.21659219315195807, 0.9634062021516304, 0.2703306128335886, 0.5089104030596776, 0.18801154712792773, 0.9679301342187959, 0.26744977285776406, 0.480282522706618, 0.12555076022954348, 0.19281410538842736, 0.9998675034425415, 0.24333575990045553, 0.3409350020939652, 0.4179832, 0.23422043333333334, 0.6254754666666666, 0.0679774, 0.9612038488917761, 0.6456233665196708, 0.16635243729570864, 0.9993206987093275, 0.9148148548539892, 0.15021359227184478, 0.4439885461161631, 0.9997058249171304, 0.7162274549960777, 0.07539430989055448, 0.2997928663350326, 0.13796794525399764, 0.9987088149771847, 0.99989980383595, 0.5362808046204361, 0.2124344762375716, 0.9999247926500998, 0.5397276749913382, 0.5701511666666667, 0.2957476333333333, 0.19734309446825174, 0.8784099495722009, 0.9994659210118556, 0.24088823333333334, 0.9782171043309541, 0.18283856666666667, 0.1316463526633758, 0.999313499359266, 0.38313815651910516, 0.041323233333333334, 0.4293369475292623, 0.10553089849550526, 0.7167500625306639, 0.9932474, 0.31822824988601367, 0.9997060330589642, 0.958295436569551, 0.10723943862363196, 0.15506740867898192, 0.9998947610367485, 0.43845586110664375, 0.022147083420680884, 0.40120043895967594, 0.999986299935153, 0.31488346666666667, 0.13603723333333334, 0.7519963577767023, 0.7841937985744039, 0.14705882549595148, 0.2023111640066595, 0.9474362634644058, 0.47948196160434664, 0.23526168002773915, 0.09421873361974525, 0.9999172666666667, 0.29190059240485, 0.39535406666666667, 0, 0.9558904921644593, 0.19314836666666665, 0.17400308598653416, 0.9450526666666667, 0.9998764, 0.9993951572955675, 0.16414663333333335, 0.05760772060583827, 0.19589718283737065, 0.9997875, 0.9993500346911242, 0.999995109555765, 0.06333781185327673, 0.9994843071481396, 0.9997803439071923, 0.21569045784691895, 0.2737655194314309, 0.1865744, 0.7929589, 0.06859271920969173, 0.009157208851968556, 0.9200508857391138, 0.9993285987243375, 0.7802106914738713, 0.5301000352834333, 0.4603819747505845, 0.8623446102428522, 0.2535562278368151, 0.2576135911691814, 0.19476173601406785, 0.6650954313774802, 0.02097998767859452, 0.9994510607426204, 0.9997839550866816, 0.19710990911399098, 0.16372652899215337, 0.15903738080902313, 0.999940924076649, 0.5545849, 0.1321017359881409, 0.20008656008367476, 0.9999714333333334, 0.04385956219581755, 0.9995416662388885, 0.6876922333333333, 0.5372593666666666, 0.07534499228170358, 0.11957641559053507, 0.9998538571502358, 0.9074067289218086, 0.23470028303863333, 0.3706332849679789, 0.22652767561748002, 0.4505939477950094, 0.488325955545086, 0.8964980399739906, 0.06935976042090902, 0.18225793887025157, 0.48650749852043634, 0.4090094, 0.3967997416143531, 0.1261184249066461, 0.9999235252484795, 0.9999356665444331, 0.10091416775506488, 0.926573660713913, 0.9997467519773282, 0.37652536412971704, 0.7336522993490519, 0.027993799170649408, 0.3187008532338882, 0.2749850908257278, 0.5810433705363903, 0.18438483294441732, 0.7700176444596296, 0.9987755686830662, 0.9999796999424831, 0.5209421, 0.07730625622587123, 0.9269402825609111, 0.9335682096268412, 0.21255905617106063, 0.482417857115369, 0.24907463253001597, 0.3812736626944495, 0.3526248156569606, 0.7923148107962811, 0.2962531333333333, 0.9997742128521835, 0.9988756322839235, 0.05173907149311308, 0, 0.9999951285672859, 0.9998237328397853, 0.18863883401014614, 0.5572642804533137, 0.03200589906158952, 0.4572448157173005, 0.1100463, 0.9996392666666667, 0.18034616666666667, 0.9993143362173504, 0.9234949593784607, 0.2971706666666667, 0.0497184, 0, 0.9998754998837999, 0.069766458728977, 0.6130236109774072, 0.2925514029842714, 0.9996118, 0.39033833333333334, 0.11657893333333333, 0.34667133333333333, 0.5129339466655856, 0.9983004317470696, 0.34816164510442427, 0.17430843333333335, 0, 0.9997132666666667, 0.9333534196142533, 0.9719634071658467, 0.5149458333333333, 0.4806427142771583, 0.5673070961532898, 0.9998054333333334, 0.3587439666666667, 0.38880123333333333, 0.1437155, 0.8626892506134426, 0.5935566333333333, 0.9993438333333333, 0.9673267333333333, 0.22031727315056485, 0.2558364765246078, 0.2623381429650778, 0.20530262268877786, 0.7243725594454948, 0.03017295695211921, 0.6397588918667312, 0.46136568652294213, 0.5750944651041416, 0.15002382660165595, 0.8035691823196375, 0.05890830707222249, 0.46183713182545, 0.425590570603804, 0.9035207666666667, 0.08551627330755149, 0.37686941841145716, 0.43918386666666664, 0.12147658855539101, 0.9813958493027927, 0.32989772943841755, 0.9821034, 0.9993748437983643, 0.9361314382603904, 0.7262462892033392, 0.0795966, 0.09738806611322623, 0.9993044993508661, 0.5111916666666667, 0.5970297333333333, 0.3705402666666667, 0.9995231656287635, 0.8701114978036749, 0.06523186414213387, 0, 0.999322660112876, 0.973539, 0.749193787733722, 0.23210938330209108, 0.24980056666666667, 0.33018126666666664, 0.6089092333333334, 0.46435367469667466, 0.4361383070624199, 0.7430781333333333, 0.12916456666666667, 0.6616873666666667, 0.2700189666666667, 0.5717360663978291, 0.19095485125635622, 0.93861192853975, 0.10570841873206435, 0.9994903346597757, 0.2088383986700762, 0.1520213, 0.9991615333333334, 0.07878066265041146, 0.4164801303130464, 0.9504381883144711, 0.3497419311763359, 0.9993848994769697, 0.3413195784494582, 0.44772253333333334, 0.1439536373935815, 0.9995594662555018, 0.04784166203519527, 0, 0.999381169799208, 0.9995842321553244, 0.37142324716672526, 0.9998256326765498, 0.9997700078797243, 0.15975738419303903, 0.02253307612095655, 0.9996895649178824, 0.4622082, 0.18838726666666666, 0.3149549201461894, 0.587546296206615, 0.8510789012566817, 0.09593394894116966, 0.5243278023217917, 0.1697411142664904, 0.9899992058889673, 0.8907504280117201, 0.9996911305486101, 0.08219308904728816, 0.35127596666666666, 0.3904065987103073, 0.9997580331074976, 0.9674338354118593, 0.210490421125792, 0.28811769110931323, 0.4590992875753012, 0.39869157984171716, 0.11306488701717989, 0.9995816666666667, 0.8465791333333333, 0.14741783333333333, 0.49892006666666666, 0.31392955220773083, 0.4722263506515619, 0.3971557424729709, 0.6802026691461758, 0.8271182661255274, 0.27749057242127206, 0.9995586077801372, 0.07434952398627687, 0.9299073958024339, 0.1630963734383101, 0.3551933103751917, 0.24911627479048418, 0.524350212534631, 0.5984500956333654, 0.7858625540322564, 0.9747239277435648, 0.9998331440449307, 0.1529358990745773, 0.40666819594951364, 0.10075375048328043, 0.9988781948723753, 0.16766823735947073, 0.03843054022963396, 0.9999049323319539, 0.9992883873940569, 0.3179006, 0.9997546666666667, 0.9978570740995248, 0.07028246271939244, 0.23319033705310876, 0.9200343003857958, 0.02849934140584778, 0.35854397202479255, 0.9994552084647487, 0.6426229309801685, 0.19007302969759476, 0.32918415865885187, 0.06350040796821695, 0.9808486926400617, 0.9653977695494426, 0.33749052361812487, 0.7880717324064836, 0.16723088193120342, 0, 0.43961758157429776, 0.5725078666666666, 0.9996412163143977, 0.35519235916457986, 0.5026040120015979, 0.15959753263448623, 0.2856291173248508, 0.9624520429791189, 0.7401958691992128, 0.6111084106150667, 0.36565555191527205, 0.027598666863050205, 0.5804894842447184, 0.9996319656239026, 0.3357099, 0.9998774530004784, 0.011937544872960044, 0.9995793436975782, 0.8398214, 0.09453052427637745, 0.9994784661625173, 0.19392533333333334, 0.028866633333333332, 0.22926818037813926, 0.9921651725611843, 0.13088081117403602, 0.9996487139383216, 0.9993386304411461, 0.08917123464775273, 0.9922019297565415, 0.03693253911256399, 0.1320038, 0.29606327245221625, 0.4861544058104357, 0.7321956258650316, 0.07921694158236439, 0.9995760386701895, 0.2794263210328896, 0.5124397281223563, 0.6370143286017077, 0.2762752989922652, 0.6264069175787805, 0.2918305116559307, 0.20072298259573018, 0.47914079530656706, 0.3250385176857037, 0.999426298374512, 0.9874048333333333, 0.09924524631636127, 0.1128508053274183, 0.018546166666666666, 0.9994511026649143, 0.16056163333333334, 0.4126249, 0.9997045884693597, 0.9997426333333334, 0.3623262, 0.6956297157507639, 0.999937833275311, 0.9997204333333334, 0.7540286423025417, 0.08637691349360041, 0.43341948643400635, 0.10619320176708336, 0.9487204280668206, 0.7219520702802587, 0.08302664686371676, 0.9554076916767152, 0.9968423711378388, 0.15634281190073673, 0.1598683, 0.1759817538173973, 0.23054735619577765, 0.6320378959753861, 0.4110655246718683, 0.27201730397630397, 0.9999562812840144, 0.6092963355346871, 0.009722594214016939, 0.8854525532004343, 0.10541963041394123, 0.5323061333333333, 0.0503504, 0.9994988105885397, 0.5485871787453895, 0.6453014273018066, 0.16925409221723667, 0.9997581633789888, 0.8010017962051491, 0.0545742, 0, 0.9365302551274653, 0.9998275665057288, 0.3738259566175299, 0.08543139280526657, 0.30496886666666667, 0.7572440488136666, 0.22760072512215346, 0.35799372831152504, 0.4390965559203268, 0.9258832165886643, 0.19119176201996033, 0.07798662096209273, 0.9211786666666667, 0.5297836337183259, 0.12430241601558828, 0.4518009719967287, 0.2608760576071735, 0.9999241780235818, 0.7749097692580285, 0.23591674540377358, 0.5010646082794072, 0, 0.9123757837634251, 0.9993366641459904, 0.5852603666666667, 0.4370611, 0.2358329241837988, 0.6823621368713277, 0.2188171792048608, 0.25476230888964324, 0.4726474333333333, 0.035475266666666665, 0.9998135512661447, 0.9993217660336483, 0.22745806666666665, 0.4879155171641559, 0.3803786527917334, 0.20763164840592507, 0.9997808, 0.9998239333333333, 0.7055888666666666, 0.39645406666666666, 0.38610287054691095, 0.14267163791591667, 0.9993917721442119, 0.4393574347791261, 0.14167876666666668, 0.9997067, 0.3946359953828247, 0.7680437501741668, 0.14412993333333332, 0.18427044008474275, 0.9772329238161507, 0.999982115852175, 0.7088672747498289, 0.3795207691045175, 0.32927237724748143, 0.43595770371440684, 0.5906783976005241, 0, 0.7933695333333334, 0.17393788367674368, 0.9295874342816053, 0.6236073666666667, 0, 0.6728988190301163, 0.06955724705005818, 0.6917990652643403, 0.9996774894524643, 0.9946970433256149, 0.36583299767158856, 0.1792712746019447, 0.6837237601357596, 0.2527347853010246, 0.1051877787399061, 0.28803322042280266, 0.9995513333333333, 0.505645304027284, 0, 0.9999680020564101, 0.9994902377506684, 0.2020943628352311, 0.15451710523986678, 0.7883925966498956, 0.5312774719528373, 0.31773456666666666, 0.1486842, 0.9998315333333333, 0.32398103252174254, 0.16096856666666667, 0.2835930285924205, 0.9998401331841243, 0.9996342235060216, 0.9518298084766361, 0.9998324, 0.2105214, 0.7096864755100022, 0.32066543262107045, 0.5294704995629763, 0.01755933336273339, 0.9106326666666666, 0.8734747814574265, 0.3361641804199017, 0.2402557, 0.7895745333333334, 0.023522336227993303, 0.7400438148628666, 0.9997938968046483, 0.9749487165771825, 0.41685862489441877, 0.23748005830396962, 0.2524176383142945, 0.9086884615641778, 0.09804822150994225, 0.0841279143627015, 0.739828251241341, 0.9740795728833052, 0.19354532735766286, 0.10064525511329825, 0.6182397889745339, 0.6218021045123883, 0.03957135444086564, 0.9999982649674336, 0.9963691528694476, 0.47950358686106026, 0.5567025869489978, 0.5578078916237874, 0.03995606108288151, 0.3221763416027222, 0.9712659788244766, 0.8314672334665094, 0.41312543589546963, 0.08447820272800213, 0.29690821805149736, 0.059990850982448544, 0.6829835683614107, 0.24399870401066667, 0.19897948604902005, 0.9997021376816614, 0.583009714055047, 0.39886666310164076, 0.08763594462666546, 0.20294768793749984, 0.9994212367660815, 0.7906235634375939, 0.9999959293313233, 0.9997183149301203, 0.2339926388225319, 0.6296943733919863, 0.178810367505672, 0.9995113287072451, 0.5083148481631272, 0.9689381054271287, 0.15616451876356777, 0.5885786463548951, 0.18123541564980175, 0.24532638856386357, 0.31411534424081144, 0.9998720501138724, 0.9998075450353959, 0.21231563489429886, 0.3682517, 0.9993657473189236, 0, 0.9994643225890262, 0.599523972428881, 0.12664447562161485, 0.8550483359468289, 0.07509791506141399, 0.19202469636051284, 0.9994090333333333, 0.9997576633582693, 0.36036716967602506, 0.026844305185365014, 0.9673055389703394, 0.47686348066736894, 0.49831016193512007, 0.5636133333333333, 0.10002853333333334, 0.6482214882833086, 0.17284229465280834, 0.1740793, 0.4424982328577189, 0.6862523405021844, 0.20344486666666667, 0.2787969452170044, 0.9994174327896039, 0.3001137, 0.014161128341825794, 0, 0.9995136579664183, 0, 0.7031042, 0.07414089858747067, 0.3721710140262798, 0.9419494594666648, 0.048533485897958716, 0.9995091197227367, 0.9999659999036664, 0.9998063219112324, 0.9996116985244544, 0.33484838520535015, 0.48158695320220307, 0.0936926374620536, 0.9999503997172784, 0.06489056885005787, 0.012551683259498955, 0.0126557, 0, 0.9996012, 0.9995454333333333, 0.9999376, 0.9995954, 0.11828290325502853, 0.3116929909134582, 0.967134142482, 0.17524989638096536, 0.7677456355600725, 0.043393464873864175, 0, 0.9995966053186438, 0, 0.9998458500906284, 0, 0.9998807333333334, 0.6568852, 0.9998474844018518, 0.9983989318390031, 0.06789369489384574, 0.2786905202223044, 0.9508775735887468, 0.3049504871946975, 0.10485468419222944, 0.9998661995004782, 0.2708703729968278, 0.7808203031887583, 0.7754527666666666, 0.6227611, 0.08002225826480441, 0.6498968666666667, 0.08875647069363234, 0.9998647693540972, 0.9995118228230822, 0.32015654163076246, 0.9662366993199479, 0.6973933092810429, 0.13395071573427578, 0.9997173808411397, 0.9984564868941023, 0.4485284952662748, 0.2154768811509836, 0.2422646668948464, 0.3516569254999748, 0.2983935281828096, 0.3887295322094016, 0.2348093701005072, 0.5565401742432854, 0.4109085043089153, 0.1337747054944723, 0.9805707680517078, 0.08938279681265231, 0.7148024005461611, 0.09224777318487844, 0.6582882354070837, 0.02590144869817761, 0.08267718271112914, 0.999470882277642, 0.9211086157442836, 0.2167595107256284, 0.8439816349611196, 0.5061815167700373, 0, 0.9350186545957837, 0.7428398780430727, 0.5726413302933251, 0.2785414247358424, 0.2621831894678425, 0.7637541203923482, 0.9518030713984411, 0.7854628635323467, 0.6949913900096993, 0.46750000493110777, 0.9527502982246661, 0.541422289603832, 0.1944651871352191, 0.7870712666666667, 0.48556301438312155, 0.8830738333333333, 0.7089312619560333, 0.5079048243079969, 0.4436291250009241, 0.03145359414361534, 0.104263, 0.6414325411235928, 0.4473691657901936, 0.9999021666666666, 0.37647399352134026, 0.05033294697741718, 0.5289444793973825, 0.1559204629155462, 0.9999520666666667, 0.5377584333333333, 0.45147933333333334, 0.9999232, 0.38024943333333333, 0.6546707666666667, 0.1307431707061946, 0.35231818191230496, 0.998165673673827, 0.45464979716794796, 0.46471652061234453, 0.1730601627724666, 0.6277523330432381, 0.6628548036174184, 0.2560022341902512, 0.9968266515403723, 0.28294961569289223, 0.20799811764988788, 0.6074459536638871, 0.5924521163474423, 0, 0.9993434333333333, 0.9994000192145703, 0.7487809904882908, 0.4039172652438458, 0.14928618861996468, 0.6431630666666667, 0.1684451466476319, 0.9995162333333333, 0.07169677857094119, 0.7969819619218022, 0.16154508862604555, 0.4613524212787574, 0.2985965926946196, 0.7781028810986822, 0.07910085302709, 0.13310200720636425, 0.9995321191096697, 0.30172506613894096, 0.05164713336926135, 0.999341673297183, 0.8059257062376154, 0.31633857232583024, 0.9258568935080183, 0.08237137177580484, 0.16764620372224082, 0.13962590861154522, 0.541393426690149, 0.9996690752745978, 0.999343529591452, 0.999489, 0.10445543406469751, 0.6048015462717589, 0.17210172369819085, 0.1390092563780148, 0.9994127921229061, 0.9993710376742823, 0.14388862556215465, 0.7692778535852356, 0.9998527022418946], 'oldestBlock': '0xd0fb15'}}), - (('0x400', '0xd0fb13', []), {'jsonrpc': '2.0', 'id': 0, 'result': {'baseFeePerGas': ['0x16a9cf1687', '0x14a9e3c92c', '0x1712b5b3ac', '0x14f7232df2', '0x153af83f52', '0x14bc94d53e', '0x14b3d8321d', '0x13a29c2d8c', '0x11fc8a6e8e', '0x140e1636fe', '0x168ec18d7e', '0x1622335b71', '0x157c41ab48', '0x1427d73f77', '0x121c6a0df6', '0x1102458b85', '0x12ef0a3e76', '0x1207055580', '0x1059e5a8c5', '0x1236cd3d7d', '0x147d9c30b4', '0x14f0e62a99', '0x155ada5a88', '0x139686799a', '0x160910d77d', '0x15cdf76572', '0x135b9080f1', '0x114e34838b', '0xf246df31a', '0x1108caa9ec', '0x102d7c3139', '0x12330882da', '0x1431c68444', '0x158c7f7f4d', '0x132c784781', '0x140ae3dc51', '0x12ecf56f91', '0x1357899adb', '0x14eb955adb', '0x12b551cf44', '0x11b43d672c', '0x10ae11c593', '0xfc2bb40b8', '0x11ba9b9d1f', '0x11a5ed87b6', '0x1230391f44', '0x126be90c0f', '0x10fc2bbefd', '0x1086f135ce', '0xf1260c6ed', '0x10f3dc548c', '0x13121fa9f3', '0x1531003cb8', '0x138ccd0c90', '0x1169086ee9', '0x1395a27b96', '0x160505187c', '0x18c3bea821', '0x15eadc0199', '0x13d2692cf9', '0x154646250f', '0x13e019b2ba', '0x1164167c63', '0x13904dad5a', '0x1601c25414', '0x166a970e8f', '0x153bba525b', '0x1517d32ade', '0x12c0757341', '0x15186da0ad', '0x1429b5a403', '0x16ae93792e', '0x14750827bb', '0x1702ecda6a', '0x164d13566d', '0x1690ab271b', '0x16546082b2', '0x191ceffe48', '0x15f951fe7f', '0x15ceab47cc', '0x156fdf589a', '0x1584d6e0a7', '0x134ffcc253', '0x158fce7525', '0x1667b6dfac', '0x153243fd3d', '0x147c7df1d5', '0x14cc265738', '0x1764d7b921', '0x1a515cf187', '0x175fb57079', '0x189805af7d', '0x1697873d68', '0x155e61c5ac', '0x16a998d715', '0x1506b773b6', '0x170cae3688', '0x18ccf5d268', '0x167a08df5f', '0x1578d5d20d', '0x1714e3260d', '0x1515556dfd', '0x136ec413e6', '0x134f5ddb86', '0x15091bd0d1', '0x15cebfc078', '0x143b665591', '0x1533c66e61', '0x12f6d8f286', '0x125422b93e', '0x1388ceb8fc', '0x15f91f0434', '0x1873ec474a', '0x16b4656243', '0x19441bf03f', '0x161b987238', '0x1899844d0d', '0x16d86caaa7', '0x14fd07b027', '0x15edc237fc', '0x149f91c00c', '0x1732b73d6b', '0x1a18ebddcd', '0x1907a8d506', '0x1687dd5c98', '0x1957f2121f', '0x1c822291ef', '0x1a8a438254', '0x1d98c3863e', '0x1d66e01e95', '0x19ba041ac3', '0x1cf06d452c', '0x1e98e795c9', '0x1ac5caa310', '0x1bd97ccefc', '0x1bd6afdc04', '0x18a0f0b2d9', '0x1bb4a47b7a', '0x1a657e3c15', '0x17b5e41005', '0x16907f75a7', '0x150dcf9b43', '0x134889a83e', '0x1424cc2bd0', '0x12d9e2a989', '0x14db56c8f3', '0x12afe679b7', '0x1505b2f8a8', '0x162c536c8c', '0x1429f47557', '0x168c78f7ae', '0x1586af07b7', '0x13a5b7d7c0', '0x13b41146d8', '0x15ea057825', '0x14a5e51b3e', '0x173a86c755', '0x19db53f43a', '0x19651af7a6', '0x17fbd2b6b8', '0x17e6875c3f', '0x15b90941df', '0x16b294f1fd', '0x18929fb7d4', '0x1705959199', '0x14921b60a8', '0x1364efa8bf', '0x114c8dc318', '0x1375a3ad64', '0x15e3bd030a', '0x1378738bf3', '0x11c4daea08', '0x126a664b7b', '0x146a2ba3da', '0x16f714327a', '0x19d57f1593', '0x1829808bc1', '0x1818f4aecd', '0x19086e5f85', '0x18c29034cb', '0x16a7ddec24', '0x185f3f99e5', '0x1585f381f7', '0x183667b2d7', '0x199a3d6750', '0x18197f2eab', '0x15ddc5544b', '0x13f09499a7', '0x166e263aa4', '0x15ce5c1f1a', '0x1887a46791', '0x1835f45325', '0x16eb024d90', '0x16d48d3b31', '0x13f9fb93cb', '0x12dccab65c', '0x152f93efe8', '0x17d4f26036', '0x19f5c62704', '0x16b70d6224', '0x198da68ebd', '0x1cbed4381f', '0x1fe93dd9ac', '0x1bec161e77', '0x1f5ddb2656', '0x1d571acfee', '0x1d150bf5ff', '0x1af88da67e', '0x1e56d0cfd7', '0x1b87beac51', '0x1de3b8e713', '0x1e040b03c8', '0x1b0ce1a08f', '0x1cb9176858', '0x1a9c2a1b18', '0x1def403937', '0x1b077b24eb', '0x1acfd992ca', '0x1a217cf3fe', '0x1d64c3454b', '0x1ab5b323aa', '0x1b8e299814', '0x19e1c33e22', '0x182fa7a480', '0x185727b429', '0x185f264638', '0x16726aca34', '0x190fe669c6', '0x1bce77902a', '0x18a851ecf3', '0x1a973fa9fb', '0x17b05ba0f6', '0x15c088540a', '0x1308774989', '0x156957d787', '0x18167219b3', '0x1ae46ae25b', '0x182da281f6', '0x15df27eaed', '0x189a4ddc77', '0x16acd3ebcb', '0x172ec55e08', '0x15d7e21c38', '0x187b20dd5f', '0x173c383883', '0x16127b2503', '0x141cb4f8e2', '0x1538dbc8e1', '0x1781486338', '0x1935094a5d', '0x1a5d2986f8', '0x17a09b3f33', '0x153736c076', '0x17ddb68579', '0x16fb4300fa', '0x19d9b3dfb9', '0x17ef773118', '0x15d9f3a9d8', '0x16544c4aa1', '0x1791009834', '0x1736311f4a', '0x192b01a95e', '0x1770663deb', '0x1a0f66e92e', '0x1ac8fbe145', '0x17f9c5e6e1', '0x16b6b095c0', '0x14f50a31e7', '0x159d53a982', '0x1476fa8d78', '0x134da3455b', '0x1387896c11', '0x133b208e5c', '0x13e9136e1f', '0x11ef1e8b15', '0x13697b686f', '0x1243a754ea', '0x12a5b173ce', '0x124203631c', '0x143faab674', '0x167b84a05d', '0x194a84e866', '0x193a9fbae3', '0x16134bc387', '0x167e9b733f', '0x154670829c', '0x16cac59bdc', '0x147c320d0f', '0x1339ae56ae', '0x14bcb55d68', '0x133f6f6591', '0x116fef03ac', '0x10b957de96', '0x12d071b66b', '0x121d39bf66', '0x112c01c607', '0x1309e3a26c', '0x156918d8ad', '0x154ecea949', '0x13d0ca284f', '0x13fdb768b7', '0x167c99edd8', '0x14cc449fdb', '0x15ed68af20', '0x1437b49de2', '0x1259651023', '0x13484d5007', '0x11baaa2c07', '0x109625a1a8', '0x11d40380b0', '0x1058833dd0', '0xffa394222', '0x11f95a177f', '0x10d2d13bde', '0x12ea104037', '0x12cc2a17ae', '0x10e1adc294', '0x12cb5e21ec', '0x15248211dc', '0x132b933c1e', '0x10f65f734b', '0x13150ee54c', '0x1577306d72', '0x12c84a5fc4', '0x151e2583ea', '0x176c2d0263', '0x14cff001e4', '0x175241f3c1', '0x14a445c83d', '0x12e208c5ad', '0x149d696d02', '0x173047475c', '0x15e14e840c', '0x1605da5a2c', '0x162428e44e', '0x17c9a3d4fc', '0x14d06f5a5d', '0x162e9dbee4', '0x150d2d78fe', '0x13c44fe050', '0x15f135d246', '0x1469814a0a', '0x1249ea9674', '0x144bd270d6', '0x12e4cd1420', '0x126880cbbe', '0x14b55a8a97', '0x171a071e58', '0x171ac601fa', '0x19b05f747c', '0x1868bea016', '0x1872d6903b', '0x1aa3f02d29', '0x1c51b11d72', '0x192fa798ad', '0x19c33732ee', '0x1c54b68804', '0x1bd9abcccf', '0x189cbd080a', '0x17b35aecc2', '0x1aa8df5933', '0x1dfddebadc', '0x1b5ea0fd84', '0x17f2ccddd4', '0x182d8c3b87', '0x176ff551d2', '0x1807a5c84c', '0x16006c78e2', '0x18bfbf91c8', '0x18050f82b5', '0x16d065e441', '0x16ae6cf8bd', '0x145f7e6cab', '0x16eb4193cd', '0x199a0c4838', '0x16aefe918a', '0x14e6ff01b1', '0x169cb6e18c', '0x186564b9c4', '0x15bc2bed88', '0x170432adf5', '0x19e459e653', '0x1bf13c920f', '0x18f86e91a0', '0x1ac43bed7e', '0x17f84f9ebf', '0x15abe4652c', '0x14d382ff88', '0x14f4dd754f', '0x160414bf1e', '0x13ed8bf825', '0x129bbb25b6', '0x10f87affbc', '0x1317334edc', '0x136224ed26', '0x1118aad2b0', '0xef595785a', '0x10d3ec3e78', '0x12dba042ed', '0x15366bc09f', '0x145db90fdf', '0x156b46ea3f', '0x1478bc7fb7', '0x12fbb402c5', '0x14cd41a3a5', '0x145eecd29f', '0x12939fd7fb', '0x12df5b854e', '0x153b09ea3a', '0x17e2561036', '0x1754f4638d', '0x15c5d068f1', '0x1779db667d', '0x148a9ff9ae', '0x133b5e6af3', '0x130b3e3196', '0x156637b4ed', '0x1300458fcf', '0x12bd8db02e', '0x1125a6f666', '0x134a163c1e', '0x15b348e824', '0x1821f5effb', '0x17c4e50f08', '0x152da2e83e', '0x178d234e9f', '0x16fd02ecdd', '0x1990faefc2', '0x182a3bfedd', '0x163508bde9', '0x1662445e04', '0x15e38caec5', '0x179e72d424', '0x15cd84f312', '0x14820a325f', '0x17122e278d', '0x18888fb172', '0x19b29a3e34', '0x17921aafd7', '0x16234136dc', '0x150a306e25', '0x1336339c6d', '0x159cd26b75', '0x14bf29cddb', '0x1722a49d91', '0x1480978cbb', '0x16a008a63a', '0x15498e7534', '0x12f78135f4', '0x1554380db3', '0x13f5821573', '0x13550675bb', '0x11b394b408', '0x13e9afe652', '0x12ef8e9af4', '0x1149c89614', '0x1372914b3a', '0x15e07a58cb', '0x15711fb452', '0x13529dc657', '0x1443045484', '0x16cb3236b0', '0x18d9de98d3', '0x15bea2c5b9', '0x157439a990', '0x17a667266c', '0x159fb8dc7b', '0x134761c7c2', '0x15858951e6', '0x14fbc5ab6b', '0x129b27f344', '0x1047c2f4dc', '0x125063b318', '0x131333e18a', '0x10efc9ab1d', '0x11466bc25b', '0x136ea71189', '0x1206509ef0', '0x1026498b68', '0xe218059fb', '0xfca399d6c', '0x11c379e230', '0x10e1e80ec7', '0x108ac43cae', '0x11bbf80ef9', '0xfcec428fc', '0x10d9d34d25', '0x12f3a9af81', '0x1177f579a7', '0x11ecd4e24e', '0x121a56ebd8', '0x101dc2cf56', '0x10d5b20ec4', '0x1057efe1f9', '0x113031cde0', '0x12746fbd99', '0x111ed9f6c5', '0xfe71085a1', '0x1172848cda', '0xfe9760676', '0x11184e8de9', '0xfa2955d9b', '0x1196774a90', '0x118bbd9520', '0x112d124732', '0x1018e5b984', '0x1219f376e8', '0x10be12a2f3', '0x126f39d560', '0x11f6430640', '0x14347caa1e', '0x1348770ef4', '0x14521706b2', '0x1568ee3cde', '0x1504d5f224', '0x16cd844ef4', '0x17cd780b28', '0x1667beab44', '0x175f52a222', '0x166604d4a0', '0x19325de04b', '0x1a90b4c6df', '0x1980086839', '0x16e2f41c76', '0x171eefb9c2', '0x159e84f846', '0x14670a980c', '0x14e0dbb615', '0x12c14bdcd2', '0x14f60fb0a0', '0x12d16b1171', '0x1274ef1d5d', '0x1206355c68', '0x117008724f', '0x11d34e1b92', '0x107106a2a2', '0x1032c2b030', '0x1235da2d85', '0x147bea489d', '0x12daa5cea6', '0x131a7d8657', '0x11f72f7fa5', '0x1070cf6234', '0x1249191587', '0x1377bdc0e2', '0x12756e661b', '0x14c375b111', '0x15923e2ea5', '0x1843f97320', '0x15cc1ad357', '0x1458f04bde', '0x13f1aa7279', '0x12dc7b8e61', '0x1134e45df6', '0x1357f6cdae', '0x139bfd71fa', '0x1396dab410', '0x11d1b87b0f', '0x10b59d50b3', '0x112d962169', '0x101e1b70eb', '0x11bcf69bf6', '0x1020897ab5', '0xf9fe3fcf8', '0x11936f243a', '0xfc1379110', '0x11b95512dc', '0x10a6cdec55', '0x1232eb9ea6', '0x12049cb659', '0x14415c2280', '0x1305f46bad', '0x1115bf6b2b', '0x13045f703d', '0x130fd8b07c', '0x113fee0ca8', '0xf97c0c94e', '0xf7bfd71de', '0xe073e2e0b', '0xfc81e3106', '0x11c0b36fb2', '0x113d69cb8a', '0x13639cc5a7', '0x128a4bfcd1', '0x14db0c8257', '0x12c741ed63', '0x10be8b94ad', '0x12c199bd03', '0x111515c4ba', '0x1334cfcd0b', '0x125c4f685e', '0x10a5fb12b0', '0x12b9fbda0f', '0x15111d4e6a', '0x138ff0e340', '0x15935140fa', '0x1359870f30', '0x1152cf88b2', '0x120237f3be', '0x11d5f581b6', '0x10175428e7', '0x10e8284406', '0xef17e2814', '0x1051148208', '0xf08ec76b1', '0xe432d6d60', '0x100b477717', '0x112b4b0e11', '0xf05e1ac4f', '0x10d31d1dda', '0x10f6583e43', '0x131446a66b', '0x1576620383', '0x13c2880b40', '0x145c1819e7', '0x11d2a782d7', '0x133b7b7da2', '0x119ce8af13', '0xfd1d7117f', '0x11cc01cde9', '0x10863817d5', '0xfbf1703d8', '0x10c9b2a945', '0x12dd2a9391', '0x11008b8499', '0x1142af6753', '0x1001695875', '0x11d7b1c4e7', '0x117eee1d94', '0x13aec5962c', '0x152c0c3f60', '0x1411a715a7', '0x12a86a3b56', '0x11eafebe0c', '0x116d44af97', '0x10d3c29660', '0x10122f53f1', '0xfba7f363a', '0xed7464854', '0xf9cbbd57a', '0xf09ff5c38', '0xdc90d71f7', '0xf81f9a652', '0x10d81a24a8', '0xfc77321a0', '0xe799693f1', '0xe1ec737c9', '0xfe28167e5', '0x11aa0ac846', '0x11d0c0cff2', '0x107d3ae357', '0x128ca3d034', '0x13a3a67592', '0x13f4b67c88', '0x120e745ba7', '0x115b4e84d8', '0x1028af0872', '0x10bdbe3177', '0xf00138d6e', '0x10dfde4fe7', '0x10ed7dba23', '0x101a34734f', '0x11b63eeadc', '0xfbda3dd78', '0x1152a29b6d', '0x10c266566e', '0x12da1a5504', '0x11d7c603cb', '0x1148ddc12c', '0x12cefa9a61', '0x109ff96fd2', '0x12b35af174', '0x14c58545f1', '0x13ef211ee6', '0x166c7952cd', '0x1526f8b3b6', '0x17c9502a38', '0x152b15a663', '0x155b139ba8', '0x12afb12833', '0x13c40d54de', '0x12386468a3', '0x13b00835dd', '0x15b87d7333', '0x133741490c', '0x110058bc4c', '0x11ccd7aba8', '0xf933cb633', '0x10c213a3bf', '0xee7dbcb6b', '0x10c4c1d491', '0x12da36ba9e', '0x114cbdade1', '0x105fb0b91e', '0x12321b8c6b', '0x1141f8eb8a', '0x11762dbde5', '0x101aed3535', '0xf58c6a78c', '0x1081b83bb1', '0xe99c4ce07', '0xe91ba6766', '0xe0ebaa045', '0xf84f7784f', '0xee1bba161', '0x10a748ba7c', '0xfa2352ce4', '0xdf938d3d4', '0xfb83906b7', '0x10667f7473', '0x1197e04be8', '0x101fb21ba1', '0xe8efdeb98', '0xff238771e', '0xe54f5c950', '0xed5272817', '0xd2b813411', '0xed0e1cdb4', '0x10aad23323', '0x11b0503d64', '0xfb1952024', '0xf08f140ea', '0x10e9b4b00e', '0x1073541c75', '0x12811eaf65', '0x1239c7951e', '0x10fc9cfddb', '0xfbc243492', '0x1012dc0003', '0xf6ab80045', '0x1157deb983', '0x13828cbec0', '0x15f29d7084', '0x14922d1e68', '0x12f8222682', '0x1556bb3f08', '0x131ecd892a', '0x1206701d25', '0x128cdbe8eb', '0x123b879b8f', '0x100182a5f5', '0x1123620b9d', '0xf5c5c570a', '0x1147674740', '0x102ce61948', '0xf52d10bf8', '0x10cc42746f', '0xec10cf084', '0x10988fd72b', '0x12ab64bc4f', '0x150013dd3a', '0x12ca994e23', '0x132c60249e', '0x1253f91dcb', '0x149dc6071a', '0x13082498f2', '0x150a3dde25', '0x158172ef47', '0x13eedb190e', '0x13e6f35d65', '0x124f954653', '0x116af193b8', '0x139812a5bb', '0x15dc1090a9', '0x13f11bd432', '0x1214493602', '0x13d440d3a1', '0x132135df22', '0x1584993d50', '0x16603b6bc4', '0x13fdbd8cc7', '0x1234d4356a', '0x1400d1cf73', '0x1646fb9b70', '0x1649ce88ac', '0x168cb11e6a', '0x176279ab4a', '0x15d261103f', '0x188c8127e3', '0x1720b1fd93', '0x14995c3a0b', '0x172be713e4', '0x19f9f15580', '0x1854f2a9bb', '0x162c6f84be', '0x14337f0076', '0x1688627c25', '0x13b7562ca1', '0x158a65902d', '0x13b6268bab', '0x11778de105', '0x13a607e787', '0x12bbc85e24', '0x137637cbff', '0x1181541423', '0xff2524339', '0x11c5480c12', '0xf8c9f0a90', '0x117e2dbff2', '0x100918ea34', '0x120a33ce4d', '0x144b253cda', '0x1488677f99', '0x14a8c44d78', '0x12a50e8ba4', '0x1327cfd0d9', '0x11db22a78b', '0x14168620cc', '0x1208c4f202', '0x119fc836aa', '0x104d654690', '0xf2b6cd745', '0x111033d62b', '0x10a0850bdd', '0xecb86c720', '0x10a47abf0d', '0x1279f8c744', '0x127277a656', '0x127656b878', '0x1251bfab8b', '0x11d2b3d944', '0x12ce22ae3b', '0x10aa37d78b', '0x100739a97e', '0xec3214905', '0xffcf70ab5', '0xedfeccf04', '0xe13fc2fbd', '0xfd60bc7d4', '0xe9d4caa70', '0xd81555246', '0xf31147aaa', '0x1102cd8f27', '0x10acda8950', '0x12c1ff1bd4', '0x10a65e3de5', '0x126a242e63', '0x11be102bd3', '0x118d742c50', '0x103aa10d6e', '0x1241a8429e', '0x106594245b', '0xf19b228e0', '0xf39e793bd', '0xe4abc6c5c', '0x1013749b90', '0xf793f40a4', '0xeecac874f', '0x103f5ca1e2', '0x10b8844323', '0x12cf7ae75c', '0x1275f619ec', '0x107ee4687d', '0x127380b861', '0x10c3eb1f80', '0xf57a4ba32', '0xf398e3a4e', '0xd525c7305', '0xefc7da707', '0xfc3e4d3de', '0xdfd0b0f09', '0xd295c776b', '0xc0dbf34e3', '0xd83f5d4ae', '0xf34713b47', '0x10dd00add7', '0xf30e682bf', '0x1116960a6e', '0x11680550d1', '0xf5fade01f', '0x10f0d3407b', '0xf46585b87', '0xe0d422f3b', '0xc4b99e954', '0xdb0a33553', '0xf666f97f2', '0xe94765454', '0xde3a2a0a1', '0xf9d7b032f', '0xef01aa3ba', '0xd754d7e0e', '0xf23dc8d87', '0x11080e9422', '0x11f62591ff', '0xff53f890c', '0xf5fbbcdb5', '0xe060eff83', '0xfc6824732', '0xfc150e62b', '0xf4cd28411', '0xe0a83b6b7', '0xd97904079', '0xf4a78508d', '0x1031b01853', '0x1234b5f574', '0x11761544d0', '0xf47529c36', '0x10f283c439', '0x10bc06229e', '0x12d2d90bd0', '0x12b19717c8', '0x12ebcf9e7f', '0x10d4272d2a', '0x11a6bc6491', '0x13485434c9', '0x11256ab12f', '0x11abbd2098', '0xfb6366693', '0x11ac3a98d4', '0xfc8b5cd00', '0xe4d263301', '0xe7c1eedb1', '0xed2fb4253', '0xd5af3d3e2', '0xecdc47121', '0xff98edf32', '0xf028ca9ce', '0xdf0f8ece0', '0xf72d0845a', '0x1160855bc1', '0x107540f61e', '0xff9a9c6a7', '0x11ef06f63b', '0x1022c00b5e', '0x107281f0cb', '0xf3e3adc22', '0xea2127bb2', '0x102978e748', '0xe7ab659aa', '0xec27ef98c', '0xd2d88a6f8', '0xed2b128a1', '0x106e551643', '0x10f86a849d', '0xf3a2c2bee', '0x11211241e9', '0x1267b8ce19', '0x1099d46e7b', '0x12ad0c4e43', '0x12fe5fd256', '0x122012ef86', '0x110a245be3', '0x120710b99b', '0x1099e7ce38', '0x11331bda01', '0x1023281e87', '0x1082bc3fd1', '0xf008e0d8e', '0x10deeb5cdc', '0x118ff6fbbf', '0x128a3d6791', '0x11ef657c72', '0x11babb205f', '0x10b38ae82b', '0x10dea8f43d', '0xf0b789c71', '0x104aec6658', '0xff3a40b90', '0x11f20872a8', '0x10fc949051', '0xf6aaa2e21', '0xf827d0b07', '0xe20da606c', '0xfaabda376', '0xeaf6c5cfb', '0xd5ce8c415', '0xf084b39ea', '0x10e934626e', '0x12bf962901', '0x11187ecd4a', '0x10525f4ee8', '0x125c478c64', '0x14626f1497', '0x16a9745c25', '0x15d78d3157', '0x1505ca0506', '0x12b8544f40', '0x14d5fb1664', '0x16694bd049', '0x14e469c294', '0x12b2545b8f', '0x15080854ee', '0x12bea927de', '0x11fcad1734', '0x113909cf90', '0x100da48a23', '0x120f585ca0', '0x11beeb8230', '0xfff8a0ca3', '0x11e40c40c2', '0x10c7349e68', '0xf301c24a1', '0xf025fbc50', '0x10dc15c78d', '0x1276016008', '0x12b317f618', '0x14e180bcd1', '0x177d2b67f0', '0x14ead6e080', '0x127c3ad01f', '0x14cb4b35d0', '0x1340406d6e', '0x113af131f0', '0x12b3df8568', '0x1455c2f8ca', '0x1302eb30f5', '0x153441fec8', '0x140c8da5bf', '0x168d97eb6f', '0x180837397e', '0x17ec3d547f', '0x16b7788f66', '0x14cd5563d7', '0x13930ad4c2', '0x14ef268784', '0x15d1d81585', '0x16f30d1b94', '0x14a1e57ce2', '0x17353df64a', '0x1a1b06dc94', '0x197e3fe37d', '0x18245a8d50', '0x1aec01d13a', '0x1c9de2e318', '0x1ba1126078'], 'gasUsedRatio': [0.1470623871780353, 0.9664142423601025, 0.13460378195227266, 0.5505537804922442, 0.406981386090455, 0.49341678285708446, 0.2937792650969992, 0.16413203750962987, 0.960020710902771, 0.9991495264838801, 0.4248068867784998, 0.38285335759020905, 0.2524364862335572, 0.09423047670436747, 0.25658549161400535, 0.9526758033501291, 0.3085271080725826, 0.12806345217759363, 0.9557251178312544, 0.9999640943716256, 0.5879127245739196, 0.5790567811320085, 0.16903981994486458, 0.9997804710477449, 0.4580934535072646, 0.051124546238804386, 0.07594390002838979, 0, 0.9998023731240795, 0.298837864808581, 0.9998671779407733, 0.938496299168901, 0.7682689671772721, 0.059120158330045934, 0.6812542374014616, 0.2770902572724531, 0.5879914908746717, 0.8264003253557343, 0.07706654307006472, 0.2852891546113215, 0.2686173345269479, 0.2795464649307581, 0.9995389475692497, 0.4817741344111581, 0.6224413367103393, 0.5512751935437967, 0.18808613333333332, 0.3921581757919942, 0.14777189392172815, 0.999155474504479, 0.9997975996154392, 0.9447877803643084, 0.19017519599379867, 0.062205940911689274, 0.999526714852134, 0.9973519166092765, 0.9986498965813567, 0.040116908819812655, 0.11756407084734657, 0.793128145935679, 0.2369404334797219, 0, 0.9997346067582186, 0.9995349315815756, 0.5744305666666667, 0.2888943052891148, 0.4735800264502994, 0.05601072472101684, 0.9999267522950501, 0.32318535580799806, 0.9997309745933809, 0.10765573036659067, 0.9994380984079455, 0.37652216666666666, 0.5473583, 0.45825166666666667, 0.9986098241733614, 0, 0.46967196666666666, 0.4320779092549459, 0.5152823666666667, 0.08985768730168324, 0.965874247250015, 0.6564604675985087, 0.28419513333333335, 0.36600463333333333, 0.560755377626252, 0.999379566087595, 0.9999432666666667, 0.05255235070379559, 0.7087758443665932, 0.17440144823851136, 0.28342192301564956, 0.7421879233308536, 0.211196465056651, 0.8849089208031065, 0.8038833782828718, 0.12518234959063704, 0.32120412036616974, 0.799846736279195, 0.15370563766528011, 0.1868322, 0.4747531297645484, 0.8574422511036377, 0.6468051163070586, 0.21100310241306222, 0.6918178869999776, 0.07778083410141816, 0.36593867015956544, 0.7631397682130032, 0.999370235540124, 0.9514048621864013, 0.21403677977409094, 0.951251466313796, 0, 0.9508599696335084, 0.21474958401392116, 0.1748564, 0.6792125510561063, 0.2618783777531526, 0.9993941, 0.9999097785654358, 0.33639271396653303, 0.10060623588849861, 0.99937433216542, 0.9995044666666667, 0.22383556666666668, 0.9606827400289716, 0.4736624754183104, 0, 0.999489065594114, 0.7291864666666666, 0, 0.6609012722045632, 0.49842873282350625, 0.038777708303569386, 0.9997365234421374, 0.31098756666666666, 0.09298383333333334, 0.3066568333333333, 0.23223434350309743, 0.1636073193668314, 0.6784730955526964, 0.24331965419668783, 0.925582892782869, 0.0838895348906977, 0.9998422, 0.7189842, 0.13753246666666666, 0.9730902333333333, 0.31859500802533675, 0.15088500749267367, 0.5114116374481631, 0.9488075377740706, 0.2688947, 0.9999202554627927, 0.9525677090058267, 0.4285591497783513, 0.2777102681537042, 0.4861270600488852, 0.13553813700176354, 0.6794957755126779, 0.8304605950993796, 0.24753560073391948, 0.07412855334610428, 0.2712383905246755, 0.06786359775019751, 0.9995631527447276, 0.9995134474273734, 0.057947257872318116, 0.15043596896146944, 0.6455701940883323, 0.9342193486269816, 0.9997222575690323, 0.9996820357946591, 0.241138869274638, 0.4892999210560209, 0.6552777015460092, 0.45639005062028803, 0.16005140053087163, 0.803028691853403, 0.03244545593483996, 0.9997894504583414, 0.7296299005290666, 0.2651944022840179, 0.12932083024814128, 0.1475808931458539, 0.9996052655482524, 0.38869012386130153, 0.9996326485312804, 0.44796658219723057, 0.2864163711729007, 0.48468909007027233, 0, 0.2769324566912913, 0.9926996676941181, 0.9995734669810139, 0.8572083297116226, 0, 0.9998051965418793, 0.9996771695120571, 0.9405117300099751, 0, 0.9934297666666667, 0.24158873333333333, 0.4648211311679188, 0.20960912896852038, 0.9995325560227627, 0.12967017970667477, 0.8427919, 0.5168959178029321, 0.10481133465095684, 0.7473458, 0.20574174014258256, 0.9997450664287286, 0.1117732, 0.4678408465866919, 0.3983883384957826, 0.9994550316529538, 0.13477226666666667, 0.6266289666666667, 0.25707969501115496, 0.23792733125896437, 0.5255183726435405, 0.5051319, 0.18410286666666667, 0.9660175828363063, 0.9380161700984435, 0.047010884906299746, 0.8136270792247838, 0.06347076666666666, 0.17295769318739748, 0, 0.9998513117219944, 0.9999523333333333, 0.9657281333333333, 0.09631575233215235, 0.11840794384741425, 0.9994668666666666, 0.18659733333333334, 0.5895414128103906, 0.26889573333333333, 0.983018017093692, 0.29645621002579603, 0.2997797, 0.14479193333333334, 0.7207556845926714, 0.9302885682693304, 0.7896679477744196, 0.6835575759741418, 0.0848043, 0.09171252394630022, 0.9997034663899019, 0.35174343909548655, 0.9993426654396421, 0.20368143333333333, 0.15172303333333334, 0.587484612057007, 0.7216149738699925, 0.43979088092640956, 0.8371244653182487, 0.22521702651264086, 0.9473053012252608, 0.6112701112803213, 0.08045060839399884, 0.28944593333333335, 0.19068, 0.6254693041087955, 0.287218001403468, 0.2729779333333333, 0.5468662482247247, 0.43886663025336325, 0.641331898021543, 0.10294364894639231, 0.8296475016882744, 0.26349372496840756, 0.5838723664591705, 0.4164756186438978, 0.9361593262949566, 0.9412715881814109, 0.9996951379377257, 0.49017982629161344, 0, 0.5759551621077688, 0.28316442011247966, 0.7852009406002833, 0.09513316954398038, 0.2540026866311074, 0.8145489617653551, 0.2127185897393037, 0.12373812722914519, 0.33638608995660635, 0.9999374444957669, 0.35116105911666995, 0.29192847544578937, 0.9348330447108537, 0.9983353823350336, 0.48081421627295884, 0.21986721137194856, 0.5354256863654717, 0.9993514988397982, 0.19959133217544117, 0.7172248688882645, 0.18810154184914096, 0.1303416, 0.7034380405799596, 0.1777852992662793, 0.2421993, 0.7994400865778767, 0.16739712290398137, 0.4098685858847967, 0.9998535997267195, 0.24395819687605136, 0.9971152666666667, 0.47530056666666665, 0.09229516666666666, 0.9532395384092567, 0.9997667331156176, 0.1268399442561808, 0.03932256363344278, 0.9998975000167156, 0.9995895323727646, 0, 0.9973543236538938, 0.9365618052055664, 0.05422368578750783, 0.9822279163124296, 0.040398366666666664, 0.159186145270857, 0.8668799424212796, 0.9993861322022946, 0.2742883878146035, 0.5260983645339252, 0.5215023666666667, 0.7974370639596232, 0, 0.7628773283966859, 0.2961203527579918, 0.2559066371902724, 0.9402086049334664, 0.22106779906455054, 0.08389577451626852, 0.939055836748885, 0.2236079730380099, 0.39720645756580925, 0.9998197813663418, 0.9622774988131932, 0.5005043337363497, 0.9474216030658557, 0.3007240380796063, 0.5064611429450191, 0.8585969398234753, 0.75205722079954, 0.05747791870875429, 0.5915439520049323, 0.8987723403828538, 0.43214019697648454, 0.03493916953142821, 0.35183753784702954, 0.9994052316481563, 0.9999346666666666, 0.15029823289108482, 0, 0.538329414447328, 0.3774776379582575, 0.6011268883637044, 0.16238386666666665, 0.9994827333333334, 0.3821368900064246, 0.2992131840828754, 0.4767328571434291, 0.09291180986577208, 0.9998662333333334, 0.9682200668953233, 0.044065852815753204, 0.18589720832456366, 0.8272050383562396, 0.815565115575746, 0.06369642736251878, 0.7358132448083041, 0.999747740190632, 0.8167517074603384, 0.07456757508226507, 0.7877165670861772, 0.08207903178118009, 0.11643479170458586, 0.34399087033974424, 0.5250235666666667, 0.7022164333333333, 0.12063406666666666, 0.23512683333333334, 0.14796452068778496, 0.9996868663744086, 0.5613388379581816, 0.02804518568434661, 0, 0.9996250006095243, 0.9825557130535367, 0.9994545013077206, 0.34038216324184917, 0.7068035359433519, 0.3230688053398674, 0.2091758615349405, 0.8831947624923379, 0.41712600772976993, 0.14770293103936685, 0.5636998276323566, 0.9998025393941082, 0.999939366266484, 0.40750816666666667, 0.23270143294927498, 0.8129224788735931, 0, 0.24498573213955774, 0.4609000446036402, 0.9947237517172965, 0.05171851633366277, 0.44513606315653137, 0.15990892538622278, 0.9997522654940567, 0.9999490333333333, 0.9483485, 0.4397432666666667, 0.06399679286823583, 0.9482053183249638, 0.40438003333333333, 0.9485760178147294, 0.28075052870049344, 0.17592548877024033, 0.5318259560922481, 0.41154512241443697, 0.8161560124420353, 0.19242823333333334, 0.26244496666666667, 0.999912714765969, 0.7535520366485675, 0.6898182, 0.1689277, 0.25681593333333336, 0.30162136666666667, 0.15245366666666665, 0.9998740230165244, 0.3397500064790069, 0.9605241433473599, 0.04476335320914954, 0.9141619666666667, 0.2634839, 0.06396323333333333, 0.9981679666666666, 0.2430793, 0.37436526768389333, 0.16260478204153053, 0.9996986721287168, 0.3037305437546998, 0.15197025436353595, 0.9996032655425857, 0.9996701211919994, 0.4204681644456916, 0.1046673, 0.6943959776721969, 0.9998474021187627, 0.861032163572153, 0, 0.4465310192825994, 0.9094352433998563, 0.15731992283513285, 0.06620643333333333, 0.9653374, 0.39998123333333335, 0.046804237671419474, 0, 0.9996714538520037, 0.6662090666666667, 0.051593547766060226, 0.5799238079288874, 0.9994835618828364, 0.21026102582058154, 0.08387959833635901, 0, 0.969632060677021, 0.9999731998999463, 0.3015869666666667, 0.4193504623931936, 0.7882826469456811, 0.06545718221370783, 0.7639728644700722, 0.9987104048838185, 0.1869494359217163, 0.6045382312590875, 0.539668449173571, 0.0610347010185652, 0.6783278666961646, 0.38327853333333334, 0.706750225071884, 0.7947523666666667, 0.21079296666666666, 0.21544836666666667, 0.8885502, 0.14799715255280113, 0.797384277558659, 0.15841207057151227, 0.9995598737667999, 0.49047151065936245, 0.4156948872865951, 0.2487654659384913, 0.9980018924071912, 0.1997135, 0.9042423926964681, 0.3974712376398218, 0.9995149398751558, 0.3174789698767094, 0.7152348858122788, 0.7144066267350861, 0.4269504416258249, 0.8394871183421222, 0.675384224497028, 0.2651753875318497, 0.6726562071663067, 0.33333413489879066, 0.9997178074498031, 0.7172524273238969, 0.3396205847801489, 0.09002700977620237, 0.5409512506602657, 0.24021210089972383, 0.2748834125975521, 0.5932918809936628, 0.0932076146572877, 0.970510355589006, 0.09102736666666666, 0.4232085, 0.40626273333333335, 0.3698147574439774, 0.5889528496893264, 0.18945386666666666, 0.44082676666666665, 0.9968618333333333, 0.9994262730890048, 0.1817130159212794, 0.5529084788146642, 0.2617377645275791, 0.16048296862170253, 0.9488564532197565, 0.758608762913971, 0.2926778560143244, 0.9994493984399623, 0.6556088666666666, 0.9996024117550788, 0.09312799204901248, 0.23393608627917706, 0.42069566932555946, 0.2828426862617928, 0.14909010631095865, 0.9967858552808068, 0.5549486390211439, 0.49590779236465576, 0.13856681760506948, 0.2508781024705185, 0.6121858310129334, 0.2530652160254714, 0.902176779522169, 0.13670590587408285, 0.37535878987997284, 0.9995572333333334, 0.08553268933780503, 0.9999634332992045, 0.2579829537630739, 0.8716951895541935, 0.46024123333333333, 0.9966797333333334, 0.25669566666666666, 0.09243396176366221, 0.9523581222009141, 0.5094270643269087, 0.11972855682663941, 0.11577577115530598, 0.4721795887695152, 0.12386673333333334, 0.9999662003279536, 0.9995725329343641, 0.3844477, 0.9986608410220753, 0.3248730473772791, 0.9995490666666667, 0.1015834629182063, 0.06672819121112353, 0.9806250950095353, 0.1430227717432663, 0.9973392333333333, 0.32386834256348673, 0.12697828865657468, 0.9993012150213728, 0.9999021333333333, 0.2143220145527892, 0.9116473381561542, 0.08735681384952933, 0.08113333333333334, 0.6582100087402015, 0.46159873817683705, 0.10873038032241915, 0.7027791686137537, 0.0354471147904443, 0.8676256115240643, 0.18575519647656138, 0.2944919129987096, 0.9996763011494783, 0.7804913045513202, 0, 0.979715453599802, 0.5327188427033877, 0.9992061333333333, 0.9996497753277258, 0.18269306666666665, 0.6214287, 0.0015901194182786158, 0.8163316952429156, 0.1631868, 0.09274509892243109, 0.9999376999418533, 0.21397064203788257, 0.31170789885980654, 0.7645517707858702, 0.9946540181863849, 0.1052144066422383, 0.5607829746371181, 0.20916808080294447, 0.9591024397515482, 0.42226776666666666, 0.9999780118619165, 0.8026737727159263, 0.2915921215791062, 0.2187527156301597, 0.34137066666666666, 0.3903624, 0.36236361473645684, 0.3202543989041056, 0.4147457196245517, 0.2742728882841523, 0.7078914623464674, 0.3531438566186429, 0.16655045296317916, 0.9997631993290648, 0.8447144236589033, 0.2470816866559103, 0.1693989876677059, 0.4019750628938432, 0.9998672030285184, 0.9480865724905775, 0.5342421, 0.20222186666666667, 0.9997688590424784, 0.7350233438558991, 0.5644934333333333, 0.11927136666666667, 0.3449760333333333, 0.2239686387090327, 0.6441340258941471, 0.08404732012050713, 0.9997733907579299, 0.5126139919501904, 0.30497365184904635, 0.899825722646093, 0.05484929521049334, 0.9020161065236322, 0.36990097552468254, 0.9994435333333334, 0.2858898714594802, 0.374856083199011, 0.8526549, 0.035612041825509276, 0.9994211327930572, 0.9429713583046523, 0.3387284322930736, 0.9995715333333334, 0.27318776666666666, 0.9981312666666666, 0.05973453076929622, 0.5354244508897669, 0, 0.7310851336354945, 0.18722862406006785, 0.822134016534976, 0.9130592502296749, 0.03872049728150209, 0.039029062792192704, 0.6879407662761183, 0, 0.803808901964668, 0.057846466666666665, 0.9999121809113266, 0.9970759972709308, 0.1705717, 0.28589796666666667, 0.9450875112881062, 0.293791567392321, 0.547267235480441, 0.18927229295068995, 0.31163807335763977, 0.8023268732594743, 0.03811333333333333, 0.49139524745914387, 0.3595081171452086, 0.9159664933817309, 0.33565554647077567, 0.9762025491141383, 0.2550466978005337, 0.07524869606463584, 0.9998300677938659, 0.673226108410615, 0.7909405192530138, 0.16590517948219538, 0.11169244655637743, 0.8812497326025143, 0.09506306826695839, 0.6397593310854581, 0.05161326244628516, 0.9999279333333333, 0.999819409679781, 0.7451402, 0.04885550740297901, 0.33209791059467486, 0.9996317066722152, 0.3906371273309149, 0.9994065526846985, 0.43976065899434164, 0.2280914260760322, 0.20521928667393224, 0.5861121185802481, 0.3365527301515701, 0.9998088739711556, 0.9997261318124377, 0.9997969701493684, 0.24909207835613031, 0.1885460460223929, 0.9996551289114182, 0.08414316093675396, 0.2708876645649601, 0.6165221677937011, 0.4314957087347594, 0.011502308460655171, 0.7829743856808563, 0.08515380334194661, 0.9994889990487341, 0.2445364221213605, 0.28933826331730866, 0.8848693832387987, 0.013323292837036394, 0.9993434176947579, 0.9997753468660404, 0.9993805649116005, 0.07926295819038778, 0.5813010520934041, 0.32364637053703743, 0.9994064724726268, 0.1925744663879343, 0.9220719437127906, 0.5885272514663903, 0.20749479305601864, 0.4938032909355381, 0.18017940269679383, 0.3048978, 0.9997858, 0.9625067333333334, 0.14907053333333334, 0.12639563333333334, 0.8871560666666667, 0.3589173666666667, 0.9993766666666667, 0.6594841137629105, 0.07369626666666666, 0.14288028926913798, 0.8947715203257772, 0.9547422620697644, 0.5019806537632422, 0.546889143004182, 0.6481342660847875, 0.23266664645191085, 0.9998767858563281, 0.26844046269293054, 0.06266283747855252, 0.9995238784790761, 0.9841887039252848, 0.24676785016824487, 0.14519704334686181, 0.14418550486413842, 0.9616757339345245, 0, 0.8701437898229596, 0.1603464093163554, 0.04452698313490048, 0.9995816980200373, 0.31372026611578835, 0.6554993478296377, 0.0978582, 0.14384926881099394, 0.9575436937074474, 0, 0.9999797, 0.16675613736814, 0.9999686999707866, 0.9997122666666667, 0.5471661922133038, 0.524627096141709, 0.10995823207933221, 0.609577545183254, 0.22863850753705783, 0.9999970666582577, 0.09105324117596637, 0.40903835434574654, 0.1999975, 0.2220772, 0.9993296120328167, 0.39773113788239534, 0.059270699824364996, 0.9994848272008566, 0.9407882402497978, 0.4936537390857678, 0.5032791082795407, 0.4690330622603431, 0.39163924536763, 0.7204245469324602, 0.0447429, 0.3471781, 0.1840580672972842, 0.8321769666666666, 0.22143423613508076, 0.2857731666666667, 0.9995147333333333, 0.1914228, 0.19639833333333334, 0.9995141333333334, 0.9790057675346691, 0.42105330701819677, 0.9995653666666666, 0.05049664330552117, 0.9239645069819292, 0.3539898132427844, 0.4571918019977571, 0.19838373333333334, 0.9997107, 0.0925430015743707, 0.1837388705245219, 0.5333276723209928, 0.2545670360881468, 0.9993194007683784, 0.3501177517496604, 0.3580516311070399, 0.8545844642721495, 0.6165128569236917, 0.9999054900675979, 0.4256408432335017, 0.07420801545857543, 0.974187422342945, 0.13452176373289657, 0.1605014812109034, 0.4693578205548238, 0, 0.9998059543622028, 0.7079014774722255, 0.04919462465675849, 0.2635526975615301, 0.16330199717840882, 0.9850862858632933, 0.9999849706476749, 0.936291981198307, 0.10333383640659786, 0.9995608810875012, 0.5744615787762094, 0.03290921014920262, 0.9077018997772078, 0.10664307540067264, 0.17973505997893785, 0, 0.9537249687631366, 0.9996788929499301, 0.2869604456418519, 0.3104983250981205, 0.9970647674909098, 0.3265142698430592, 0.10377505415962447, 0.9998792129336905, 0.9997034870134293, 0.7184281664337628, 0.05382148421045593, 0.35360539132926605, 0.14868046897084108, 0.9996578990307139, 0.494856629592581, 0.3844685642629443, 0.1708476474481984, 0.3720817258509906, 0.9999552356563542, 0.7362699351834132, 0.9969239570662602, 0.33639601978872274, 0, 0.9368772606450199, 0.44976091977685845, 0.9993659, 0.4723936924406683, 0.5486634275882141, 0.05765575658019859, 0.6955203076782391, 0.8696546967453482, 0.05682680434813611, 0.6224053396273093, 0.056538252540545016, 0.9992440270227056, 0.07250727210393763, 0.12426313333333333, 0.5513189666666667, 0.5936977541430792, 0.10365653333333333, 0.9338344893788785, 0.8164212619931779, 0.25840066666666667, 0.21521292208508275, 0.9324406195854722, 0.9993472228722728, 0.28845357412694483, 0.38266496613421946, 0.990371929712061, 0.09897687230519674, 0.577232835493034, 0.2071349207991026, 0.339929747068714, 0.9179311644253246, 0.0835525225372146, 0.5774634402775196, 0.071298, 0.9993674333333333, 0.9339116981065344, 0.631310322556301, 0.0891337, 0.9996174666666666, 0.7979660333333334, 0.10787830983622174, 0.9999901474338007, 0.5680405073278961, 0.317126091160239, 0.260407310455667, 0.7319257619751939, 0.18350624276054825, 0.6441945307041983, 0.2529453919225965, 0.5925441653011981, 0.13453547704802254, 0.9982243164537052, 0.6639719136944355, 0.7226663844981035, 0.3695022283343677, 0.4541181114193779, 0.26805114033060873, 0.5403386196041255, 0.0672835164247364, 0.8317717185629944, 0.4162941860904816, 0.9999383528530912, 0.28628565930208766, 0.13030181325250573, 0.52414563644287, 0.1437361092991496, 0.9356137335681526, 0.2493555472349075, 0.13982342463053396, 0.9997321491642984, 0.999869044116569, 0.9346128001283757, 0.14739359302050237, 0.31892084166326784, 0.9996272720623377, 0.9409562653365516, 0.9468931740226396, 0.35527560660867474, 0.34994333415796897, 0.06188561857703546, 0.9520987088880123, 0.8024497844289898, 0.22887366332553102, 0.07962588632768809, 0.9995084614304531, 0.06510531735145406, 0.3383010270582071, 0.33005291238904444, 0.22838013455778142, 0.9999971666559, 0.43041816666666666, 0.10608533333333334, 0.9732061666666667, 0.25123200528017725, 0.1208837, 0.45294786666666664, 0.9931442, 0.8799000775742487, 0.5517039, 0.9665956666666666, 0.99961, 0.06207441766448397, 0.03491816708756152, 0.9996072333333333, 0.20315963333333334, 0.08012736666666667, 0.8418144666666667, 0.8491224333333334, 0.2396401, 0.9613506589184339, 0.2820998966265702, 0.9995877, 0.7623130653750053, 0.48181068302330415, 0.29833013114785495, 0.1628734706971453, 0.26392746666666667, 0.7778728595139821, 0.6692011245877163, 0.7071000333333334, 0.09615346666666667, 0.9993249, 0.9994139333333333, 0.4061639190669689, 0.28799716879735754, 0.9605906800170047, 0.7518158630471978, 0.3619610058772006], 'oldestBlock': '0xd0f714'}}), - (('0x400', '0xd0f712', []), {'jsonrpc': '2.0', 'id': 0, 'result': {'baseFeePerGas': ['0x1503951062', '0x1504b837ff', '0x157a2a8830', '0x13f9d54e7f', '0x14199adf2e', '0x12184ca84b', '0x145aa84eec', '0x16e5e9da35', '0x16803653bf', '0x19062fbf1f', '0x19639bb9a7', '0x1644ba97d6', '0x14a96b34b3', '0x1645ce9d83', '0x1504d7bfe4', '0x12757cefd2', '0x14c410a11f', '0x175c46cf24', '0x1a475b0a35', '0x1ad7cf48e7', '0x1846df4434', '0x1b4f4a3678', '0x189d272bc3', '0x1bb00802f4', '0x19cd6da643', '0x1cdbbc1b31', '0x1a83b4fda6', '0x17851afc1c', '0x1784e9f401', '0x15ca16ff33', '0x1845b0f0c9', '0x16b22c1c55', '0x1548480d25', '0x162f34ba34', '0x15c3e2a18c', '0x15178c057d', '0x147e67b290', '0x16bd5161c1', '0x1994d56769', '0x1829ad4102', '0x185c64c308', '0x16721b343b', '0x159f6a9449', '0x16030b5eb7', '0x166ab2cec9', '0x1472fc4838', '0x1407f4edea', '0x13d07e2c93', '0x121d7cce0c', '0x13eef57c16', '0x124126cf96', '0x124757695d', '0x10713ea734', '0x127d5a31d9', '0x148a444528', '0x171b36b563', '0x1834b6710a', '0x18059bdebd', '0x1677c3e785', '0x1945cd4a6f', '0x179fb16c81', '0x15b84d36ad', '0x16932d9bf7', '0x1480f474fb', '0x142a41ac2c', '0x16ae498187', '0x168f8efe7f', '0x15f2862242', '0x18b026d6c1', '0x192c4bf845', '0x170cc74b27', '0x17fd6ecb6f', '0x14fdc0f202', '0x1795f02ce7', '0x16820623fe', '0x158c4907b6', '0x14f00f8ab3', '0x148fccb81f', '0x1569156956', '0x1556b5909e', '0x12e3851c33', '0x1396d4aa1d', '0x14139a6a1f', '0x1509c51975', '0x14baad288b', '0x1282b7da75', '0x14d1e14b83', '0x176acbad11', '0x15bd01e070', '0x159e05cc3b', '0x13a6033be3', '0x1263838ef2', '0x12af954967', '0x11b2409b6a', '0x13e82f3532', '0x1664631ea5', '0x19303d83b9', '0x169680035d', '0x140a97eaaa', '0x15d3697413', '0x1470d48825', '0x121eeb143c', '0x1405d8ae0f', '0x12d3b27c7f', '0x11f2fa097f', '0x10e4a78663', '0x13011da6a5', '0x1560ced2dc', '0x149fd63dd0', '0x12aa94ea40', '0x141e57ba5a', '0x122422d917', '0x120b754667', '0x1070e11630', '0x10ca1789d6', '0xf66d41197', '0x113a517d59', '0x1102383b81', '0xee1f13411', '0x10bd9b2881', '0xf86d653f4', '0x117757294d', '0x12f46cec64', '0x1199f82732', '0x113533ced6', '0xfc9f1a873', '0x117cafae20', '0x13ac153633', '0x125756ffeb', '0x14a219b824', '0x16b790276d', '0x150f793c66', '0x150731b32f', '0x14b274a318', '0x12ac34ad1e', '0x12bfad22e7', '0x15175e738f', '0x17b9996c62', '0x164dc2d2ea', '0x181773d9d0', '0x157132d308', '0x12d8d3014e', '0x1533b770ec', '0x15f95b342c', '0x1877e9d273', '0x1668f1d603', '0x155a102075', '0x16183b35ce', '0x185c882984', '0x17419ae59f', '0x1797380d0a', '0x16d556ce42', '0x18db8549f2', '0x19a910fb40', '0x19247fede9', '0x1876d17b94', '0x18b438e5d8', '0x15dfa62356', '0x189b854260', '0x178ceb7532', '0x16f554fba5', '0x19d37b25af', '0x19e6bf6262', '0x16e771591a', '0x1935f453d9', '0x1c5bab233c', '0x1a7b415f3d', '0x1dc98ebf00', '0x1c137d87ae', '0x1b7cc269ae', '0x1c6aa3b816', '0x1daf855d06', '0x1bb663279b', '0x1a0803a378', '0x1b4da96393', '0x1eaa1064ea', '0x206d22e95d', '0x24781fcba0', '0x263bf237dd', '0x282a936682', '0x2d0433d4de', '0x2985043108', '0x251a74868f', '0x24b7c9c2cd', '0x214f3ad717', '0x1f282bbbb7', '0x230cb84019', '0x20e672eefb', '0x21994224bc', '0x22ec10d449', '0x1ed37d7674', '0x2263f52d87', '0x2576b8a675', '0x21ec48563a', '0x1e5222355c', '0x1d87c3bf5a', '0x21379f0eaa', '0x1f4598bd76', '0x232dd1280e', '0x1ff032280a', '0x23ed889c3f', '0x284b34fab3', '0x24b6f563ae', '0x23a6640c68', '0x23e6232a84', '0x202c706d91', '0x2431f25fee', '0x2299458dcc', '0x2116b4fa53', '0x2334cfdcdd', '0x1f37e61821', '0x1e7c72aa9a', '0x1f2bf70bcc', '0x2167bf8ba0', '0x1f7235de99', '0x235fa670a7', '0x25531b788a', '0x20e40559bf', '0x24f5f890e2', '0x2057397ec6', '0x1d0738e689', '0x200ec289e6', '0x1ec30f45aa', '0x1d2aaf0017', '0x1d9e6f2ecb', '0x1c5ce628b6', '0x1ab909db62', '0x1dd4042e89', '0x1eda1c296c', '0x1f9eb5d695', '0x215ed0203d', '0x20f4d833c9', '0x24cefe84a2', '0x267b7cce82', '0x2294475e4d', '0x214bcd3885', '0x1e30e2430f', '0x1e3283bece', '0x1bc6915e23', '0x1cc2384914', '0x1d41a47529', '0x20e96ce465', '0x1fa5f263bd', '0x1fdfa60a29', '0x1c26492129', '0x19ff5d003a', '0x1892d23798', '0x1a55bb95d4', '0x1d9fbb29a1', '0x21528ae5bd', '0x1dab6d146b', '0x1a07702b23', '0x1cb5853e14', '0x1990da35ee', '0x18d08586c9', '0x16492f98cc', '0x1822251bbd', '0x1adde650aa', '0x1993915529', '0x1cc5213869', '0x1a028ca8b3', '0x193e68df1d', '0x167cec580b', '0x194c3380a4', '0x1a3733700d', '0x18712e131b', '0x1969c82db5', '0x1b6f1f5574', '0x18abb4524f', '0x17f7f72dac', '0x15fe5aa338', '0x18bc83a4bc', '0x1664345d46', '0x193037bb8b', '0x190a835dc5', '0x186dbb0468', '0x1605aea3a3', '0x14cfbf770b', '0x15ea665772', '0x185916c42f', '0x154df3ebaa', '0x16155b9c81', '0x18d73047a1', '0x1aefa14a17', '0x17ce837e77', '0x1850aa2cbe', '0x168b6180e6', '0x18454fe0de', '0x178597fe93', '0x1a7613af06', '0x1dc3fefa06', '0x1ae33b3e29', '0x1e3e790e88', '0x1dcca21335', '0x1eee87c378', '0x1e30f1c7a3', '0x1d830f3fd3', '0x1aaa668edc', '0x1c3a00bb48', '0x18b2c0a3df', '0x1b509202fc', '0x1aa9cf6d15', '0x18f9b862b5', '0x171ed34769', '0x192cda642f', '0x1709856ac2', '0x15033bccd8', '0x1262d4533d', '0x14aea7692e', '0x1744748b21', '0x1a2c9fcaec', '0x17cfbfc33b', '0x188d109d18', '0x16c9fa0e4f', '0x19a2288e29', '0x1773c727b6', '0x15b62e562d', '0x16ecbbf5fd', '0x183e6c8bcc', '0x162197caca', '0x14042feb57', '0x1683d67785', '0x16869a5fec', '0x195718c325', '0x1c81214280', '0x1bb896939b', '0x1a6661d7ec', '0x1db31d433a', '0x1e23fe472d', '0x21e7bd0b12', '0x22305c64fa', '0x20cebb9cab', '0x241468f272', '0x2009941717', '0x1d454dde28', '0x1f15c74ab0', '0x1c0fd406ff', '0x1f9159e758', '0x1dae531f41', '0x1ae4c9fec3', '0x1dc3373a11', '0x217a9df624', '0x220eb637ed', '0x1f6ee466b7', '0x235beef7f6', '0x27c68a8e10', '0x272f080705', '0x225d8308a8', '0x26a7587fca', '0x23a1f517ad', '0x230330e673', '0x1f1c0ac050', '0x212faf4f7f', '0x1e0c3459d7', '0x1b7807955b', '0x1a647414c8', '0x17d8540cba', '0x1ad252a10d', '0x18afccf88f', '0x1bc58a65d6', '0x1e9acc75ee', '0x1b6c5e8697', '0x1d29c02910', '0x20ce12b3d7', '0x1f024e2e97', '0x1ca1348c90', '0x1b9fb88b71', '0x19bd77be3e', '0x188dadbd02', '0x1b9f0b975a', '0x1943d7a197', '0x16844911a7', '0x161fb34894', '0x135bbcdf82', '0x15c68efa10', '0x183b9f0785', '0x1acb685a63', '0x1823dcdd36', '0x1648f627e8', '0x1912112525', '0x1c33d8271e', '0x1a1f99b091', '0x1cf476999f', '0x1a3ccb39b6', '0x1b97686737', '0x1a07e296e3', '0x18a9f81025', '0x16b31ebc05', '0x19879c7a78', '0x1b2a10dec0', '0x1dcfa543e1', '0x1d0624cb50', '0x1dfa4a0861', '0x21b85a8be0', '0x1e0dc05198', '0x203e4cc10e', '0x1e97d34519', '0x1b6f44aad2', '0x1edc0465a5', '0x1b13e117ad', '0x1b652fb00c', '0x1871bf5f00', '0x16edf7dd2d', '0x15a68c831c', '0x17baf7c0a5', '0x180fe18c85', '0x1b11ae5e71', '0x1b4c442678', '0x1a7dc100d5', '0x191f5ec8c7', '0x1b9f0c12f7', '0x18b8ac662f', '0x15a196d96a', '0x185531d49a', '0x16772d1a56', '0x171b716bf3', '0x1438033e75', '0x16beb68195', '0x19966dd992', '0x1cc917d5d4', '0x1c6aeb115e', '0x1b537ee658', '0x1d41b62c8d', '0x19997f66fc', '0x1885ac5ea9', '0x15ef865a14', '0x186570afef', '0x1b71193ece', '0x189aaedfe1', '0x1949925130', '0x185bdab2ba', '0x1b5fc2f9e9', '0x1aec7ede2b', '0x1bc28e98c9', '0x18ca9ff75e', '0x16d9e5bf8d', '0x18f53f3552', '0x16b8929d29', '0x15d48bf615', '0x15abbaa16e', '0x1728f237b4', '0x1979563cf6', '0x1c308cf6ec', '0x19d7118aee', '0x1a361a51e1', '0x17ea288f93', '0x1701d10780', '0x150ca771dc', '0x1730f39fa2', '0x1478035d9e', '0x146c7cbda3', '0x13d96c73ac', '0x144f1a20a5', '0x134c3200c7', '0x15b56bb246', '0x12febe3bfe', '0x1536c61e79', '0x17dd5652ae', '0x1ad8875bb8', '0x1915118932', '0x1760ed6b68', '0x1474cfbdfb', '0x1299ea0bcd', '0x1483fb2476', '0x1713a2d6bd', '0x14cba309bb', '0x1764989e90', '0x199febb0a7', '0x1a845276e3', '0x1965fb6216', '0x178bb2ffd8', '0x1713556f68', '0x1591be120a', '0x15ea95a481', '0x13f11c5ebf', '0x162edc5aad', '0x18ed6f3d61', '0x18b3ad496b', '0x1b80993e59', '0x1a16625439', '0x17a65108e4', '0x17d6eae0be', '0x168f341ab4', '0x1960831ff0', '0x1bac62b105', '0x1912e44987', '0x17f3ac4cb2', '0x15a6aef27b', '0x164eb18821', '0x17ca896c27', '0x15c06642b6', '0x15a5a6cf6e', '0x140fde6a8c', '0x1691193efa', '0x151ce90d40', '0x15b33e684a', '0x1530181510', '0x13dc616acf', '0x13e08a7c14', '0x11a8e7bf80', '0x139cd21606', '0x152386feb9', '0x1678944a8e', '0x1422651075', '0x16a6512683', '0x184cce5558', '0x162dedf1b2', '0x182729915a', '0x17dd7b5e1e', '0x1521b9bf21', '0x128a301df3', '0x127a0529f2', '0x12a7feeff7', '0x14fcb9b7db', '0x154d6ef106', '0x17f718577b', '0x18dc0e752e', '0x1bf6bfe76f', '0x1f7468932a', '0x1ba52f71b7', '0x1a16cc104b', '0x19cf7c911d', '0x18fe6e34ef', '0x1c1db94525', '0x1bbe027ea3', '0x18e37751c1', '0x1bafe1aa99', '0x1f24fbc905', '0x1be4026bdb', '0x19e41aa813', '0x1942a3abfc', '0x170802e5ea', '0x1712ea6d9c', '0x19f4d15975', '0x1782b37772', '0x1943432573', '0x161adac0c5', '0x17dc4c77b2', '0x17a5c6fa48', '0x1a99c68fdf', '0x1b7b154cdd', '0x1aa4d560ae', '0x181e39c20d', '0x1b21b32214', '0x1e854c12f6', '0x1aec9f78e8', '0x17fa0e8472', '0x16b8efcd7b', '0x13e1d1d3cc', '0x165e066fbf', '0x18deb47fbd', '0x17b947002a', '0x1a2bdde25e', '0x1a8732e946', '0x1a6f1149fe', '0x17635253ee', '0x179a497f91', '0x1a482c16f6', '0x1d90e5413d', '0x1be6f9181b', '0x1f50e6c017', '0x1e442b7d27', '0x1cf48e31bf', '0x1aff88858e', '0x193c388ba7', '0x17d1c37f2a', '0x15f8f3e24b', '0x1735ea054c', '0x14beeb5116', '0x175696cad4', '0x1a3b04a2c4', '0x19a4ff071f', '0x16ecdde9f3', '0x1660bb5556', '0x158b92dd78', '0x13b71dd04a', '0x121739c44a', '0x1456d8d122', '0x142633d92a', '0x1535b9c2c7', '0x13c1aba9a1', '0x114976346d', '0x132876f98e', '0x158d3cae0a', '0x136a6dccc1', '0x15d7467746', '0x17cc97f372', '0x164bc4132d', '0x13af5bc0bf', '0x1624d18e50', '0x168ef456e3', '0x1507ebf786', '0x15424fc732', '0x1471e60c67', '0x16ffd3f107', '0x1546f62668', '0x1797230827', '0x198edc62a3', '0x16ab572234', '0x168edd327c', '0x13eefe5165', '0x166cccc138', '0x1630e130d0', '0x14627a33a9', '0x12d5ee17fa', '0x153073a5f8', '0x17d5e6814a', '0x1ad09fffac', '0x18761f15cd', '0x1b846a27a7', '0x1a52986235', '0x1ab37cf5bb', '0x18efacdfce', '0x18dc728f86', '0x1931d195a8', '0x177736b4c2', '0x1a6618c05b', '0x19d9751809', '0x16fcb9fc69', '0x19dbdc91e8', '0x1d174615f0', '0x20b8e40268', '0x1cc96761da', '0x1d12881a2b', '0x19ab0be0e8', '0x167a0d7895', '0x19486e0a4b', '0x1c70d984bb', '0x1ac2d24b26', '0x1e1a8aff94', '0x21ac0c64f6', '0x1f651bf5ce', '0x20fc61dce7', '0x217d352f82', '0x2010eaa5d0', '0x1dbe73e545', '0x217573a2af', '0x2017338fc7', '0x23e135ffdf', '0x22ad0e54bf', '0x20548f3224', '0x245b7f45d0', '0x20c9fc23a5', '0x24e2423549', '0x296cb0ef40', '0x277d5098c0', '0x2c21d88895', '0x2feb14f679', '0x334b3538ce', '0x2ed9abb7c7', '0x30b3f06fb4', '0x3196f86622', '0x31d0df2422', '0x380aea47ba', '0x3c2321ec7c', '0x34bbbf2b20', '0x2e49734911', '0x33beaa8dde', '0x2eb55f026c', '0x2b04894013', '0x2dfcf87ba1', '0x29553a4b5b', '0x29af6bb10b', '0x29f2447098', '0x2972569326', '0x2a153a0386', '0x28c57f3eee', '0x29172b1aad', '0x2b5b81287c', '0x30c5cc5845', '0x36dd74c8e0', '0x310de08b3a', '0x372d8c7158', '0x35d57faa58', '0x31b6dead63', '0x37eb425e34', '0x30edda126e', '0x2cbecbefcc', '0x2b01867eed', '0x306050af44', '0x366c3ad9a8', '0x3d3795ac54', '0x4114f9c8c0', '0x4051adeb07', '0x4859dd65b4', '0x4882d6a64f', '0x3fd6ccfd69', '0x3db6420498', '0x364f91189f', '0x3ca384d078', '0x43b3ad8e91', '0x4c293a4c2a', '0x497aad833d', '0x4c5acf4472', '0x5060245522', '0x5054be23cf', '0x47eec1292d', '0x45968cc6b9', '0x3ce3bb2de2', '0x447f6e6b66', '0x4449bb3fea', '0x4985f87bcf', '0x42806cb7be', '0x4acf7a8dbe', '0x53d1f95a4e', '0x5d5882e556', '0x5237ce1548', '0x4fd6c2534c', '0x497d974718', '0x45afeaf1cc', '0x4e659672d8', '0x5832489ca0', '0x4e61993de3', '0x5675aff565', '0x4f6f53d93e', '0x4581695e17', '0x43bc88435d', '0x49f9d11209', '0x46036ed1d2', '0x4451cb3625', '0x3f889db51e', '0x475e2af6ec', '0x5040e9e3dc', '0x4dd94ed239', '0x4a58c8bd4e', '0x51f8b79080', '0x4866198ae0', '0x516fff1d10', '0x5b9daa025a', '0x5c31d03f67', '0x5289488a2c', '0x5cd9a166ed', '0x57b3de707e', '0x4ffed724bc', '0x59fe76aa03', '0x5077f1982a', '0x53c15af3a8', '0x4e2583adbb', '0x4d2ac0b42b', '0x4974a335d5', '0x52a0697bfe', '0x5cf4277cf4', '0x54132f160b', '0x5e375ce429', '0x5a0a8ee37b', '0x558861dee0', '0x587ade4e29', '0x500b5fca7e', '0x464a6e0297', '0x4f12e9a300', '0x527b1df4c9', '0x5150f15b33', '0x5668bae2d6', '0x4e54a8169f', '0x517a843d48', '0x5ba389ab96', '0x5dff8d5864', '0x699892b8ec', '0x606e74c850', '0x5ba3012ce0', '0x6716471ce4', '0x705b98715b', '0x77b59bbee1', '0x726ee263ee', '0x7b8292f983', '0x8a51452d81', '0x80c63dbacc', '0x895a56ae1b', '0x79e13d59bb', '0x88f3ca76b4', '0x884e49eb07', '0x793a8c3c5d', '0x76b661d3f1', '0x706bc7da8d', '0x6b896a12cc', '0x6614297ad2', '0x5bb08e8727', '0x572f75bb25', '0x504c6ff2f5', '0x476a88c507', '0x42b842e0e6', '0x40a552f37d', '0x3b650bacd8', '0x3814385265', '0x3294585928', '0x36e41709e0', '0x3953c8dd9b', '0x3624cf1440', '0x39c515e42f', '0x40fbb39635', '0x3f4951073f', '0x448fa439fa', '0x3dddb5b12b', '0x3e42753d84', '0x40ee03dbe1', '0x3becc19478', '0x41593fc9d0', '0x3a10f6bba3', '0x350d55de3a', '0x37447a2340', '0x37d544325c', '0x3350f25634', '0x2faa282550', '0x359e03f067', '0x32c43162d4', '0x3120115328', '0x2ff966c066', '0x2be76f396a', '0x2a66ed36c6', '0x2757fa699c', '0x291718ec66', '0x2a1c7ee3b3', '0x260bc82496', '0x269440cc22', '0x24a5f33f43', '0x21292bc31d', '0x213e521774', '0x1f80987abe', '0x1d79d2f6ba', '0x1fa46ec102', '0x1d5b97b5be', '0x1ab806e90e', '0x1e0ec37553', '0x1d4d208090', '0x1a863cd025', '0x19633d472c', '0x1c2a7cfb0a', '0x1faf23265b', '0x1fe2c9b253', '0x1d6505a674', '0x211145bb29', '0x24c2367a85', '0x2508e44c85', '0x23350b0a29', '0x228158067d', '0x1ed593b03d', '0x2086bfde61', '0x1ebbd58842', '0x1f811fd227', '0x214deb1b8d', '0x1db9ef3f3b', '0x1f3952cd4a', '0x1bdf1d3728', '0x1a57726e88', '0x1a8f8a1609', '0x1aa3d8e8a2', '0x1c04164fb3', '0x18b0b6f489', '0x1bc60970db', '0x1a5e66ea26', '0x18b2082736', '0x181b15cf3d', '0x1517b31556', '0x178dec001e', '0x1a7f2bb480', '0x1a953e287c', '0x1784a5d44b', '0x190525f486', '0x16cdb6a508', '0x190732657a', '0x1bbfb82645', '0x1950d4895c', '0x18bdb282bc', '0x17bb8b4da4', '0x157d377479', '0x1803d0aa1d', '0x16f2c30985', '0x18b8d8b281', '0x16ae7faab6', '0x1692c8045a', '0x16a272ba0f', '0x176346a7d9', '0x1a4f19f665', '0x1b1f19d53a', '0x1844c50021', '0x1b4ca55799', '0x1b172479d6', '0x1a4478c6b2', '0x180f17bf04', '0x19c47475df', '0x17d71a3c93', '0x1aad2e683e', '0x1b17e03e77', '0x1aa5addb29', '0x1804115e8c', '0x15dcc6495a', '0x18983a7a19', '0x1a1bda6612', '0x1d3efd7257', '0x20e67c1c9d', '0x1feca3c092', '0x1cf66b1e2b', '0x20702373c4', '0x247df769f6', '0x24015e17f4', '0x253be05e7d', '0x253dfa8bde', '0x22d63dfbbb', '0x272fae9c27', '0x2c1421c2ec', '0x30916764b4', '0x2b53fdfb74', '0x2c93dcbc3e', '0x2b097e429e', '0x274642f7b8', '0x28b6a61347', '0x25e626cbe8', '0x26ad0d6971', '0x243748a49b', '0x25c5a1327b', '0x2524a33569', '0x2264aa88db', '0x2008527b7d', '0x23e12dca99', '0x20ec25b1a2', '0x2036572f91', '0x1ce0968b78', '0x2058db514d', '0x1d525eac50', '0x1ebdfa86e6', '0x229560ca17', '0x22ae5ac1c8', '0x21253c4a8a', '0x1db57b631e', '0x1cb804bdb6', '0x204ebe6b1e', '0x1f954a4f97', '0x1c5cd801dc', '0x1fe7088d2f', '0x1c5d5c2bb7', '0x1a953a815b', '0x19db026240', '0x1b73b0f0cd', '0x1eb384e42e', '0x2288bab7e7', '0x26d8fc1bc3', '0x232a495e50', '0x252ccca432', '0x215b6af47e', '0x1edd497143', '0x22b86961a1', '0x2325c81595', '0x20a24bae8b', '0x24923487dd', '0x26a12d7bd1', '0x2432b10722', '0x1fac5ae63e', '0x212d962469', '0x1f213f3901', '0x1f2f0bbc40', '0x1d2bc692a3', '0x1c36d19175', '0x1baed5d8f6', '0x1b682bb16a', '0x1ead3d112d', '0x1b6dc7e0ca', '0x19cec5b4be', '0x17b6f2b90f', '0x1aadab5ca2', '0x1c3ea9b6f2', '0x1bc6bfc6dc', '0x19aa13cdff', '0x1b6c747226', '0x1c419aafa4', '0x191dd550af', '0x16ec0509c8', '0x198d7e6ddf', '0x173bea6c25', '0x16d771d545', '0x162cf434ee', '0x17548becf8', '0x182840426f', '0x15864633b7', '0x1836f8aa70', '0x15a507a6c8', '0x1743b06549', '0x16c3fa9c99', '0x16e184f28d', '0x1727019977', '0x16307adf96', '0x1839b26aac', '0x17d7454d1e', '0x15b1556860', '0x140a6e700d', '0x12757610d3', '0x14c377ab94', '0x172f2304b5', '0x1a14e6f820', '0x1aa2513fdf', '0x1801ac055f', '0x19551bab40', '0x169a74c610', '0x14dc535c22', '0x1415abbd10', '0x168f8f3e02', '0x193d39b6a9', '0x17d2a68c58', '0x1acce7e0c6', '0x1e26520263', '0x1b1940b496', '0x18c32bbdb5', '0x18c5eb2e14', '0x166d5dfaf1', '0x17175b65ec', '0x160ff9e2ea', '0x149473545d', '0x1448a0e60c', '0x12a82ef4f3', '0x14d8c11cf5', '0x12f2dd624c', '0x155126ffb2', '0x12c4f2a770', '0x12f0416b4e', '0x154e234f98', '0x16433a4646', '0x14796f5f22', '0x130e3dc5be', '0x1318926230', '0x1475e48929', '0x122da3ee6d', '0x137f217fb1', '0x15ee588bff', '0x18ab3374c4', '0x16fe0af875', '0x1757f1dbf2'], 'gasUsedRatio': [0.5008456424365059, 0.5873091666472399, 0.2203919257610339, 0.524851585975797, 0.10097556452484993, 0.9994133202945221, 0.9999415427469663, 0.4306019839742719, 0.9485767333333334, 0.5583322333333334, 0.008352266666666667, 0.21139823333333332, 0.81185905296811, 0.2748332666666667, 0.012823722364889314, 0.9999076665804888, 0.9997768843308763, 0.9996952660876722, 0.5858905577291039, 0.11760432851045902, 0.9997159656958616, 0.10514474857622796, 0.9995138062539901, 0.22765188514065252, 0.9737355, 0.1751221734690592, 0.04824120337840821, 0.4998727609470383, 0.2058094124491799, 0.955784228508769, 0.24023886574708647, 0.2508570571659785, 0.669539343960798, 0.4244114691658293, 0.3762800666666667, 0.3865520319408098, 0.9383289365356405, 0.999897599894716, 0.27818533333333334, 0.5327963, 0.1855315, 0.35333376666666666, 0.5719931846781716, 0.5735781628123539, 0.14890088325164982, 0.41822042511082436, 0.45673607221570395, 0.15696917864438567, 0.9014858208764925, 0.16309168779291186, 0.505298203289899, 0.09815139153640616, 0.9980538, 0.9435877865264569, 0.9997441666666667, 0.6903559, 0.46959433333333334, 0.24122346666666666, 0.9993504666666667, 0.23902826666666666, 0.17763479370939056, 0.6574565991119063, 0.13301131310970105, 0.4339309419840518, 0.9990302609596609, 0.4788308194601979, 0.39124194478476515, 0.9995103427690792, 0.5785709063928702, 0.16263610314422156, 0.6631339333333334, 0, 0.9943914666666667, 0.31721295845393027, 0.3294080598266523, 0.3867175600591063, 0.42816422730524667, 0.665115670905278, 0.48659068032162667, 0.04074855465083591, 0.6483280066327451, 0.5995227699734557, 0.6915842365322511, 0.44125740905321426, 0.07189157204742454, 0.9990056971828087, 0.9990097666666666, 0.21322573333333333, 0.47772890227306963, 0.13570079332074042, 0.24354041118257022, 0.5646364539880474, 0.28816649916389864, 0.9996913970103317, 0.9993561694753061, 0.9995147981724064, 0.08702516666666667, 0.04904859595394903, 0.8561525657423947, 0.2461567243715939, 0.04601093333333333, 0.9198634800215744, 0.2610937436874941, 0.3134982282451317, 0.26468013622559217, 0.9998886666666666, 0.9996321258957295, 0.3589601333333333, 0.1202494902939387, 0.8111893957798554, 0.1068560148593245, 0.4787447762817416, 0.14447876666666667, 0.5847852333333333, 0.16937556666666667, 0.9742686, 0.44912053333333335, 0, 0.9993922333333334, 0.20994173333333332, 0.9996463453437718, 0.8409134333333333, 0.2144058005976169, 0.41054801709924554, 0.1701550872219362, 0.9302308756962042, 0.9998309698841839, 0.22935868976538, 0.9998663723585496, 0.903977651734457, 0.2083071568702778, 0.4938573843317222, 0.43703474616421056, 0.10875403333333333, 0.5162926264163622, 0.999777566459062, 0.9994882331153213, 0.2603804527101784, 0.8206379181178225, 0.060107512739391925, 0.015867906740393553, 0.999825318684643, 0.6456521661366539, 0.9540562607983913, 0.1634891491563788, 0.3111317489673127, 0.6391629, 0.9103796476074446, 0.3185358, 0.5575207, 0.37158613333333335, 0.8545946783700951, 0.6292024872556548, 0.4192782498706986, 0.3920646689651556, 0.5392181043266064, 0.04171548486054044, 0.9999396, 0.3281769, 0.3994262333333333, 0.9996478227655973, 0.5116564207771184, 0.03712318667753774, 0.9028429154015393, 0.9993615086333802, 0.2352974666761556, 0.999348201301333, 0.27021103333333335, 0.41611483613748823, 0.6352213928733, 0.6786377898637391, 0.2341234370304158, 0.2573444438924229, 0.6954662473054924, 0.9923857, 0.7298439, 0.9987210333333333, 0.6935801, 0.7021382666666667, 0.983002168283996, 0.18928484333252044, 0.07453778905294665, 0.4584492224385486, 0.12869023333333332, 0.2415062, 0.999763031399838, 0.2546916410231621, 0.5849203906615633, 0.6575617666666667, 0.030842083961655224, 0.962507144780421, 0.8574590376273128, 0.12195179837508358, 0.07525613333333334, 0.3957147487855224, 0.9994106161500994, 0.2657352518370431, 0.999760565718181, 0.13151767689507415, 0.9996639767551136, 0.9860751958443034, 0.14469994541328662, 0.38400087670166005, 0.527939436082936, 0.08490361676353919, 0.9999770327826104, 0.32357978465276016, 0.3254249102372945, 0.7559904493475759, 0.04690582148297355, 0.406179547757682, 0.5899574755450954, 0.7866093767760312, 0.2654104011072405, 0.9995843215132487, 0.7206168051831694, 0.02482526012289935, 0.9949868901190756, 0, 0.09029867411959, 0.9174482318251416, 0.3383282740821471, 0.29257246068237935, 0.5620091697717047, 0.33037886940679667, 0.26870051403674666, 0.9648287103124565, 0.6372933843026479, 0.5995682555798716, 0.7214298576906947, 0.4503824082965547, 0.96754431302278, 0.6818926363187304, 0.09429122119748629, 0.3515739627928946, 0.1269656, 0.500844, 0.1792209425837664, 0.6415650778028764, 0.5692305038431565, 0.9997743995713592, 0.3464274446118082, 0.5284878307155204, 0.032645103771627014, 0.19419897290546623, 0.28090323610902435, 0.7867108014328291, 0.9995738511851029, 0.9993908413316511, 0.061520750730471176, 0.009184647067082996, 0.9118488407860552, 0.06205681962543711, 0.3824536987403065, 0.09239136539605913, 0.8315993802563072, 0.9530516645382152, 0.3078878852107167, 0.9994600120702398, 0.11625641895881048, 0.3821726586476421, 0.06332917672387856, 0.9997655421037286, 0.6451466625657758, 0.22939510864718796, 0.6589226899598567, 0.8180803845610896, 0.09709201878372886, 0.3861638545505188, 0.17039483237434883, 0.9988390612102543, 0.120808, 0.9996424333333334, 0.4766108666666667, 0.4021715538556734, 0.10596424927887566, 0.2800980870681528, 0.7122111379303429, 0.9439535039214768, 0, 0.6462462540015819, 0.9994063400081646, 0.8374276047900188, 0.03529038879598523, 0.5854218100322689, 0.20871756048927737, 0.8062914216086094, 0.37657578054591523, 0.9998564799646967, 0.9995036973876648, 0.11324673393781809, 0.9993244314192223, 0.4411868666666667, 0.6520047826702775, 0.4042317873977863, 0.41000846961209686, 0.11421405034002897, 0.7341510630406273, 0, 0.9237508, 0.4046072666666667, 0.24679049091437788, 0.20289913931321535, 0.855494717569934, 0.16029826786040696, 0.1484709022130887, 0, 0.9995503045051902, 0.999977, 0.9997394666666667, 0.13891416666666667, 0.6242280746184684, 0.21291426666666666, 0.9992694467186126, 0.15963608764821807, 0.2031223, 0.7234927, 0.7301618969076696, 0.15143787972328374, 0.11775880530689398, 0.9993186320387342, 0.5019190442595702, 0.9997698993480482, 0.9994734793222999, 0.3900709, 0.3093697996093185, 0.9999611332970577, 0.5593856288264693, 0.9996091326037142, 0.5334675647291628, 0.3383850666666667, 0.8989540047476972, 0.05184688345198734, 0.15456683333333332, 0.7479409643516894, 0.11097170357359, 0.9997463333333333, 0.2609179469581287, 0.1243721143675962, 0.9266952445657513, 0.9994746656510203, 0.5691174101112999, 0.19178033878197998, 0.9995922673332929, 0.9996093651692332, 0.44048249069738166, 0.008118572302480385, 0.9991564863089203, 0.1873729, 0.4303805666666667, 0.05411012812655109, 0.7670215747875223, 0.12169956666666666, 0.1567044552338692, 0.34324515369547676, 0.11392459229857325, 0.9993141653635809, 0.1816216653040001, 0.999851142470683, 0.9080477450244873, 0.08419892217891027, 0.7537652195425278, 0.9995197277365089, 0.2810127846350589, 0.1930830457853297, 0.35947485184541356, 0.22722162571211407, 0.3155911157388245, 0.9997815525226046, 0.15877578487204838, 0.06488927609779736, 0.4302011666666667, 0, 0.9994781429267654, 0.9513811530017813, 0.9228410463614501, 0.10372969708642446, 0.19261375329622502, 0.999989613037555, 0.9997002226516271, 0.20512162261552142, 0.9335563689218377, 0.12459473682384178, 0.7064163015128543, 0.27375073333333333, 0.2899626847716538, 0.18143717538926954, 0.9986929750464097, 0.7561074333333333, 0.8897459, 0.3943861514101854, 0.6314351226727811, 0.9993632212201516, 0.06507692364615493, 0.7914305690020449, 0.2952705488100232, 0.08704030333099169, 0.9993395422043887, 0.009804656073300066, 0.5469177132274541, 0.06913236831753879, 0.25212849539480725, 0.2768850907244217, 0.8842412, 0.5559102666666667, 0.9998798333333333, 0.5338169, 0.38179483333333336, 0.29333743333333334, 0.8978479485217314, 0.08004877471218973, 0, 0.9995714658667363, 0.19304637013365977, 0.6142492353893351, 0, 0.9997671250433775, 0.9999155193382654, 0.9999147005546071, 0.4488811600319362, 0.34636389165624726, 0.7825909334263149, 0, 0.33164753966802907, 0.07809304578950986, 0.9486956067534521, 0.9993457031230488, 0.08638843333333333, 0.6110635, 0.35311523333333333, 0.9951413221677635, 0.4342066385928627, 0.6242287, 0.07226423268988834, 0.18693444182607394, 0.8687924156265278, 0.14147624114817042, 0.34318875398318893, 0.4707847495829488, 0.7748635337014704, 0.8996600333333333, 0.9264240530878403, 0.16660963311114182, 0.5574653371181885, 0.14951691741547643, 0.348196075039819, 0.1596413856505927, 0.9070015, 0.030440166666666667, 0.49120162505353143, 0.38749049499112864, 0.5926341937487765, 0.30080657524144655, 0.9997578630932504, 0, 0.9672513333333334, 0.9997912333333333, 0.9996885707773027, 0.23723776266317056, 0.2283062283947149, 0, 0.13726228698010587, 0.9116552777796351, 0.9993582885912772, 0.10458009723926555, 0.9996278103652189, 0.8816082664991304, 0.639270847294358, 0.3312748425229815, 0.20822265400105056, 0.420125088592086, 0.2389067232404009, 0.5643580024057743, 0.13962847934956304, 0.9495494480512968, 0.9948695181230401, 0.46379646079592435, 0.9534840516925368, 0.2942137990518919, 0.12621643402899196, 0.5321099497081277, 0.2852083208853994, 0.9995900985561893, 0.861962412385386, 0.12424757070181135, 0.3210166301792705, 0.1157723, 0.6212482, 0.7660575552026554, 0.15708286956691928, 0.48078596692988146, 0.20710335582137054, 0.9994129151316186, 0.2423009136844257, 0.6112569204376228, 0.4055668975322147, 0.24947813056513782, 0.5032730986897318, 0.05379296741797661, 0.9423144068306577, 0.8112691753661567, 0.7520929252946958, 0.08405824379350231, 0.9997073284123894, 0.7914562941715508, 0.15092849429740052, 0.8559275666666667, 0.45233476666666667, 0.041855533333333333, 0.009374287324906104, 0.48637408728248144, 0.5388799, 0.9997739459248622, 0.5600871227479812, 0.9999872, 0.6492797666666666, 0.9994884333333334, 0.9993379666666666, 0.015562, 0.2748323928350632, 0.45729137538166287, 0.37344289464808866, 0.9996807660601221, 0.44680875768852246, 0.08854257590857283, 0.9497648785445404, 0.9995015932783393, 0.08210169425342967, 0.21321868175623956, 0.4025574849058244, 0.1470327215718966, 0.5073978245377835, 0.9996868548018257, 0.12309471742659979, 0.7981116395538423, 0, 0.8176926768989918, 0.46429680498311404, 0.9995217658754177, 0.63234358810569, 0.37818212599814743, 0.1208041796386483, 0.999803, 0.9996458, 0.028662889311412594, 0.06210212749300818, 0.2907350846811669, 0, 0.9999827497890603, 0.9475564604050829, 0.31564860238622366, 0.9126861682074392, 0.5545277333333334, 0.4857867, 0.03909374170544203, 0.5367212676065164, 0.9540565933829256, 0.9998226996690394, 0.27490903333333333, 0.9893919333333333, 0.365917514880053, 0.3267387333333333, 0.22963593333333332, 0.23880619424868385, 0.27557595720422673, 0.18984629543069714, 0.7253967207405454, 0.07522446666666667, 0.9998530435030193, 0.9957188333333333, 0.4106349816071273, 0.07585391730737863, 0.4044891739944626, 0.35116560690305165, 0.16026581028349138, 0.17039333333333334, 0.9971653680181303, 0.46263041387606674, 0.7105563666666667, 0.22591243333333333, 0, 0.9329518608254294, 0.9997668997824398, 0.10356379337043338, 0.9996320146579604, 0.8586432632354162, 0.24734723415049675, 0.03158029430155265, 0.999635131958997, 0.574891, 0.2291527, 0.5433809333333334, 0.34682023333333334, 0.9997645666666667, 0.20048963333333333, 0.9348665028599572, 0.8336397290906811, 0.04789164676885542, 0.48037246666666666, 0.034624110443848416, 0.9999468666170755, 0.4582496, 0.174415, 0.19604366997706593, 0.9998178664966754, 0.9995518, 0.9999915, 0.14892265630721732, 0.999698544872828, 0.3263478608223585, 0.5575151592788026, 0.23560756666666666, 0.48795188501571785, 0.5536550500780467, 0.22550856666666666, 0.9999875333333333, 0.4167580357780627, 0.057092188522448906, 0.9996902355189101, 0.9999573832305507, 0.9993058431687758, 0.018920866666666668, 0.5396926431994176, 0.03161892224414873, 0.002670515709309245, 0.9993887061430975, 0.9996082500451775, 0.26374832209643234, 0.9996314390436848, 0.974145389293042, 0.22949609189561448, 0.7026962911454189, 0.5610230446729129, 0.33003273736356986, 0.21033259594235518, 0.9995757511856611, 0.33643580057484884, 0.972299813096785, 0.3658038513659633, 0.22941631093149634, 0.9982446233861992, 0.1074079925500162, 0.9995356636020465, 0.9924383333333333, 0.31314822257267555, 0.970271634916132, 0.8431578253356714, 0.7817706574864263, 0.1534859090629575, 0.6581729031861591, 0.5728367696655438, 0.5182438494508815, 0.999979473258403, 0.792248848296013, 0.0075363564030729935, 0.011014110557919617, 0.9716559348333076, 0.11068088026249408, 0.1839322, 0.7762068326387384, 0.09509185541906506, 0.5340954426888656, 0.5250563350222985, 0.4523464424259362, 0.5614074239877013, 0.3753467, 0.5312991803162455, 0.7206775773428117, 0.9995875968897064, 0.9996581993505788, 0.07635293704694006, 0.999342798137928, 0.402573720530306, 0.19390008861656988, 0.9992238724955407, 0, 0.1579697, 0.34451184915403227, 0.9994910328582973, 0.9999596939368437, 0.9993758476972193, 0.7525312098690692, 0.4531128504864097, 0.9995082, 0.508848690746514, 0.02161675350896994, 0.36671980704690527, 0.020278471862429873, 0.966053653561311, 0.9659147318555547, 0.9997899853571452, 0.3591492184235813, 0.6565348921175975, 0.7106394455037355, 0.4977839985308292, 0.08181082228638686, 0.36962526533068935, 0, 0.9998033405480726, 0.48775054201923224, 0.8066604888269867, 0.11798984920358825, 0.9997652694476514, 0.9817372455237287, 0.9545699, 0.023159466666666666, 0.38425472473870737, 0.18194386981427849, 0.29298514010878035, 0.9999282998661597, 0.9999994661443601, 0.05484923842192722, 0.9122655453907861, 0.17500040829818211, 0, 0.3981916847739746, 0.8684510666666667, 0.2857443, 0.40322408501431684, 0.2197959458027476, 0.9932306498525425, 0.9980240295789895, 0.3801443999475754, 0.32005921837740214, 0.9102253777274336, 0.032875803337137216, 0.9993815270236589, 0.9999362663628697, 0.5252667333333333, 0.0809593, 0.9998460333333333, 0.2782445, 0.14848743131000755, 0.9999546999577199, 0.07661763333333334, 0.663381308152589, 0.23213615773161914, 0.4498615, 0.30761788886848007, 0.9994032994430795, 0.9999414761301522, 0.11792644367783615, 0.982489753344789, 0.3227474408435354, 0.299714029727001, 0.6378284435392844, 0.11864698821091922, 0.01258623571653038, 0.9998175436627734, 0.6723476039876706, 0.4435145505839571, 0.7505242462558701, 0.12603884236334992, 0.6607487467547879, 0.9987931345738528, 0.602988279029961, 0.9935299640197305, 0.1528459290857911, 0.3011133584290022, 0.9998120329002542, 0.8597260649500873, 0.7617215087733009, 0.3236975390054963, 0.8172826430417488, 0.9795530415971723, 0.2240237848978897, 0.766466225723284, 0.04939300210664337, 0.9946664, 0.48111771144522625, 0.05755040890153639, 0.41697437834729645, 0.288011686824368, 0.3262160030707377, 0.2969804414445841, 0.09289931272693057, 0.3034987096274507, 0.184038479588207, 0.05752973897409781, 0.23695703333333334, 0.3756606333333333, 0.1750856, 0.27669896666666666, 0.10773103333333334, 0.8409686333333334, 0.6775379, 0.2778719753172306, 0.7678852632261683, 0.999453734596586, 0.3955535494153415, 0.833386485337254, 0.10939680995762821, 0.5254451526194653, 0.6715490961682622, 0.19167182283219497, 0.8620402737687795, 0.054245295555606, 0.15458956645974883, 0.667035614868091, 0.5409342229906303, 0.176401535159567, 0.21537075241279552, 0.9995374474385739, 0.28731700785611725, 0.3706928276756641, 0.40627712589353676, 0.16063582752188071, 0.36315758008724375, 0.21148641691350017, 0.6775695600173806, 0.5993995191562091, 0.11385305591699177, 0.5560469666666666, 0.29980142275598787, 0.11936304473884175, 0.5099654906026981, 0.2905014089359633, 0.2426918416081013, 0.7939949565192116, 0.21120553357903396, 0.1404458529163377, 0.9998439428357392, 0.3993411313847623, 0.12091594272299981, 0.3285784847596949, 0.9377427863733497, 0.999632797576464, 0.5254714333333333, 0.18747647077371052, 0.9997993664794087, 0.9465020426465508, 0.5300435227479091, 0.3026140666666667, 0.42024923333333336, 0.07444566285644598, 0.7195063577106751, 0.27954644733405415, 0.6003021405740671, 0.7285366333333333, 0.07025915859829543, 0.7015201781361722, 0.07053692221448236, 0.28042839002095576, 0.5332722239995642, 0.5119466333333333, 0.706596891864906, 0.025174490162857485, 0.9995145333333333, 0.2976748127880208, 0.24616613270211002, 0.4044948468963463, 0, 0.9668573333333333, 0.9996740333333334, 0.5130157734305784, 0.03882907086810184, 0.7554545666666667, 0.1456383, 0.8902098767220475, 0.9348375666666666, 0.1492602860026149, 0.40918884857625865, 0.33696526107835334, 0.12187582348326281, 0.9701494373533207, 0.3223412854955503, 0.8091765217469719, 0.16986225540559208, 0.4809059581818902, 0.5108443869362729, 0.6331121180556447, 0.9996097841510772, 0.6235315972651738, 0.07924772453397941, 0.9995364973889352, 0.4693769666666667, 0.37849090363260274, 0.16368865781891045, 0.7840432396849127, 0.20083783333333333, 0.9758751754421526, 0.5624933916604988, 0.43414136666666664, 0.1050173160758147, 0.1413225710802534, 0.9998978334689548, 0.746258317890804, 0.9806430611710497, 0.9997974994262484, 0.3813437316532803, 0.12889775647814128, 0.9799944885971718, 0.9999087995683179, 0.4466498010064075, 0.6364853411822922, 0.5008821998300064, 0.24166646972091582, 0.9993988423151748, 0.9993976954425622, 0.9073940333333333, 0.06844906666666667, 0.6153517333333334, 0.3617687333333333, 0.1502901, 0.6465596, 0.22348786923764388, 0.5820027765359248, 0.2455750665892532, 0.6718622469683292, 0.43340297480388146, 0.2038602442706921, 0.22544378461306439, 0.9803989819698529, 0.17032470263933067, 0.41371452491541794, 0.0858757, 0.9806265818571835, 0.12589045083108744, 0.6937601333333333, 0.9998231606497078, 0.5112844771988454, 0.32288653599170436, 0.08527796666666666, 0.36669433333333334, 0.9998492527953546, 0.41030864983839455, 0.0921252198099772, 0.9992200100128885, 0.05642480325753371, 0.24873494601623639, 0.390543441036043, 0.7469746164280798, 0.9734573058548672, 0.9993741643093522, 0.9996218678217742, 0.12083473333333333, 0.7286142415264827, 0.08919735289077446, 0.20108926666666666, 0.999728568280259, 0.5492191126045051, 0.21393573333333332, 0.9825826666666667, 0.7251488666666667, 0.2482152, 0, 0.6900417107055966, 0.2530656666666667, 0.5069260466178557, 0.24181775902990843, 0.3687924850113724, 0.4246924, 0.4601149666666667, 0.9772220666666667, 0.07650196666666667, 0.2635879, 0.17559096666666665, 0.9999029666666667, 0.7348538666666666, 0.4336637059421859, 0.19585664946620618, 0.77419918374964, 0.6214447666666667, 0.05553499659083762, 0.15049570712932667, 0.9590810666666667, 0.13703816666666666, 0.4324327666666667, 0.3833742, 0.7082755333333334, 0.6417850333333334, 0.06406892997678901, 0.9999367332742843, 0.0754512, 0.7993372194614707, 0.4142264866113875, 0.5202748666666667, 0.5474514333333333, 0.3336250848954004, 0.8670231870626922, 0.436516580406795, 0.13957876519965387, 0.19538856817510253, 0.18426030516094097, 0.9994274576928477, 0.9663140792051403, 0.9999146332787935, 0.5847190224248738, 0.10538919363806232, 0.7209269158682479, 0.06907306426666825, 0.19160362661389, 0.35120400141476305, 0.9931382847132608, 0.9748740957757166, 0.27553801973183895, 0.9999500357047659, 0.9998841532101823, 0.09521369514537488, 0.1551477, 0.501733843097785, 0.1212177464698967, 0.6184316423683055, 0.3217797339888368, 0.23121301110296277, 0.44243317214621536, 0.17920286666666665, 0.9694718225680711, 0.13581642676199832, 0.9999418333333333, 0.021945196150707832, 0.5360525669823959, 0.9998765793645569, 0.6797458770311752, 0.17869850528423675, 0.22282876468149992, 0.5084706857090147, 0.7858265528075673, 0.0538263993526187, 0.7900873054244362, 0.9994579782901132, 0.9993316254580296, 0.22817451300667516, 0.5610949552632033], 'oldestBlock': '0xd0f313'}}), - (('0x1', 'latest', [55]), {'jsonrpc': '2.0', 'id': 0, 'result': {'baseFeePerGas': ['0x110aed4e24', '0x1257071f07'], 'gasUsedRatio': [0.8044752714346831], 'oldestBlock': '0xd1b5d8', 'reward': [['0x77359400']]}}), - (('0x1', 'latest', [0]), {'jsonrpc': '2.0', 'id': 0, 'result': {'baseFeePerGas': ['0xe737dc7c7', '0xf5d01f66d'], 'gasUsedRatio': [0.7524847799812623], 'oldestBlock': '0xd1b7c4', 'reward': [['0x0']]}}), - (('0x1', 'latest', [100]), {'jsonrpc': '2.0', 'id': 0, 'result': {'baseFeePerGas': ['0xe737dc7c7', '0xf5d01f66d'], 'gasUsedRatio': [0.7524847799812623], 'oldestBlock': '0xd1b7c4', 'reward': [['0xd5f895760']]}}), - ) -} diff --git a/tests/fixtures/pause_bot_fixtures.py b/tests/fixtures/pause_bot_fixtures.py deleted file mode 100644 index 0b0c7164..00000000 --- a/tests/fixtures/pause_bot_fixtures.py +++ /dev/null @@ -1,24 +0,0 @@ -from fixtures.common_fixtures import COMMON_FIXTURES, LIDO_LOCATOR_CALLS - - -PAUSE_BOT_FIXTURES = { - 'eth_call': ( - *LIDO_LOCATOR_CALLS, - (({'to': '0x710B3303fB508a84F10793c1106e32bE873C24cd', 'data': '0xc7062e98'}, 'latest'), {'jsonrpc': '2.0', 'id': 11, 'result': '0x00000000000000000000000000000000000000000000000000000000000019f6'}), - (({'to': '0x0000000000000000000000000000000000000000', 'data': '0x6608b11b0000000000000000000000000000000000000000000000000000000000000001'}, '0xd17320'), {'jsonrpc': '2.0', 'id': 16, 'result': '0x0000000000000000000000000000000000000000000000000000000000000001'}), - (({'to': '0x710B3303fB508a84F10793c1106e32bE873C24cd', 'data': '0xa50833d6'}, 'latest'), {'jsonrpc': '2.0', 'id': 0, 'result': '0xd225b544f236c424d88abf1dd1a58e20df146bb6c02d916809b75d7a72bccb10'}), - (({'to': '0x710B3303fB508a84F10793c1106e32bE873C24cd', 'data': '0x4acd54c30000000000000000000000000000000000000000000000000000000000d1731f0000000000000000000000000000000000000000000000000000000000000001baa668505cd496caaf7117dd074338197200175057909ab73a04463656bdb0fad4933925f5f97a9632b4b1bc621a1c2771d58eaf6eee27dcf915eac8af010537'}, 'latest'), {'jsonrpc': '2.0', 'id': 0, 'error': {'code': 3, 'data': '0x08c379a000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000011696e76616c6964207369676e6174757265000000000000000000000000000000', 'message': 'execution reverted: invalid signature'}}), - ), - **COMMON_FIXTURES, -} - - -PAUSED_PROTOCOL_FIXTURES = { - 'eth_call': ( - *LIDO_LOCATOR_CALLS, - (({'to': '0x710B3303fB508a84F10793c1106e32bE873C24cd', 'data': '0xc7062e98'}, 'latest'), {'jsonrpc': '2.0', 'id': 15, 'result': '0x00000000000000000000000000000000000000000000000000000000000019f6'}), - (({'to': '0x0000000000000000000000000000000000000000', 'data': '0x6608b11b0000000000000000000000000000000000000000000000000000000000000001'}, '0xd17320'), {'jsonrpc': '2.0', 'id': 14, 'result': '0x0000000000000000000000000000000000000000000000000000000000000000'}), - (({'to': '0x710B3303fB508a84F10793c1106e32bE873C24cd', 'data': '0xa50833d6'}, 'latest'), {'jsonrpc': '2.0', 'id': 0, 'result': '0xd225b544f236c424d88abf1dd1a58e20df146bb6c02d916809b75d7a72bccb10'}) - ), - **COMMON_FIXTURES, -} diff --git a/tests/fixtures/provider.py b/tests/fixtures/provider.py new file mode 100644 index 00000000..80ae4eb3 --- /dev/null +++ b/tests/fixtures/provider.py @@ -0,0 +1,33 @@ +from unittest.mock import Mock + +import pytest +from web3 import Web3 +from web3_multi_provider import FallbackProvider + +import variables +from blockchain.web3_extentions.lido_contracts import LidoContracts +from blockchain.web3_extentions.transaction import TransactionUtils + + +# -- Unit fixtures -- +@pytest.fixture +def web3_lido_unit(): + web3 = Web3() + web3.lido = Mock() + web3.transaction = Mock() + yield web3 + + +# -- Integration fixtures -- +@pytest.fixture +def web3_provider_integration(): + yield Web3(FallbackProvider(variables.WEB3_RPC_ENDPOINTS)) + + +@pytest.fixture +def web3_lido_integration(web3_provider_integration): + web3_provider_integration.attach_modules({ + 'lido': LidoContracts, + 'transaction': TransactionUtils, + }) + yield web3_provider_integration diff --git a/tests/fixtures/pytest_mocks.py b/tests/fixtures/pytest_mocks.py deleted file mode 100644 index 3e047b9d..00000000 --- a/tests/fixtures/pytest_mocks.py +++ /dev/null @@ -1,210 +0,0 @@ -import json -from unittest.mock import Mock - -import pytest -from eth_account import Account -from web3 import Web3 - -from fixtures.depositor_fixtures import ( - DEPOSITOR_BASE_FIXTURES_SMALL_BALANCE, - DEPOSITOR_FIXTURES_WITH_DEPOSIT_PROHIBIT, - DEPOSITOR_FIXTURES_WITH_HIGH_GAS, - DEPOSITOR_FIXTURES_NOT_ENOUGH_BUFFERED_ETHER, - DEPOSITOR_BASE_FIXTURES, DEPOSITOR_FIXTURES_NO_FREE_KEYS, -) -from fixtures.pause_bot_fixtures import PAUSE_BOT_FIXTURES, PAUSED_PROTOCOL_FIXTURES -from metrics import healthcheck_pulse -from tests.utils.mock_provider import MockProvider - -from tests.fixtures.gas_fee_fixtures import GAS_FEE_FIXTURES -from transport.msg_providers.kafka import KafkaMessageProvider -from transport.msg_providers.rabbit import RabbitProvider -from transport.msg_storage import MessageStorage - - -class Message: - def __init__(self, result): - self._result = result - - def value(self): - return self._result - - def error(self): - pass - - -def send_message_to_store(monkeypatch, msgs): - monkeypatch.setattr(MessageStorage, 'messages', msgs) - - -@pytest.fixture(scope='function') -def web3_gas_fee(): - return Web3(MockProvider(GAS_FEE_FIXTURES)) - - -@pytest.fixture(scope='function') -def setup_web3_fixtures_for_pause(): - return Web3(MockProvider(PAUSE_BOT_FIXTURES)) - - -@pytest.fixture(scope='function') -def setup_web3_fixtures_paused(): - return Web3(MockProvider(PAUSED_PROTOCOL_FIXTURES)) - - -@pytest.fixture() -def setup_web3_deposit_fixtures_small_balance(): - return Web3(MockProvider(DEPOSITOR_BASE_FIXTURES_SMALL_BALANCE)) - - -@pytest.fixture() -def setup_web3_deposit_fixtures_prohibits_the_deposit(): - return Web3(MockProvider(DEPOSITOR_FIXTURES_WITH_DEPOSIT_PROHIBIT)) - - -@pytest.fixture() -def setup_web3_deposit_fixtures_with_high_gas(): - return Web3(MockProvider(DEPOSITOR_FIXTURES_WITH_HIGH_GAS)) - - -@pytest.fixture() -def setup_web3_deposit_fixtures_not_enough_buffered_ether(): - return Web3(MockProvider(DEPOSITOR_FIXTURES_NOT_ENOUGH_BUFFERED_ETHER)) - - -@pytest.fixture() -def setup_web3_deposit_fixtures(): - return Web3(MockProvider(DEPOSITOR_BASE_FIXTURES)) - - -@pytest.fixture() -def setup_web3_deposit_fixtures_no_free_keys(): - return Web3(MockProvider(DEPOSITOR_FIXTURES_NO_FREE_KEYS)) - - -@pytest.fixture() -def setup_pause_message_to_kafka(monkeypatch): - send_message_to_store(monkeypatch, [{ - "blockHash": "0xe41c0212516a899c455203e833903c802338daa3048bc637b623f6fba0a1685c", - "blockNumber": 13726495, - "guardianAddress": "0x3dc4cF780F2599B528F37dedB34449Fb65Ef7d4A", - "guardianIndex": 0, - "stakingModuleId": 1, - "signature": { - "_vs": "0xd4933925f5f97a9632b4b1bc621a1c2771d58eaf6eee27dcf915eac8af010537", - "r": "0xbaa668505cd496caaf7117dd074338197200175057909ab73a04463656bdb0fa", - "recoveryParam": 1, - "s": "0x54933925f5f97a9632b4b1bc621a1c2771d58eaf6eee27dcf915eac8af010537", - "v": 28 - }, - "type": "pause" - }]) - - -@pytest.fixture() -def setup_ping_message_to_kafka(monkeypatch): - send_message_to_store(monkeypatch, [{ - "type": "ping", - "blockNumber": 13726495, - "guardianIndex": 0, - "guardianAddress": "0x3dc4cF780F2599B528F37dedB34449Fb65Ef7d4A", - "app": { - "version": "1.1.1", - "name": "lido-council-daemon" - } - }]) - - -@pytest.fixture() -def remove_sleep(monkeypatch): - import time - monkeypatch.setattr(time, 'sleep', lambda x: x) - - monkeypatch.setattr(healthcheck_pulse, 'pulse', lambda: None) - - -@pytest.fixture() -def remove_transport(monkeypatch): - monkeypatch.setattr(KafkaMessageProvider, '__init__', lambda _, client, message_schema: None) - monkeypatch.setattr(KafkaMessageProvider, '_receive_message', lambda _: None) - monkeypatch.setattr(KafkaMessageProvider, '__del__', lambda _: None) - - monkeypatch.setattr(RabbitProvider, '__init__', lambda _, client, message_schema, routing_keys: None) - monkeypatch.setattr(RabbitProvider, '_receive_message', lambda _: None) - monkeypatch.setattr(RabbitProvider, '__del__', lambda _: None) - - -@pytest.fixture() -def setup_pause_message_to_store(monkeypatch): - send_message_to_store(monkeypatch, [{ - "blockHash": "0xe41c0212516a899c455203e833903c802338daa3048bc637b623f6fba0a1685c", - "blockNumber": 13726495, - "guardianAddress": "0x3dc4cF780F2599B528F37dedB34449Fb65Ef7d4A", - "guardianIndex": 0, - "stakingModuleId": 1, - "signature": { - "_vs": "0xd4933925f5f97a9632b4b1bc621a1c2771d58eaf6eee27dcf915eac8af010537", - "r": "0xbaa668505cd496caaf7117dd074338197200175057909ab73a04463656bdb0fa", - "recoveryParam": 1, - "s": "0x54933925f5f97a9632b4b1bc621a1c2771d58eaf6eee27dcf915eac8af010537", - "v": 28 - }, - "type": "pause" - }]) - - -@pytest.fixture(scope='function') -def setup_account(monkeypatch): - import variables - - monkeypatch.setenv('WALLET_PRIVATE_KEY', '0000000000000000000000000000000000000000000000000000000000000000') - monkeypatch.setattr(variables, 'WALLET_PRIVATE_KEY', '0000000000000000000000000000000000000000000000000000000000000000') - monkeypatch.setattr(variables, 'ACCOUNT', Account.from_key(variables.WALLET_PRIVATE_KEY)) - yield - monkeypatch.setenv('WALLET_PRIVATE_KEY', '') - monkeypatch.setattr(variables, 'WALLET_PRIVATE_KEY', None) - monkeypatch.setattr(variables, 'ACCOUNT', None) - - -@pytest.fixture -def setup_flashbots(monkeypatch): - import variables - monkeypatch.setattr(variables, 'FLASHBOT_SIGNATURE', '0000000000000000000000000000000000000000000000000000000000000000') - yield - monkeypatch.setattr(variables, 'FLASHBOT_SIGNATURE', None) - - -@pytest.fixture(scope='function') -def setup_create_txs(monkeypatch): - import variables - monkeypatch.setenv('CREATE_TRANSACTIONS', 'true') - monkeypatch.setattr(variables, 'CREATE_TRANSACTIONS', True) - yield - monkeypatch.setenv('CREATE_TRANSACTIONS', 'false') - monkeypatch.setattr(variables, 'CREATE_TRANSACTIONS', False) - - -@pytest.fixture() -def setup_deposit_message_to_kafka(monkeypatch): - send_message_to_store(monkeypatch, [{ - "type": "deposit", - "depositRoot": "0x4eff65af4dac60f23b625a5d9c80f9cc36b0754cd1db072cd47bd6d053e2f94e", - "nonce": 1, - "blockNumber": 13726495, - "blockHash": "0x432e218931e9b94f0702ecb1b0d084c467a86b384767ce38c4fe164463070532", - "guardianAddress": "0x43464Fe06c18848a2E2e913194D64c1970f4326a", - "guardianIndex": 8, - "stakingModuleId": 1, - "signature": { - "r": "0xc2235eb6983f80d19158f807d5d90d93abec52034ea7184bbf164ba211f00116", - "s": "0x75354ffc9fb6e7a4b4c01c622661a1d0382ace8c4ff8024626e39ac1a6a613d0", - "_vs": "0x75354ffc9fb6e7a4b4c01c622661a1d0382ace8c4ff8024626e39ac1a6a613d0", - "recoveryParam": 0, - "v": 27 - }, - "app": { - "version": "1.0.3", - "name": "lido-council-daemon" - } - }]) - diff --git a/tests/test_depositor_bot.py b/tests/test_depositor_bot.py deleted file mode 100644 index 3c6c0604..00000000 --- a/tests/test_depositor_bot.py +++ /dev/null @@ -1,236 +0,0 @@ -import logging -from unittest.mock import Mock - -from blockchain.contracts import contracts -from bots.depositor_bot import DepositorBot -from utils.logs import find_log_message -from fixtures.pytest_mocks import * - - -ISSUES_FOUND_LOG = 'Issues found.' -ISSUES_NOT_FOUND_LOG = 'No issues found.' - - -def test_deposit_issues__account_balance( - caplog, - setup_web3_deposit_fixtures_small_balance, - remove_sleep, - remove_transport, - setup_ping_message_to_kafka, - setup_deposit_message_to_kafka, - setup_account, -): - caplog.set_level(logging.INFO) - contracts.initialize(setup_web3_deposit_fixtures_small_balance) - depositor_bot = DepositorBot(setup_web3_deposit_fixtures_small_balance) - depositor_bot._get_nonce = Mock(return_value=1) - depositor_bot.run_cycle() - - assert find_log_message(caplog, depositor_bot.NOT_ENOUGH_BALANCE_ON_ACCOUNT) - record = find_log_message(caplog, ISSUES_FOUND_LOG) - assert record - assert record.msg['value'] == [depositor_bot.NOT_ENOUGH_BALANCE_ON_ACCOUNT] - assert not find_log_message(caplog, ISSUES_NOT_FOUND_LOG) - - -def test_deposit_issues__gas_strategy( - caplog, - setup_web3_deposit_fixtures_with_high_gas, - remove_sleep, - remove_transport, - setup_ping_message_to_kafka, - setup_deposit_message_to_kafka, -): - caplog.set_level(logging.INFO) - contracts.initialize(setup_web3_deposit_fixtures_with_high_gas) - depositor_bot = DepositorBot(setup_web3_deposit_fixtures_with_high_gas) - depositor_bot._get_nonce = Mock(return_value=1) - depositor_bot.run_cycle() - - assert find_log_message(caplog, depositor_bot.GAS_FEE_HIGHER_THAN_RECOMMENDED) - record = find_log_message(caplog, ISSUES_FOUND_LOG) - assert record - assert record.msg['value'] == [depositor_bot.GAS_FEE_HIGHER_THAN_RECOMMENDED] - assert not find_log_message(caplog, ISSUES_NOT_FOUND_LOG) - - -def test_deposit_issues__security_check( - caplog, - setup_web3_deposit_fixtures_prohibits_the_deposit, - remove_sleep, - remove_transport, - setup_ping_message_to_kafka, - setup_deposit_message_to_kafka, -): - caplog.set_level(logging.INFO) - contracts.initialize(setup_web3_deposit_fixtures_prohibits_the_deposit) - depositor_bot = DepositorBot(setup_web3_deposit_fixtures_prohibits_the_deposit) - depositor_bot._get_nonce = Mock(return_value=1) - depositor_bot.run_cycle() - - assert find_log_message(caplog, depositor_bot.DEPOSIT_SECURITY_ISSUE) - record = find_log_message(caplog, ISSUES_FOUND_LOG) - assert record - assert record.msg['value'] == [depositor_bot.DEPOSIT_SECURITY_ISSUE] - assert not find_log_message(caplog, ISSUES_NOT_FOUND_LOG) - - -def test_deposit_issues__buffered_ether( - caplog, - setup_web3_deposit_fixtures_not_enough_buffered_ether, - remove_sleep, - remove_transport, - setup_ping_message_to_kafka, - setup_deposit_message_to_kafka, -): - caplog.set_level(logging.INFO) - contracts.initialize(setup_web3_deposit_fixtures_not_enough_buffered_ether) - depositor_bot = DepositorBot(setup_web3_deposit_fixtures_not_enough_buffered_ether) - depositor_bot._get_nonce = Mock(return_value=1) - depositor_bot.run_cycle() - - assert find_log_message(caplog, depositor_bot.LIDO_CONTRACT_HAS_NOT_ENOUGH_BUFFERED_ETHER) - record = find_log_message(caplog, ISSUES_FOUND_LOG) - assert record - assert record.msg['value'] == [depositor_bot.LIDO_CONTRACT_HAS_NOT_ENOUGH_BUFFERED_ETHER] - assert not find_log_message(caplog, ISSUES_NOT_FOUND_LOG) - - -def test_deposit_issues__enough_signs( - caplog, - setup_web3_deposit_fixtures, - remove_sleep, - remove_transport, - setup_ping_message_to_kafka, -): - caplog.set_level(logging.INFO) - contracts.initialize(setup_web3_deposit_fixtures) - depositor_bot = DepositorBot(setup_web3_deposit_fixtures) - depositor_bot._get_nonce = Mock(return_value=1) - depositor_bot.run_cycle() - - assert find_log_message(caplog, depositor_bot.QUORUM_IS_NOT_READY) - record = find_log_message(caplog, ISSUES_FOUND_LOG) - assert record - assert record.msg['value'] == [depositor_bot.QUORUM_IS_NOT_READY] - assert not find_log_message(caplog, ISSUES_NOT_FOUND_LOG) - - -def test_deposit_issues__no_free_keys( - caplog, - setup_web3_deposit_fixtures_no_free_keys, - remove_sleep, - remove_transport, - setup_ping_message_to_kafka, - setup_deposit_message_to_kafka, -): - caplog.set_level(logging.INFO) - contracts.initialize(setup_web3_deposit_fixtures_no_free_keys) - depositor_bot = DepositorBot(setup_web3_deposit_fixtures_no_free_keys) - depositor_bot._get_nonce = Mock(return_value=1) - depositor_bot.run_cycle() - - assert find_log_message(caplog, depositor_bot.DEPOSITOR_CAN_DEPOSIT_KEYS) - record = find_log_message(caplog, ISSUES_FOUND_LOG) - assert record - assert record.msg['value'] == [depositor_bot.DEPOSITOR_CAN_DEPOSIT_KEYS] - assert not find_log_message(caplog, ISSUES_NOT_FOUND_LOG) - - -def test_depositor_bot__no_account( - caplog, - setup_web3_deposit_fixtures, - setup_deposit_message_to_kafka, - remove_sleep, - remove_transport, -): - caplog.set_level(logging.INFO) - contracts.initialize(setup_web3_deposit_fixtures) - contracts.deposit_security_module.functions.depositBufferedEther = Mock() - depositor_bot = DepositorBot(setup_web3_deposit_fixtures) - depositor_bot._get_nonce = Mock(return_value=1) - depositor_bot.run_cycle() - - assert not find_log_message(caplog, ISSUES_FOUND_LOG) - assert find_log_message(caplog, ISSUES_NOT_FOUND_LOG) - assert find_log_message(caplog, 'Deposit local call succeed.') - assert find_log_message(caplog, 'Account was not provided.') - - -def test_depositor_bot__no_create_tx( - caplog, - setup_web3_deposit_fixtures, - setup_deposit_message_to_kafka, - setup_account, - remove_sleep, - remove_transport, -): - caplog.set_level(logging.INFO) - contracts.initialize(setup_web3_deposit_fixtures) - contracts.deposit_security_module.functions.depositBufferedEther = Mock() - depositor_bot = DepositorBot(setup_web3_deposit_fixtures) - depositor_bot._get_nonce = Mock(return_value=1) - depositor_bot.run_cycle() - - assert not find_log_message(caplog, ISSUES_FOUND_LOG) - assert find_log_message(caplog, ISSUES_NOT_FOUND_LOG) - assert find_log_message(caplog, 'Deposit local call succeed.') - assert find_log_message(caplog, 'Run in dry mode.') - - -def test_depositor_bot__deposit( - caplog, - setup_web3_deposit_fixtures, - setup_ping_message_to_kafka, - setup_deposit_message_to_kafka, - setup_account, - setup_flashbots, - setup_create_txs, - remove_sleep, - remove_transport, -): - caplog.set_level(logging.INFO) - contracts.initialize(setup_web3_deposit_fixtures) - depositor_bot = DepositorBot(setup_web3_deposit_fixtures) - depositor_bot.w3.eth.get_transaction_count = Mock(return_value=1) - depositor_bot.w3.flashbots = Mock(return_value=True) - depositor_bot._check_transaction = Mock(return_value=True) - depositor_bot._get_nonce = Mock(return_value=1) - - try: - depositor_bot.run_cycle() - except TypeError: - # Mining transaction error expected. Can't mock it correctly. Just check logs. - pass - - assert not find_log_message(caplog, ISSUES_FOUND_LOG) - assert find_log_message(caplog, ISSUES_NOT_FOUND_LOG) - assert find_log_message(caplog, 'Sending deposit transaction.') - assert find_log_message(caplog, 'Try to deposit. Flashbots mode.') - - -def test_depositor_bot__deposit_classic( - caplog, - setup_web3_deposit_fixtures, - setup_ping_message_to_kafka, - setup_deposit_message_to_kafka, - setup_account, - setup_flashbots, - setup_create_txs, - remove_sleep, - remove_transport, -): - caplog.set_level(logging.INFO) - contracts.initialize(setup_web3_deposit_fixtures) - depositor_bot = DepositorBot(setup_web3_deposit_fixtures) - depositor_bot.last_fb_deposit_failed = True - depositor_bot.w3.eth.get_transaction_count = Mock(return_value=1) - depositor_bot._check_transaction = Mock(return_value=True) - depositor_bot._get_nonce = Mock(return_value=1) - - depositor_bot.run_cycle() - - assert not find_log_message(caplog, ISSUES_FOUND_LOG) - assert find_log_message(caplog, ISSUES_NOT_FOUND_LOG) - assert find_log_message(caplog, 'Sending deposit transaction.') - assert find_log_message(caplog, 'Try to deposit. Classic mode.') diff --git a/tests/test_gas_srategy.py b/tests/test_gas_srategy.py deleted file mode 100644 index 92031d46..00000000 --- a/tests/test_gas_srategy.py +++ /dev/null @@ -1,40 +0,0 @@ -import logging - -from blockchain.gas_strategy import GasFeeStrategy -from utils.logs import find_log_message -from fixtures.pytest_mocks import * - - -def test_percentile_calculate(caplog, web3_gas_fee): - caplog.set_level(logging.INFO) - - gas_fee_strategy = GasFeeStrategy(web3_gas_fee) - percentile = gas_fee_strategy.get_gas_fee_percentile(1, 30) - - assert percentile == 83720913390 - - # Make sure cache works - caplog.clear() - - percentile = gas_fee_strategy.get_gas_fee_percentile(1, 20) - - record = find_log_message(caplog, 'Use cached gas history') - assert record - - assert percentile == 74903359976 - - percentile = gas_fee_strategy.get_gas_fee_percentile(1, 50) - - assert percentile == 101522350803 - - -def test_get_recommended_gas_fee(web3_gas_fee): - gas_fee_strategy = GasFeeStrategy(web3_gas_fee) - - fee = gas_fee_strategy.get_recommended_gas_fee([(1, 20), (2, 20)]) - - assert fee == gas_fee_strategy.get_gas_fee_percentile(1, 20) - - fee = gas_fee_strategy.get_recommended_gas_fee([(1, 99), (2, 99)]) - - assert fee == gas_fee_strategy.max_gas_fee diff --git a/tests/test_pause_bot.py b/tests/test_pause_bot.py deleted file mode 100644 index 5ef97cc2..00000000 --- a/tests/test_pause_bot.py +++ /dev/null @@ -1,96 +0,0 @@ -import logging - -from blockchain.contracts import contracts -from bots.pause_bot import PauserBot -from utils.logs import find_log_message -from fixtures.pytest_mocks import * - - -def test_no_pause_messages( - caplog, - setup_web3_fixtures_for_pause, - remove_sleep, - remove_transport, -): - """Just cycle with no pause msg and no pause tx""" - caplog.set_level(logging.INFO) - contracts.initialize(setup_web3_fixtures_for_pause) - pause_bot = PauserBot(setup_web3_fixtures_for_pause) - pause_bot.run_cycle() - - assert find_log_message(caplog, 'Fetch `latest` block.') - assert not find_log_message(caplog, 'Message pause protocol initiate.') - - -def test_no_pause_if_protocol_was_paused( - caplog, - setup_web3_fixtures_paused, - setup_pause_message_to_kafka, - remove_sleep, - remove_transport, -): - """Test no pause tx if protocol already paused""" - caplog.set_level(logging.INFO) - contracts.initialize(setup_web3_fixtures_paused) - pause_bot = PauserBot(setup_web3_fixtures_paused) - pause_bot.run_cycle() - - assert find_log_message(caplog, 'Fetch `latest` block.') - is_paused_log = find_log_message(caplog, 'Call `getStakingModuleIsActive()`.') - assert not is_paused_log.msg['value'] - assert not find_log_message(caplog, 'Message pause protocol initiate.') - - -def test_pause_msg_receive( - caplog, - setup_web3_fixtures_for_pause, - setup_pause_message_to_kafka, - remove_sleep, - remove_transport, -): - """Retry each time pause tx falls locally or in blockchain""" - caplog.set_level(logging.INFO) - contracts.initialize(setup_web3_fixtures_for_pause) - pause_bot = PauserBot(setup_web3_fixtures_for_pause) - pause_bot.run_cycle() - - assert find_log_message(caplog, 'Fetch `latest` block.') - assert find_log_message(caplog, 'Message pause protocol initiate.') - assert find_log_message(caplog, 'No account provided. Skip creating tx.') - - -def test_pause_with_account( - caplog, - setup_account, - setup_web3_fixtures_for_pause, - setup_pause_message_to_kafka, - remove_sleep, - remove_transport, -): - caplog.set_level(logging.INFO) - contracts.initialize(setup_web3_fixtures_for_pause) - pause_bot = PauserBot(setup_web3_fixtures_for_pause) - pause_bot.run_cycle() - - assert find_log_message(caplog, 'Fetch `latest` block.') - assert find_log_message(caplog, 'Message pause protocol initiate.') - assert find_log_message(caplog, 'Running in DRY mode.') - - -def test_pause_with_account_in_prod( - caplog, - setup_account, - setup_create_txs, - setup_web3_fixtures_for_pause, - setup_pause_message_to_kafka, - remove_sleep, - remove_transport, -): - caplog.set_level(logging.INFO) - contracts.initialize(setup_web3_fixtures_for_pause) - pause_bot = PauserBot(setup_web3_fixtures_for_pause) - pause_bot.run_cycle() - - assert find_log_message(caplog, 'Fetch `latest` block.') - assert find_log_message(caplog, 'Message pause protocol initiate.') - assert find_log_message(caplog, 'Send pause transaction.') diff --git a/tests/test_reccomended_buffered_eth.py b/tests/test_reccomended_buffered_eth.py deleted file mode 100644 index 19d1bdc5..00000000 --- a/tests/test_reccomended_buffered_eth.py +++ /dev/null @@ -1,15 +0,0 @@ -from blockchain.buffered_eth import get_recommended_buffered_ether_to_deposit - - -def test_recommended_buffered_ether(): - buffered_ether = get_recommended_buffered_ether_to_deposit(10**9) - assert 1 < buffered_ether / 10**18 < 100 - - buffered_ether = get_recommended_buffered_ether_to_deposit(50 * 10**9) - assert 250 < buffered_ether / 10**18 < 300 - - buffered_ether = get_recommended_buffered_ether_to_deposit(70 * 10**9) - assert 300 < buffered_ether / 10**18 < 400 - - buffered_ether = get_recommended_buffered_ether_to_deposit(150 * 10**9) - assert 400 < buffered_ether / 10**18 < 500 diff --git a/tests/utils/contract_utils.py b/tests/utils/contract_utils.py new file mode 100644 index 00000000..a1724154 --- /dev/null +++ b/tests/utils/contract_utils.py @@ -0,0 +1,25 @@ +import logging +from typing import Callable, Any, Optional + +from blockchain.contracts.base_interface import ContractInterface + + +def check_contract( + contract: ContractInterface, + functions_spec: list[tuple[str, Optional[tuple], Callable[[Any], None]]], + caplog, +): + caplog.set_level(logging.INFO) + + for function in functions_spec: + # get method + method = contract.__getattribute__(function[0]) + # call method with args + if function[1] is not None: + response = method(*function[1]) + else: + response = method() + # check response + function[2](response) + + assert len(functions_spec) == len(caplog.messages) diff --git a/tests/utils/logs.py b/tests/utils/logs.py deleted file mode 100644 index 47c0352e..00000000 --- a/tests/utils/logs.py +++ /dev/null @@ -1,2 +0,0 @@ -def find_log_message(caplog, msg): - return next((log for log in caplog.records if msg in log.msg['msg']), None) diff --git a/tests/utils/mock_provider.py b/tests/utils/mock_provider.py deleted file mode 100644 index 1591446c..00000000 --- a/tests/utils/mock_provider.py +++ /dev/null @@ -1,24 +0,0 @@ -from typing import Any - -from web3.providers import JSONBaseProvider -from web3.types import RPCEndpoint, RPCResponse - - -class MockProvider(JSONBaseProvider): - _current_provider_index = 0 - - def __init__(self, mock_object: dict): - self._mock_object = mock_object - super().__init__() - - def make_request(self, method: RPCEndpoint, params: Any) -> RPCResponse: - if method in self._mock_object: - result = next((x for x in self._mock_object[method] if x[0] == params), None) - if result is not None: - return result[1] - - result = next((x for x in self._mock_object[method] if x[0] == 'default'), None) - if result is not None: - return result[1] - - raise Exception('There is no mock for response') diff --git a/tests/utils/regrex.py b/tests/utils/regrex.py new file mode 100644 index 00000000..d216ba46 --- /dev/null +++ b/tests/utils/regrex.py @@ -0,0 +1,12 @@ +import re + +HASH_REGREX = re.compile(r'^0x[0-9,A-F]{64}$', flags=re.IGNORECASE) +ADDRESS_REGREX = re.compile('^0x[0-9,A-F]{40}$', flags=re.IGNORECASE) + + +def check_value_re(regrex, value) -> None: + assert regrex.findall(value) + + +def check_value_type(value, _type) -> None: + assert isinstance(value, _type) From 8cf6b107be773de8757df8b15e9d441d4930f6a8 Mon Sep 17 00:00:00 2001 From: F4ever <1590415904a@gmail.com> Date: Mon, 11 Sep 2023 15:10:09 +0200 Subject: [PATCH 08/42] fix readme --- .env.example | 3 ++- README.md | 38 +++++++++++++++++++------------------- 2 files changed, 21 insertions(+), 20 deletions(-) diff --git a/.env.example b/.env.example index 3db16308..5c51f0f6 100644 --- a/.env.example +++ b/.env.example @@ -30,4 +30,5 @@ CREATE_TRANSACTIONS=true # Mainnet: "https://relay.flashbots.net", # Görli: "https://relay-goerli.flashbots.net", FLASHBOTS_RPC=https://relay-goerli.flashbots.net -FLASHBOT_SIGNATURE=0xbb0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ffaa +# Must be different from WALLET_PRIVATE_KEY +FLASHBOT_SIGNATURE=0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80 diff --git a/README.md b/README.md index 50620c09..7ccd82b2 100644 --- a/README.md +++ b/README.md @@ -40,25 +40,25 @@ This deposit is executed using the depositBufferedEther function within the "Dep ### Required variables -| Variable | Default | Description | -|-----------------------------------------|--------------------------------------------|--------------------------------------------------------------------------------------------------------------------------| -| WEB3_RPC_ENDPOINTS | - | List of rpc endpoints that will be used to send requests comma separated (`,`) | -| WALLET_PRIVATE_KEY | - | Account private key | -| CREATE_TRANSACTIONS | false | If true then tx will be send to blockchain | -| LIDO_LOCATOR | 0xC1d0b3DE6792Bf6b4b37EccdcC24e45978Cfd2Eb | Lido Locator address. Mainnet by default. Other networks could be found [here](https://docs.lido.fi/deployed-contracts/) | -| DEPOSIT_CONTRACT | 0x00000000219ab540356cBB839Cbe05303d7705Fa | Ethereum deposit contract address | -| -------------------------------------- | -------------------------------------- | ----------------------------------------- | -| TRANSPORTS | - | Transports used in bot. One of/or both: rabbit/kafka | -| RABBIT_MQ_URL | - | RabbitMQ url | -| RABBIT_MQ_USERNAME | - | RabbitMQ username for virtualhost | -| RABBIT_MQ_PASSWORD | - | RabbitMQ password for virtualhost | -| -------------------------------------- | --- _kafka is not used at the moment_ --- | ----------------------------------------- | -| KAFKA_BROKER_ADDRESS_1 | - | Kafka servers url and port | -| KAFKA_USERNAME | - | Kafka username | -| KAFKA_PASSWORD | - | Password for kafka | -| KAFKA_NETWORK | - | Network type (mainnet or goerli) | -| KAFKA_TOPIC | - | Kafka topic name (for msg receiving) | -| KAFKA_GROUP_PREFIX | - | Just for staging (staging-) | +| Variable | Default | Description | +|------------------------|--------------------------------------------|--------------------------------------------------------------------------------------------------------------------------| +| WEB3_RPC_ENDPOINTS | - | List of rpc endpoints that will be used to send requests comma separated (`,`) | +| WALLET_PRIVATE_KEY | - | Account private key | +| CREATE_TRANSACTIONS | false | If true then tx will be send to blockchain | +| LIDO_LOCATOR | 0xC1d0b3DE6792Bf6b4b37EccdcC24e45978Cfd2Eb | Lido Locator address. Mainnet by default. Other networks could be found [here](https://docs.lido.fi/deployed-contracts/) | +| DEPOSIT_CONTRACT | 0x00000000219ab540356cBB839Cbe05303d7705Fa | Ethereum deposit contract address | +| --- | --- | --- | +| TRANSPORTS | - | Transports used in bot. One of/or both: rabbit/kafka | +| RABBIT_MQ_URL | - | RabbitMQ url | +| RABBIT_MQ_USERNAME | - | RabbitMQ username for virtualhost | +| RABBIT_MQ_PASSWORD | - | RabbitMQ password for virtualhost | +| --- | --- _kafka is not used at the moment_ --- | --- | +| KAFKA_BROKER_ADDRESS_1 | - | Kafka servers url and port | +| KAFKA_USERNAME | - | Kafka username | +| KAFKA_PASSWORD | - | Password for kafka | +| KAFKA_NETWORK | - | Network type (mainnet or goerli) | +| KAFKA_TOPIC | - | Kafka topic name (for msg receiving) | +| KAFKA_GROUP_PREFIX | - | Just for staging (staging-) | ### Additional variables From 398c21f9e0ad6552966aae7ea09bc3383cc77c76 Mon Sep 17 00:00:00 2001 From: F4ever <1590415904a@gmail.com> Date: Mon, 11 Sep 2023 15:12:58 +0200 Subject: [PATCH 09/42] from response to tx --- src/blockchain/contracts/deposit_security_module.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/blockchain/contracts/deposit_security_module.py b/src/blockchain/contracts/deposit_security_module.py index e6b2f204..687802ec 100644 --- a/src/blockchain/contracts/deposit_security_module.py +++ b/src/blockchain/contracts/deposit_security_module.py @@ -65,7 +65,7 @@ def deposit_buffered_ether( | ATTEST_MESSAGE_PREFIX | blockNumber | blockHash | depositRoot | stakingModuleId | nonce | """ - response = self.functions.depositBufferedEther( + tx = self.functions.depositBufferedEther( block_number, block_hash, deposit_root, @@ -83,7 +83,7 @@ def deposit_buffered_ether( deposit_call_data, guardian_signatures, )}) - return response + return tx def get_pause_message_prefix(self, block_identifier: BlockIdentifier = 'latest') -> bytes: response = self.functions.PAUSE_MESSAGE_PREFIX().call(block_identifier=block_identifier) From 11afbdc5502cf5a3e8c2281af8cfac637ec72afe Mon Sep 17 00:00:00 2001 From: F4ever <1590415904a@gmail.com> Date: Mon, 11 Sep 2023 17:44:27 +0200 Subject: [PATCH 10/42] to checksum address from rabbit --- src/bots/depositor.py | 2 ++ src/bots/pause.py | 10 ++++++++-- src/metrics/logging.py | 1 - src/metrics/transport_message_metrics.py | 2 +- src/transport/msg_schemas.py | 6 ++++++ tests/fixtures/contracts.py | 1 - tests/transport/__init__.py | 0 tests/transport/test_msg_schemas.py | 12 ++++++++++++ 8 files changed, 29 insertions(+), 5 deletions(-) create mode 100644 tests/transport/__init__.py create mode 100644 tests/transport/test_msg_schemas.py diff --git a/src/bots/depositor.py b/src/bots/depositor.py index 3813c075..cd0a945d 100644 --- a/src/bots/depositor.py +++ b/src/bots/depositor.py @@ -23,6 +23,7 @@ PingMessageSchema, get_deposit_messages_sign_filter, DepositMessage, + to_check_sum_address, ) from transport.msg_storage import MessageStorage from transport.types import TransportType @@ -65,6 +66,7 @@ def __init__(self, w3: Web3): transports, filters=[ message_metrics_filter, + to_check_sum_address, get_deposit_messages_sign_filter(attest_prefix), ], ) diff --git a/src/bots/pause.py b/src/bots/pause.py index 36546411..a13dfb30 100644 --- a/src/bots/pause.py +++ b/src/bots/pause.py @@ -10,7 +10,13 @@ from metrics.transport_message_metrics import message_metrics_filter from transport.msg_providers.kafka import KafkaMessageProvider from transport.msg_providers.rabbit import RabbitProvider, MessageType -from transport.msg_schemas import PauseMessageSchema, get_pause_messages_sign_filter, PauseMessage, PingMessageSchema +from transport.msg_schemas import ( + PauseMessageSchema, + get_pause_messages_sign_filter, + PauseMessage, + PingMessageSchema, + to_check_sum_address, +) from transport.msg_storage import MessageStorage from transport.types import TransportType @@ -46,6 +52,7 @@ def __init__(self, w3: Web3): transports, filters=[ message_metrics_filter, + to_check_sum_address, get_pause_messages_sign_filter(pause_prefix), ], ) @@ -68,7 +75,6 @@ def _get_message_actualize_filter(self) -> Callable[[PauseMessage], bool]: message_validity_time = self.w3.lido.deposit_security_module.get_pause_intent_validity_period_blocks() def message_filter(message: PauseMessage) -> bool: - # TODO Metrics for filtered messages return message['blockNumber'] > current_block['number'] - message_validity_time return message_filter diff --git a/src/metrics/logging.py b/src/metrics/logging.py index 5007882a..5aa7cf94 100644 --- a/src/metrics/logging.py +++ b/src/metrics/logging.py @@ -7,7 +7,6 @@ class JsonFormatter(logging.Formatter): def format(self, record: logging.LogRecord) -> str: message = record.msg if isinstance(record.msg, dict) else {'msg': record.getMessage()} - # TODO jsonify error field to_json_msg = json.dumps({ 'name': record.name, 'levelname': record.levelname, diff --git a/src/metrics/transport_message_metrics.py b/src/metrics/transport_message_metrics.py index f2747c80..2e7baa40 100644 --- a/src/metrics/transport_message_metrics.py +++ b/src/metrics/transport_message_metrics.py @@ -27,4 +27,4 @@ def message_metrics_filter(msg: DepositMessage) -> bool: PING_MESSAGES.labels(address, version).inc() return False - # TODO Log all filtered messages + logger.warning({'msg': 'Received unexpected msg type.', 'value': msg, 'type': msg_type}) diff --git a/src/transport/msg_schemas.py b/src/transport/msg_schemas.py index a906615e..54db33cd 100644 --- a/src/transport/msg_schemas.py +++ b/src/transport/msg_schemas.py @@ -3,6 +3,7 @@ from typing import Callable, TypedDict from schema import Regex, Schema, And +from web3 import Web3 from cryptography.verify_signature import verify_message_with_signature @@ -156,3 +157,8 @@ def check_pause_message(msg: PauseMessage) -> bool: 'guardianAddress': And(str, ADDRESS_REGREX), 'stakingModuleIds': [int] }, ignore_extra_keys=True) + + +def to_check_sum_address(msg: dict): + msg['guardianAddress'] = Web3.to_checksum_address(msg['guardianAddress']) + return msg diff --git a/tests/fixtures/contracts.py b/tests/fixtures/contracts.py index 2f497af5..6ef7c5b7 100644 --- a/tests/fixtures/contracts.py +++ b/tests/fixtures/contracts.py @@ -13,7 +13,6 @@ @pytest.fixture def lido_locator(web3_provider_integration): yield cast(LidoLocatorContract, web3_provider_integration.eth.contract( - # ToDo provide lido locator address via env variable address=variables.LIDO_LOCATOR, ContractFactoryClass=LidoLocatorContract, )) diff --git a/tests/transport/__init__.py b/tests/transport/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/tests/transport/test_msg_schemas.py b/tests/transport/test_msg_schemas.py new file mode 100644 index 00000000..957c9d09 --- /dev/null +++ b/tests/transport/test_msg_schemas.py @@ -0,0 +1,12 @@ +import pytest + +from transport.msg_schemas import to_check_sum_address + + +@pytest.mark.unit +def test_to_check_sum_address(): + council_message = {"guardianAddress": "0x43464fe06c18848a2E2e913194d64c1970f4326a"} + + to_check_sum_address(council_message) + + assert council_message['guardianAddress'] == '0x43464Fe06c18848a2E2e913194D64c1970f4326a' From d6e811cdbadcd3764bb0981d622ffd2ec4f6c49e Mon Sep 17 00:00:00 2001 From: F4ever <1590415904a@gmail.com> Date: Mon, 11 Sep 2023 17:46:43 +0200 Subject: [PATCH 11/42] remove redundant func --- src/blockchain/contracts/staking_router.py | 24 ------------------- .../contracts/test_staking_router.py | 1 - 2 files changed, 25 deletions(-) diff --git a/src/blockchain/contracts/staking_router.py b/src/blockchain/contracts/staking_router.py index f57d759f..3dfbff02 100644 --- a/src/blockchain/contracts/staking_router.py +++ b/src/blockchain/contracts/staking_router.py @@ -11,30 +11,6 @@ class StakingRouterContract(ContractInterface): abi_path = './interfaces/StakingRouter.json' - def get_max_deposits_count( - self, - staking_module_id: int, - depositable_ether: Wei, - block_identifier: BlockIdentifier = 'latest', - ) -> int: - """ - Calculate the max count of deposits which the staking module can provide data for based - on the passed `_maxDepositsValue` amount - @param staking_module_id id of the staking module to be deposited - @param depositable_ether max amount of ether that might be used for deposits count calculation - @return max number of deposits might be done using the given staking module - """ - response = self.functions.getStakingModuleMaxDepositsCount( - staking_module_id, - depositable_ether, - ).call(block_identifier=block_identifier) - logger.info({ - 'msg': f'Call `getStakingModuleMaxDepositsCount({staking_module_id}, {depositable_ether})`.', - 'value': response, - 'block_identifier': block_identifier.__repr__(), - }) - return response - def get_staking_module_ids(self, block_identifier: BlockIdentifier = 'latest') -> list[int]: """Returns the ids of all registered staking modules""" response = self.functions.getStakingModuleIds().call(block_identifier=block_identifier) diff --git a/tests/blockchain/contracts/test_staking_router.py b/tests/blockchain/contracts/test_staking_router.py index 509cd3bc..c3a12f32 100644 --- a/tests/blockchain/contracts/test_staking_router.py +++ b/tests/blockchain/contracts/test_staking_router.py @@ -9,7 +9,6 @@ def test_staking_router_call(staking_router, caplog): check_contract( staking_router, [ - ('get_max_deposits_count', (1, 100*10**18), lambda response: check_value_type(response, int)), ('get_staking_module_ids', None, lambda response: check_value_type(response, list) and [check_value_type(x, int) for x in response]), ('is_staking_module_active', (1,), lambda response: check_value_type(response, bool)), From 8d6e95b73296c5a64d1259fd9fb120b367436a7a Mon Sep 17 00:00:00 2001 From: F4ever <1590415904a@gmail.com> Date: Mon, 11 Sep 2023 18:51:50 +0200 Subject: [PATCH 12/42] review fixes --- .github/workflows/tests_and_checks.yml | 13 +- package-lock.json | 4256 ----------------- package.json | 2 +- src/blockchain/contracts/staking_router.py | 13 - src/bots/depositor.py | 4 +- .../contracts/test_staking_router.py | 1 - tests/bots/test_depositor.py | 19 +- tests/bots/test_pauser.py | 6 +- yarn.lock | 2358 +++++++++ 9 files changed, 2378 insertions(+), 4294 deletions(-) delete mode 100644 package-lock.json create mode 100644 yarn.lock diff --git a/.github/workflows/tests_and_checks.yml b/.github/workflows/tests_and_checks.yml index 859eb58a..350e4201 100644 --- a/.github/workflows/tests_and_checks.yml +++ b/.github/workflows/tests_and_checks.yml @@ -30,13 +30,18 @@ jobs: run: | poetry run pytest tests -m unit - - name: Use Node.js ${{ matrix.node-version }} - uses: actions/setup-node@v3 - - run: npm install --save-dev hardhat + - name: Set up node + uses: actions/setup-node@v3.0.0 + with: + node-version: 'lts/*' + cache: 'yarn' + + - name: Install dependencies + run: yarn install --immutable - name: Run hardhat run: | - npx hardhat node --fork ${{ secrets.WEB3_RPC_ENDPOINT }} & + yarn hardhat node --fork ${{ secrets.WEB3_RPC_ENDPOINT }} & - name: Integration Tests with pytest run: | diff --git a/package-lock.json b/package-lock.json deleted file mode 100644 index f4f4e382..00000000 --- a/package-lock.json +++ /dev/null @@ -1,4256 +0,0 @@ -{ - "name": "depositor-bot", - "lockfileVersion": 3, - "requires": true, - "packages": { - "": { - "devDependencies": { - "hardhat": "^2.17.1" - } - }, - "node_modules/@chainsafe/as-sha256": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/@chainsafe/as-sha256/-/as-sha256-0.3.1.tgz", - "integrity": "sha512-hldFFYuf49ed7DAakWVXSJODuq3pzJEguD8tQ7h+sGkM18vja+OFoJI9krnGmgzyuZC2ETX0NOIcCTy31v2Mtg==", - "dev": true - }, - "node_modules/@chainsafe/persistent-merkle-tree": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/@chainsafe/persistent-merkle-tree/-/persistent-merkle-tree-0.4.2.tgz", - "integrity": "sha512-lLO3ihKPngXLTus/L7WHKaw9PnNJWizlOF1H9NNzHP6Xvh82vzg9F2bzkXhYIFshMZ2gTCEz8tq6STe7r5NDfQ==", - "dev": true, - "dependencies": { - "@chainsafe/as-sha256": "^0.3.1" - } - }, - "node_modules/@chainsafe/ssz": { - "version": "0.9.4", - "resolved": "https://registry.npmjs.org/@chainsafe/ssz/-/ssz-0.9.4.tgz", - "integrity": "sha512-77Qtg2N1ayqs4Bg/wvnWfg5Bta7iy7IRh8XqXh7oNMeP2HBbBwx8m6yTpA8p0EHItWPEBkgZd5S5/LSlp3GXuQ==", - "dev": true, - "dependencies": { - "@chainsafe/as-sha256": "^0.3.1", - "@chainsafe/persistent-merkle-tree": "^0.4.2", - "case": "^1.6.3" - } - }, - "node_modules/@ethersproject/abi": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/abi/-/abi-5.7.0.tgz", - "integrity": "sha512-351ktp42TiRcYB3H1OP8yajPeAQstMW/yCFokj/AthP9bLHzQFPlOrxOcwYEDkUAICmOHljvN4K39OMTMUa9RA==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "dependencies": { - "@ethersproject/address": "^5.7.0", - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/constants": "^5.7.0", - "@ethersproject/hash": "^5.7.0", - "@ethersproject/keccak256": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/properties": "^5.7.0", - "@ethersproject/strings": "^5.7.0" - } - }, - "node_modules/@ethersproject/abstract-provider": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/abstract-provider/-/abstract-provider-5.7.0.tgz", - "integrity": "sha512-R41c9UkchKCpAqStMYUpdunjo3pkEvZC3FAwZn5S5MGbXoMQOHIdHItezTETxAO5bevtMApSyEhn9+CHcDsWBw==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "dependencies": { - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/networks": "^5.7.0", - "@ethersproject/properties": "^5.7.0", - "@ethersproject/transactions": "^5.7.0", - "@ethersproject/web": "^5.7.0" - } - }, - "node_modules/@ethersproject/abstract-signer": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/abstract-signer/-/abstract-signer-5.7.0.tgz", - "integrity": "sha512-a16V8bq1/Cz+TGCkE2OPMTOUDLS3grCpdjoJCYNnVBbdYEMSgKrU0+B90s8b6H+ByYTBZN7a3g76jdIJi7UfKQ==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "dependencies": { - "@ethersproject/abstract-provider": "^5.7.0", - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/properties": "^5.7.0" - } - }, - "node_modules/@ethersproject/address": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/address/-/address-5.7.0.tgz", - "integrity": "sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "dependencies": { - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/keccak256": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/rlp": "^5.7.0" - } - }, - "node_modules/@ethersproject/base64": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/base64/-/base64-5.7.0.tgz", - "integrity": "sha512-Dr8tcHt2mEbsZr/mwTPIQAf3Ai0Bks/7gTw9dSqk1mQvhW3XvRlmDJr/4n+wg1JmCl16NZue17CDh8xb/vZ0sQ==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "dependencies": { - "@ethersproject/bytes": "^5.7.0" - } - }, - "node_modules/@ethersproject/basex": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/basex/-/basex-5.7.0.tgz", - "integrity": "sha512-ywlh43GwZLv2Voc2gQVTKBoVQ1mti3d8HK5aMxsfu/nRDnMmNqaSJ3r3n85HBByT8OpoY96SXM1FogC533T4zw==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "dependencies": { - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/properties": "^5.7.0" - } - }, - "node_modules/@ethersproject/bignumber": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.7.0.tgz", - "integrity": "sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "dependencies": { - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "bn.js": "^5.2.1" - } - }, - "node_modules/@ethersproject/bytes": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.7.0.tgz", - "integrity": "sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "dependencies": { - "@ethersproject/logger": "^5.7.0" - } - }, - "node_modules/@ethersproject/constants": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/constants/-/constants-5.7.0.tgz", - "integrity": "sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "dependencies": { - "@ethersproject/bignumber": "^5.7.0" - } - }, - "node_modules/@ethersproject/contracts": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/contracts/-/contracts-5.7.0.tgz", - "integrity": "sha512-5GJbzEU3X+d33CdfPhcyS+z8MzsTrBGk/sc+G+59+tPa9yFkl6HQ9D6L0QMgNTA9q8dT0XKxxkyp883XsQvbbg==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "dependencies": { - "@ethersproject/abi": "^5.7.0", - "@ethersproject/abstract-provider": "^5.7.0", - "@ethersproject/abstract-signer": "^5.7.0", - "@ethersproject/address": "^5.7.0", - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/constants": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/properties": "^5.7.0", - "@ethersproject/transactions": "^5.7.0" - } - }, - "node_modules/@ethersproject/hash": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/hash/-/hash-5.7.0.tgz", - "integrity": "sha512-qX5WrQfnah1EFnO5zJv1v46a8HW0+E5xuBBDTwMFZLuVTx0tbU2kkx15NqdjxecrLGatQN9FGQKpb1FKdHCt+g==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "dependencies": { - "@ethersproject/abstract-signer": "^5.7.0", - "@ethersproject/address": "^5.7.0", - "@ethersproject/base64": "^5.7.0", - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/keccak256": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/properties": "^5.7.0", - "@ethersproject/strings": "^5.7.0" - } - }, - "node_modules/@ethersproject/hdnode": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/hdnode/-/hdnode-5.7.0.tgz", - "integrity": "sha512-OmyYo9EENBPPf4ERhR7oj6uAtUAhYGqOnIS+jE5pTXvdKBS99ikzq1E7Iv0ZQZ5V36Lqx1qZLeak0Ra16qpeOg==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "dependencies": { - "@ethersproject/abstract-signer": "^5.7.0", - "@ethersproject/basex": "^5.7.0", - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/pbkdf2": "^5.7.0", - "@ethersproject/properties": "^5.7.0", - "@ethersproject/sha2": "^5.7.0", - "@ethersproject/signing-key": "^5.7.0", - "@ethersproject/strings": "^5.7.0", - "@ethersproject/transactions": "^5.7.0", - "@ethersproject/wordlists": "^5.7.0" - } - }, - "node_modules/@ethersproject/json-wallets": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/json-wallets/-/json-wallets-5.7.0.tgz", - "integrity": "sha512-8oee5Xgu6+RKgJTkvEMl2wDgSPSAQ9MB/3JYjFV9jlKvcYHUXZC+cQp0njgmxdHkYWn8s6/IqIZYm0YWCjO/0g==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "dependencies": { - "@ethersproject/abstract-signer": "^5.7.0", - "@ethersproject/address": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/hdnode": "^5.7.0", - "@ethersproject/keccak256": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/pbkdf2": "^5.7.0", - "@ethersproject/properties": "^5.7.0", - "@ethersproject/random": "^5.7.0", - "@ethersproject/strings": "^5.7.0", - "@ethersproject/transactions": "^5.7.0", - "aes-js": "3.0.0", - "scrypt-js": "3.0.1" - } - }, - "node_modules/@ethersproject/keccak256": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/keccak256/-/keccak256-5.7.0.tgz", - "integrity": "sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "dependencies": { - "@ethersproject/bytes": "^5.7.0", - "js-sha3": "0.8.0" - } - }, - "node_modules/@ethersproject/logger": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", - "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ] - }, - "node_modules/@ethersproject/networks": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/@ethersproject/networks/-/networks-5.7.1.tgz", - "integrity": "sha512-n/MufjFYv3yFcUyfhnXotyDlNdFb7onmkSy8aQERi2PjNcnWQ66xXxa3XlS8nCcA8aJKJjIIMNJTC7tu80GwpQ==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "dependencies": { - "@ethersproject/logger": "^5.7.0" - } - }, - "node_modules/@ethersproject/pbkdf2": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/pbkdf2/-/pbkdf2-5.7.0.tgz", - "integrity": "sha512-oR/dBRZR6GTyaofd86DehG72hY6NpAjhabkhxgr3X2FpJtJuodEl2auADWBZfhDHgVCbu3/H/Ocq2uC6dpNjjw==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "dependencies": { - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/sha2": "^5.7.0" - } - }, - "node_modules/@ethersproject/properties": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.7.0.tgz", - "integrity": "sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "dependencies": { - "@ethersproject/logger": "^5.7.0" - } - }, - "node_modules/@ethersproject/providers": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/@ethersproject/providers/-/providers-5.7.2.tgz", - "integrity": "sha512-g34EWZ1WWAVgr4aptGlVBF8mhl3VWjv+8hoAnzStu8Ah22VHBsuGzP17eb6xDVRzw895G4W7vvx60lFFur/1Rg==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "dependencies": { - "@ethersproject/abstract-provider": "^5.7.0", - "@ethersproject/abstract-signer": "^5.7.0", - "@ethersproject/address": "^5.7.0", - "@ethersproject/base64": "^5.7.0", - "@ethersproject/basex": "^5.7.0", - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/constants": "^5.7.0", - "@ethersproject/hash": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/networks": "^5.7.0", - "@ethersproject/properties": "^5.7.0", - "@ethersproject/random": "^5.7.0", - "@ethersproject/rlp": "^5.7.0", - "@ethersproject/sha2": "^5.7.0", - "@ethersproject/strings": "^5.7.0", - "@ethersproject/transactions": "^5.7.0", - "@ethersproject/web": "^5.7.0", - "bech32": "1.1.4", - "ws": "7.4.6" - } - }, - "node_modules/@ethersproject/providers/node_modules/ws": { - "version": "7.4.6", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.6.tgz", - "integrity": "sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==", - "dev": true, - "engines": { - "node": ">=8.3.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - }, - "node_modules/@ethersproject/random": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/random/-/random-5.7.0.tgz", - "integrity": "sha512-19WjScqRA8IIeWclFme75VMXSBvi4e6InrUNuaR4s5pTF2qNhcGdCUwdxUVGtDDqC00sDLCO93jPQoDUH4HVmQ==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "dependencies": { - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/logger": "^5.7.0" - } - }, - "node_modules/@ethersproject/rlp": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/rlp/-/rlp-5.7.0.tgz", - "integrity": "sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "dependencies": { - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/logger": "^5.7.0" - } - }, - "node_modules/@ethersproject/sha2": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/sha2/-/sha2-5.7.0.tgz", - "integrity": "sha512-gKlH42riwb3KYp0reLsFTokByAKoJdgFCwI+CCiX/k+Jm2mbNs6oOaCjYQSlI1+XBVejwH2KrmCbMAT/GnRDQw==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "dependencies": { - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "hash.js": "1.1.7" - } - }, - "node_modules/@ethersproject/signing-key": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/signing-key/-/signing-key-5.7.0.tgz", - "integrity": "sha512-MZdy2nL3wO0u7gkB4nA/pEf8lu1TlFswPNmy8AiYkfKTdO6eXBJyUdmHO/ehm/htHw9K/qF8ujnTyUAD+Ry54Q==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "dependencies": { - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/properties": "^5.7.0", - "bn.js": "^5.2.1", - "elliptic": "6.5.4", - "hash.js": "1.1.7" - } - }, - "node_modules/@ethersproject/solidity": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/solidity/-/solidity-5.7.0.tgz", - "integrity": "sha512-HmabMd2Dt/raavyaGukF4XxizWKhKQ24DoLtdNbBmNKUOPqwjsKQSdV9GQtj9CBEea9DlzETlVER1gYeXXBGaA==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "dependencies": { - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/keccak256": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/sha2": "^5.7.0", - "@ethersproject/strings": "^5.7.0" - } - }, - "node_modules/@ethersproject/strings": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/strings/-/strings-5.7.0.tgz", - "integrity": "sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "dependencies": { - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/constants": "^5.7.0", - "@ethersproject/logger": "^5.7.0" - } - }, - "node_modules/@ethersproject/transactions": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/transactions/-/transactions-5.7.0.tgz", - "integrity": "sha512-kmcNicCp1lp8qanMTC3RIikGgoJ80ztTyvtsFvCYpSCfkjhD0jZ2LOrnbcuxuToLIUYYf+4XwD1rP+B/erDIhQ==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "dependencies": { - "@ethersproject/address": "^5.7.0", - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/constants": "^5.7.0", - "@ethersproject/keccak256": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/properties": "^5.7.0", - "@ethersproject/rlp": "^5.7.0", - "@ethersproject/signing-key": "^5.7.0" - } - }, - "node_modules/@ethersproject/units": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/units/-/units-5.7.0.tgz", - "integrity": "sha512-pD3xLMy3SJu9kG5xDGI7+xhTEmGXlEqXU4OfNapmfnxLVY4EMSSRp7j1k7eezutBPH7RBN/7QPnwR7hzNlEFeg==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "dependencies": { - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/constants": "^5.7.0", - "@ethersproject/logger": "^5.7.0" - } - }, - "node_modules/@ethersproject/wallet": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/wallet/-/wallet-5.7.0.tgz", - "integrity": "sha512-MhmXlJXEJFBFVKrDLB4ZdDzxcBxQ3rLyCkhNqVu3CDYvR97E+8r01UgrI+TI99Le+aYm/in/0vp86guJuM7FCA==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "dependencies": { - "@ethersproject/abstract-provider": "^5.7.0", - "@ethersproject/abstract-signer": "^5.7.0", - "@ethersproject/address": "^5.7.0", - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/hash": "^5.7.0", - "@ethersproject/hdnode": "^5.7.0", - "@ethersproject/json-wallets": "^5.7.0", - "@ethersproject/keccak256": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/properties": "^5.7.0", - "@ethersproject/random": "^5.7.0", - "@ethersproject/signing-key": "^5.7.0", - "@ethersproject/transactions": "^5.7.0", - "@ethersproject/wordlists": "^5.7.0" - } - }, - "node_modules/@ethersproject/web": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/@ethersproject/web/-/web-5.7.1.tgz", - "integrity": "sha512-Gueu8lSvyjBWL4cYsWsjh6MtMwM0+H4HvqFPZfB6dV8ctbP9zFAO73VG1cMWae0FLPCtz0peKPpZY8/ugJJX2w==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "dependencies": { - "@ethersproject/base64": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/properties": "^5.7.0", - "@ethersproject/strings": "^5.7.0" - } - }, - "node_modules/@ethersproject/wordlists": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/wordlists/-/wordlists-5.7.0.tgz", - "integrity": "sha512-S2TFNJNfHWVHNE6cNDjbVlZ6MgE17MIxMbMg2zv3wn+3XSJGosL1m9ZVv3GXCf/2ymSsQ+hRI5IzoMJTG6aoVA==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "dependencies": { - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/hash": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/properties": "^5.7.0", - "@ethersproject/strings": "^5.7.0" - } - }, - "node_modules/@metamask/eth-sig-util": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@metamask/eth-sig-util/-/eth-sig-util-4.0.1.tgz", - "integrity": "sha512-tghyZKLHZjcdlDqCA3gNZmLeR0XvOE9U1qoQO9ohyAZT6Pya+H9vkBPcsyXytmYLNgVoin7CKCmweo/R43V+tQ==", - "dev": true, - "dependencies": { - "ethereumjs-abi": "^0.6.8", - "ethereumjs-util": "^6.2.1", - "ethjs-util": "^0.1.6", - "tweetnacl": "^1.0.3", - "tweetnacl-util": "^0.15.1" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/@noble/hashes": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.2.0.tgz", - "integrity": "sha512-FZfhjEDbT5GRswV3C6uvLPHMiVD6lQBmpoX5+eSiPaMTXte/IKqI5dykDxzZB/WBeK/CDuQRBWarPdi3FNY2zQ==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - ] - }, - "node_modules/@noble/secp256k1": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/@noble/secp256k1/-/secp256k1-1.7.1.tgz", - "integrity": "sha512-hOUk6AyBFmqVrv7k5WAw/LpszxVbj9gGN4JRkIX52fdFAj1UA61KXmZDvqVEm+pOyec3+fIeZB02LYa/pWOArw==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - ] - }, - "node_modules/@nomicfoundation/ethereumjs-block": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-block/-/ethereumjs-block-5.0.1.tgz", - "integrity": "sha512-u1Yioemi6Ckj3xspygu/SfFvm8vZEO8/Yx5a1QLzi6nVU0jz3Pg2OmHKJ5w+D9Ogk1vhwRiqEBAqcb0GVhCyHw==", - "dev": true, - "dependencies": { - "@nomicfoundation/ethereumjs-common": "4.0.1", - "@nomicfoundation/ethereumjs-rlp": "5.0.1", - "@nomicfoundation/ethereumjs-trie": "6.0.1", - "@nomicfoundation/ethereumjs-tx": "5.0.1", - "@nomicfoundation/ethereumjs-util": "9.0.1", - "ethereum-cryptography": "0.1.3", - "ethers": "^5.7.1" - }, - "engines": { - "node": ">=14" - } - }, - "node_modules/@nomicfoundation/ethereumjs-block/node_modules/ethereum-cryptography": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz", - "integrity": "sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==", - "dev": true, - "dependencies": { - "@types/pbkdf2": "^3.0.0", - "@types/secp256k1": "^4.0.1", - "blakejs": "^1.1.0", - "browserify-aes": "^1.2.0", - "bs58check": "^2.1.2", - "create-hash": "^1.2.0", - "create-hmac": "^1.1.7", - "hash.js": "^1.1.7", - "keccak": "^3.0.0", - "pbkdf2": "^3.0.17", - "randombytes": "^2.1.0", - "safe-buffer": "^5.1.2", - "scrypt-js": "^3.0.0", - "secp256k1": "^4.0.1", - "setimmediate": "^1.0.5" - } - }, - "node_modules/@nomicfoundation/ethereumjs-blockchain": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-blockchain/-/ethereumjs-blockchain-7.0.1.tgz", - "integrity": "sha512-NhzndlGg829XXbqJEYrF1VeZhAwSPgsK/OB7TVrdzft3y918hW5KNd7gIZ85sn6peDZOdjBsAXIpXZ38oBYE5A==", - "dev": true, - "dependencies": { - "@nomicfoundation/ethereumjs-block": "5.0.1", - "@nomicfoundation/ethereumjs-common": "4.0.1", - "@nomicfoundation/ethereumjs-ethash": "3.0.1", - "@nomicfoundation/ethereumjs-rlp": "5.0.1", - "@nomicfoundation/ethereumjs-trie": "6.0.1", - "@nomicfoundation/ethereumjs-tx": "5.0.1", - "@nomicfoundation/ethereumjs-util": "9.0.1", - "abstract-level": "^1.0.3", - "debug": "^4.3.3", - "ethereum-cryptography": "0.1.3", - "level": "^8.0.0", - "lru-cache": "^5.1.1", - "memory-level": "^1.0.0" - }, - "engines": { - "node": ">=14" - } - }, - "node_modules/@nomicfoundation/ethereumjs-blockchain/node_modules/ethereum-cryptography": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz", - "integrity": "sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==", - "dev": true, - "dependencies": { - "@types/pbkdf2": "^3.0.0", - "@types/secp256k1": "^4.0.1", - "blakejs": "^1.1.0", - "browserify-aes": "^1.2.0", - "bs58check": "^2.1.2", - "create-hash": "^1.2.0", - "create-hmac": "^1.1.7", - "hash.js": "^1.1.7", - "keccak": "^3.0.0", - "pbkdf2": "^3.0.17", - "randombytes": "^2.1.0", - "safe-buffer": "^5.1.2", - "scrypt-js": "^3.0.0", - "secp256k1": "^4.0.1", - "setimmediate": "^1.0.5" - } - }, - "node_modules/@nomicfoundation/ethereumjs-common": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-common/-/ethereumjs-common-4.0.1.tgz", - "integrity": "sha512-OBErlkfp54GpeiE06brBW/TTbtbuBJV5YI5Nz/aB2evTDo+KawyEzPjBlSr84z/8MFfj8wS2wxzQX1o32cev5g==", - "dev": true, - "dependencies": { - "@nomicfoundation/ethereumjs-util": "9.0.1", - "crc-32": "^1.2.0" - } - }, - "node_modules/@nomicfoundation/ethereumjs-ethash": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-ethash/-/ethereumjs-ethash-3.0.1.tgz", - "integrity": "sha512-KDjGIB5igzWOp8Ik5I6QiRH5DH+XgILlplsHR7TEuWANZA759G6krQ6o8bvj+tRUz08YygMQu/sGd9mJ1DYT8w==", - "dev": true, - "dependencies": { - "@nomicfoundation/ethereumjs-block": "5.0.1", - "@nomicfoundation/ethereumjs-rlp": "5.0.1", - "@nomicfoundation/ethereumjs-util": "9.0.1", - "abstract-level": "^1.0.3", - "bigint-crypto-utils": "^3.0.23", - "ethereum-cryptography": "0.1.3" - }, - "engines": { - "node": ">=14" - } - }, - "node_modules/@nomicfoundation/ethereumjs-ethash/node_modules/ethereum-cryptography": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz", - "integrity": "sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==", - "dev": true, - "dependencies": { - "@types/pbkdf2": "^3.0.0", - "@types/secp256k1": "^4.0.1", - "blakejs": "^1.1.0", - "browserify-aes": "^1.2.0", - "bs58check": "^2.1.2", - "create-hash": "^1.2.0", - "create-hmac": "^1.1.7", - "hash.js": "^1.1.7", - "keccak": "^3.0.0", - "pbkdf2": "^3.0.17", - "randombytes": "^2.1.0", - "safe-buffer": "^5.1.2", - "scrypt-js": "^3.0.0", - "secp256k1": "^4.0.1", - "setimmediate": "^1.0.5" - } - }, - "node_modules/@nomicfoundation/ethereumjs-evm": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-evm/-/ethereumjs-evm-2.0.1.tgz", - "integrity": "sha512-oL8vJcnk0Bx/onl+TgQOQ1t/534GKFaEG17fZmwtPFeH8S5soiBYPCLUrvANOl4sCp9elYxIMzIiTtMtNNN8EQ==", - "dev": true, - "dependencies": { - "@ethersproject/providers": "^5.7.1", - "@nomicfoundation/ethereumjs-common": "4.0.1", - "@nomicfoundation/ethereumjs-tx": "5.0.1", - "@nomicfoundation/ethereumjs-util": "9.0.1", - "debug": "^4.3.3", - "ethereum-cryptography": "0.1.3", - "mcl-wasm": "^0.7.1", - "rustbn.js": "~0.2.0" - }, - "engines": { - "node": ">=14" - } - }, - "node_modules/@nomicfoundation/ethereumjs-evm/node_modules/ethereum-cryptography": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz", - "integrity": "sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==", - "dev": true, - "dependencies": { - "@types/pbkdf2": "^3.0.0", - "@types/secp256k1": "^4.0.1", - "blakejs": "^1.1.0", - "browserify-aes": "^1.2.0", - "bs58check": "^2.1.2", - "create-hash": "^1.2.0", - "create-hmac": "^1.1.7", - "hash.js": "^1.1.7", - "keccak": "^3.0.0", - "pbkdf2": "^3.0.17", - "randombytes": "^2.1.0", - "safe-buffer": "^5.1.2", - "scrypt-js": "^3.0.0", - "secp256k1": "^4.0.1", - "setimmediate": "^1.0.5" - } - }, - "node_modules/@nomicfoundation/ethereumjs-rlp": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-rlp/-/ethereumjs-rlp-5.0.1.tgz", - "integrity": "sha512-xtxrMGa8kP4zF5ApBQBtjlSbN5E2HI8m8FYgVSYAnO6ssUoY5pVPGy2H8+xdf/bmMa22Ce8nWMH3aEW8CcqMeQ==", - "dev": true, - "bin": { - "rlp": "bin/rlp" - }, - "engines": { - "node": ">=14" - } - }, - "node_modules/@nomicfoundation/ethereumjs-statemanager": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-statemanager/-/ethereumjs-statemanager-2.0.1.tgz", - "integrity": "sha512-B5ApMOnlruVOR7gisBaYwFX+L/AP7i/2oAahatssjPIBVDF6wTX1K7Qpa39E/nzsH8iYuL3krkYeUFIdO3EMUQ==", - "dev": true, - "dependencies": { - "@nomicfoundation/ethereumjs-common": "4.0.1", - "@nomicfoundation/ethereumjs-rlp": "5.0.1", - "debug": "^4.3.3", - "ethereum-cryptography": "0.1.3", - "ethers": "^5.7.1", - "js-sdsl": "^4.1.4" - } - }, - "node_modules/@nomicfoundation/ethereumjs-statemanager/node_modules/ethereum-cryptography": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz", - "integrity": "sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==", - "dev": true, - "dependencies": { - "@types/pbkdf2": "^3.0.0", - "@types/secp256k1": "^4.0.1", - "blakejs": "^1.1.0", - "browserify-aes": "^1.2.0", - "bs58check": "^2.1.2", - "create-hash": "^1.2.0", - "create-hmac": "^1.1.7", - "hash.js": "^1.1.7", - "keccak": "^3.0.0", - "pbkdf2": "^3.0.17", - "randombytes": "^2.1.0", - "safe-buffer": "^5.1.2", - "scrypt-js": "^3.0.0", - "secp256k1": "^4.0.1", - "setimmediate": "^1.0.5" - } - }, - "node_modules/@nomicfoundation/ethereumjs-trie": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-trie/-/ethereumjs-trie-6.0.1.tgz", - "integrity": "sha512-A64It/IMpDVODzCgxDgAAla8jNjNtsoQZIzZUfIV5AY6Coi4nvn7+VReBn5itlxMiL2yaTlQr9TRWp3CSI6VoA==", - "dev": true, - "dependencies": { - "@nomicfoundation/ethereumjs-rlp": "5.0.1", - "@nomicfoundation/ethereumjs-util": "9.0.1", - "@types/readable-stream": "^2.3.13", - "ethereum-cryptography": "0.1.3", - "readable-stream": "^3.6.0" - }, - "engines": { - "node": ">=14" - } - }, - "node_modules/@nomicfoundation/ethereumjs-trie/node_modules/ethereum-cryptography": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz", - "integrity": "sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==", - "dev": true, - "dependencies": { - "@types/pbkdf2": "^3.0.0", - "@types/secp256k1": "^4.0.1", - "blakejs": "^1.1.0", - "browserify-aes": "^1.2.0", - "bs58check": "^2.1.2", - "create-hash": "^1.2.0", - "create-hmac": "^1.1.7", - "hash.js": "^1.1.7", - "keccak": "^3.0.0", - "pbkdf2": "^3.0.17", - "randombytes": "^2.1.0", - "safe-buffer": "^5.1.2", - "scrypt-js": "^3.0.0", - "secp256k1": "^4.0.1", - "setimmediate": "^1.0.5" - } - }, - "node_modules/@nomicfoundation/ethereumjs-tx": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-tx/-/ethereumjs-tx-5.0.1.tgz", - "integrity": "sha512-0HwxUF2u2hrsIM1fsasjXvlbDOq1ZHFV2dd1yGq8CA+MEYhaxZr8OTScpVkkxqMwBcc5y83FyPl0J9MZn3kY0w==", - "dev": true, - "dependencies": { - "@chainsafe/ssz": "^0.9.2", - "@ethersproject/providers": "^5.7.2", - "@nomicfoundation/ethereumjs-common": "4.0.1", - "@nomicfoundation/ethereumjs-rlp": "5.0.1", - "@nomicfoundation/ethereumjs-util": "9.0.1", - "ethereum-cryptography": "0.1.3" - }, - "engines": { - "node": ">=14" - } - }, - "node_modules/@nomicfoundation/ethereumjs-tx/node_modules/ethereum-cryptography": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz", - "integrity": "sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==", - "dev": true, - "dependencies": { - "@types/pbkdf2": "^3.0.0", - "@types/secp256k1": "^4.0.1", - "blakejs": "^1.1.0", - "browserify-aes": "^1.2.0", - "bs58check": "^2.1.2", - "create-hash": "^1.2.0", - "create-hmac": "^1.1.7", - "hash.js": "^1.1.7", - "keccak": "^3.0.0", - "pbkdf2": "^3.0.17", - "randombytes": "^2.1.0", - "safe-buffer": "^5.1.2", - "scrypt-js": "^3.0.0", - "secp256k1": "^4.0.1", - "setimmediate": "^1.0.5" - } - }, - "node_modules/@nomicfoundation/ethereumjs-util": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-util/-/ethereumjs-util-9.0.1.tgz", - "integrity": "sha512-TwbhOWQ8QoSCFhV/DDfSmyfFIHjPjFBj957219+V3jTZYZ2rf9PmDtNOeZWAE3p3vlp8xb02XGpd0v6nTUPbsA==", - "dev": true, - "dependencies": { - "@chainsafe/ssz": "^0.10.0", - "@nomicfoundation/ethereumjs-rlp": "5.0.1", - "ethereum-cryptography": "0.1.3" - }, - "engines": { - "node": ">=14" - } - }, - "node_modules/@nomicfoundation/ethereumjs-util/node_modules/@chainsafe/persistent-merkle-tree": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/@chainsafe/persistent-merkle-tree/-/persistent-merkle-tree-0.5.0.tgz", - "integrity": "sha512-l0V1b5clxA3iwQLXP40zYjyZYospQLZXzBVIhhr9kDg/1qHZfzzHw0jj4VPBijfYCArZDlPkRi1wZaV2POKeuw==", - "dev": true, - "dependencies": { - "@chainsafe/as-sha256": "^0.3.1" - } - }, - "node_modules/@nomicfoundation/ethereumjs-util/node_modules/@chainsafe/ssz": { - "version": "0.10.2", - "resolved": "https://registry.npmjs.org/@chainsafe/ssz/-/ssz-0.10.2.tgz", - "integrity": "sha512-/NL3Lh8K+0q7A3LsiFq09YXS9fPE+ead2rr7vM2QK8PLzrNsw3uqrif9bpRX5UxgeRjM+vYi+boCM3+GM4ovXg==", - "dev": true, - "dependencies": { - "@chainsafe/as-sha256": "^0.3.1", - "@chainsafe/persistent-merkle-tree": "^0.5.0" - } - }, - "node_modules/@nomicfoundation/ethereumjs-util/node_modules/ethereum-cryptography": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz", - "integrity": "sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==", - "dev": true, - "dependencies": { - "@types/pbkdf2": "^3.0.0", - "@types/secp256k1": "^4.0.1", - "blakejs": "^1.1.0", - "browserify-aes": "^1.2.0", - "bs58check": "^2.1.2", - "create-hash": "^1.2.0", - "create-hmac": "^1.1.7", - "hash.js": "^1.1.7", - "keccak": "^3.0.0", - "pbkdf2": "^3.0.17", - "randombytes": "^2.1.0", - "safe-buffer": "^5.1.2", - "scrypt-js": "^3.0.0", - "secp256k1": "^4.0.1", - "setimmediate": "^1.0.5" - } - }, - "node_modules/@nomicfoundation/ethereumjs-vm": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-vm/-/ethereumjs-vm-7.0.1.tgz", - "integrity": "sha512-rArhyn0jPsS/D+ApFsz3yVJMQ29+pVzNZ0VJgkzAZ+7FqXSRtThl1C1prhmlVr3YNUlfpZ69Ak+RUT4g7VoOuQ==", - "dev": true, - "dependencies": { - "@nomicfoundation/ethereumjs-block": "5.0.1", - "@nomicfoundation/ethereumjs-blockchain": "7.0.1", - "@nomicfoundation/ethereumjs-common": "4.0.1", - "@nomicfoundation/ethereumjs-evm": "2.0.1", - "@nomicfoundation/ethereumjs-rlp": "5.0.1", - "@nomicfoundation/ethereumjs-statemanager": "2.0.1", - "@nomicfoundation/ethereumjs-trie": "6.0.1", - "@nomicfoundation/ethereumjs-tx": "5.0.1", - "@nomicfoundation/ethereumjs-util": "9.0.1", - "debug": "^4.3.3", - "ethereum-cryptography": "0.1.3", - "mcl-wasm": "^0.7.1", - "rustbn.js": "~0.2.0" - }, - "engines": { - "node": ">=14" - } - }, - "node_modules/@nomicfoundation/ethereumjs-vm/node_modules/ethereum-cryptography": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz", - "integrity": "sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==", - "dev": true, - "dependencies": { - "@types/pbkdf2": "^3.0.0", - "@types/secp256k1": "^4.0.1", - "blakejs": "^1.1.0", - "browserify-aes": "^1.2.0", - "bs58check": "^2.1.2", - "create-hash": "^1.2.0", - "create-hmac": "^1.1.7", - "hash.js": "^1.1.7", - "keccak": "^3.0.0", - "pbkdf2": "^3.0.17", - "randombytes": "^2.1.0", - "safe-buffer": "^5.1.2", - "scrypt-js": "^3.0.0", - "secp256k1": "^4.0.1", - "setimmediate": "^1.0.5" - } - }, - "node_modules/@nomicfoundation/solidity-analyzer": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer/-/solidity-analyzer-0.1.1.tgz", - "integrity": "sha512-1LMtXj1puAxyFusBgUIy5pZk3073cNXYnXUpuNKFghHbIit/xZgbk0AokpUADbNm3gyD6bFWl3LRFh3dhVdREg==", - "dev": true, - "engines": { - "node": ">= 12" - }, - "optionalDependencies": { - "@nomicfoundation/solidity-analyzer-darwin-arm64": "0.1.1", - "@nomicfoundation/solidity-analyzer-darwin-x64": "0.1.1", - "@nomicfoundation/solidity-analyzer-freebsd-x64": "0.1.1", - "@nomicfoundation/solidity-analyzer-linux-arm64-gnu": "0.1.1", - "@nomicfoundation/solidity-analyzer-linux-arm64-musl": "0.1.1", - "@nomicfoundation/solidity-analyzer-linux-x64-gnu": "0.1.1", - "@nomicfoundation/solidity-analyzer-linux-x64-musl": "0.1.1", - "@nomicfoundation/solidity-analyzer-win32-arm64-msvc": "0.1.1", - "@nomicfoundation/solidity-analyzer-win32-ia32-msvc": "0.1.1", - "@nomicfoundation/solidity-analyzer-win32-x64-msvc": "0.1.1" - } - }, - "node_modules/@nomicfoundation/solidity-analyzer-darwin-arm64": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-darwin-arm64/-/solidity-analyzer-darwin-arm64-0.1.1.tgz", - "integrity": "sha512-KcTodaQw8ivDZyF+D76FokN/HdpgGpfjc/gFCImdLUyqB6eSWVaZPazMbeAjmfhx3R0zm/NYVzxwAokFKgrc0w==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@nomicfoundation/solidity-analyzer-darwin-x64": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-darwin-x64/-/solidity-analyzer-darwin-x64-0.1.1.tgz", - "integrity": "sha512-XhQG4BaJE6cIbjAVtzGOGbK3sn1BO9W29uhk9J8y8fZF1DYz0Doj8QDMfpMu+A6TjPDs61lbsmeYodIDnfveSA==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@nomicfoundation/solidity-analyzer-freebsd-x64": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-freebsd-x64/-/solidity-analyzer-freebsd-x64-0.1.1.tgz", - "integrity": "sha512-GHF1VKRdHW3G8CndkwdaeLkVBi5A9u2jwtlS7SLhBc8b5U/GcoL39Q+1CSO3hYqePNP+eV5YI7Zgm0ea6kMHoA==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@nomicfoundation/solidity-analyzer-linux-arm64-gnu": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-linux-arm64-gnu/-/solidity-analyzer-linux-arm64-gnu-0.1.1.tgz", - "integrity": "sha512-g4Cv2fO37ZsUENQ2vwPnZc2zRenHyAxHcyBjKcjaSmmkKrFr64yvzeNO8S3GBFCo90rfochLs99wFVGT/0owpg==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@nomicfoundation/solidity-analyzer-linux-arm64-musl": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-linux-arm64-musl/-/solidity-analyzer-linux-arm64-musl-0.1.1.tgz", - "integrity": "sha512-WJ3CE5Oek25OGE3WwzK7oaopY8xMw9Lhb0mlYuJl/maZVo+WtP36XoQTb7bW/i8aAdHW5Z+BqrHMux23pvxG3w==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@nomicfoundation/solidity-analyzer-linux-x64-gnu": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-linux-x64-gnu/-/solidity-analyzer-linux-x64-gnu-0.1.1.tgz", - "integrity": "sha512-5WN7leSr5fkUBBjE4f3wKENUy9HQStu7HmWqbtknfXkkil+eNWiBV275IOlpXku7v3uLsXTOKpnnGHJYI2qsdA==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@nomicfoundation/solidity-analyzer-linux-x64-musl": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-linux-x64-musl/-/solidity-analyzer-linux-x64-musl-0.1.1.tgz", - "integrity": "sha512-KdYMkJOq0SYPQMmErv/63CwGwMm5XHenEna9X9aB8mQmhDBrYrlAOSsIPgFCUSL0hjxE3xHP65/EPXR/InD2+w==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@nomicfoundation/solidity-analyzer-win32-arm64-msvc": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-win32-arm64-msvc/-/solidity-analyzer-win32-arm64-msvc-0.1.1.tgz", - "integrity": "sha512-VFZASBfl4qiBYwW5xeY20exWhmv6ww9sWu/krWSesv3q5hA0o1JuzmPHR4LPN6SUZj5vcqci0O6JOL8BPw+APg==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@nomicfoundation/solidity-analyzer-win32-ia32-msvc": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-win32-ia32-msvc/-/solidity-analyzer-win32-ia32-msvc-0.1.1.tgz", - "integrity": "sha512-JnFkYuyCSA70j6Si6cS1A9Gh1aHTEb8kOTBApp/c7NRTFGNMH8eaInKlyuuiIbvYFhlXW4LicqyYuWNNq9hkpQ==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@nomicfoundation/solidity-analyzer-win32-x64-msvc": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-win32-x64-msvc/-/solidity-analyzer-win32-x64-msvc-0.1.1.tgz", - "integrity": "sha512-HrVJr6+WjIXGnw3Q9u6KQcbZCtk0caVWhCdFADySvRyUxJ8PnzlaP+MhwNE8oyT8OZ6ejHBRrrgjSqDCFXGirw==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@scure/base": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.1.1.tgz", - "integrity": "sha512-ZxOhsSyxYwLJj3pLZCefNitxsj093tb2vq90mp2txoYeBqbcjDjqFhyM8eUjq/uFm6zJ+mUuqxlS2FkuSY1MTA==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - ] - }, - "node_modules/@scure/bip32": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.1.5.tgz", - "integrity": "sha512-XyNh1rB0SkEqd3tXcXMi+Xe1fvg+kUIcoRIEujP1Jgv7DqW2r9lg3Ah0NkFaCs9sTkQAQA8kw7xiRXzENi9Rtw==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - ], - "dependencies": { - "@noble/hashes": "~1.2.0", - "@noble/secp256k1": "~1.7.0", - "@scure/base": "~1.1.0" - } - }, - "node_modules/@scure/bip39": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.1.1.tgz", - "integrity": "sha512-t+wDck2rVkh65Hmv280fYdVdY25J9YeEUIgn2LG1WM6gxFkGzcksoDiUkWVpVp3Oex9xGC68JU2dSbUfwZ2jPg==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - ], - "dependencies": { - "@noble/hashes": "~1.2.0", - "@scure/base": "~1.1.0" - } - }, - "node_modules/@sentry/core": { - "version": "5.30.0", - "resolved": "https://registry.npmjs.org/@sentry/core/-/core-5.30.0.tgz", - "integrity": "sha512-TmfrII8w1PQZSZgPpUESqjB+jC6MvZJZdLtE/0hZ+SrnKhW3x5WlYLvTXZpcWePYBku7rl2wn1RZu6uT0qCTeg==", - "dev": true, - "dependencies": { - "@sentry/hub": "5.30.0", - "@sentry/minimal": "5.30.0", - "@sentry/types": "5.30.0", - "@sentry/utils": "5.30.0", - "tslib": "^1.9.3" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/@sentry/hub": { - "version": "5.30.0", - "resolved": "https://registry.npmjs.org/@sentry/hub/-/hub-5.30.0.tgz", - "integrity": "sha512-2tYrGnzb1gKz2EkMDQcfLrDTvmGcQPuWxLnJKXJvYTQDGLlEvi2tWz1VIHjunmOvJrB5aIQLhm+dcMRwFZDCqQ==", - "dev": true, - "dependencies": { - "@sentry/types": "5.30.0", - "@sentry/utils": "5.30.0", - "tslib": "^1.9.3" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/@sentry/minimal": { - "version": "5.30.0", - "resolved": "https://registry.npmjs.org/@sentry/minimal/-/minimal-5.30.0.tgz", - "integrity": "sha512-BwWb/owZKtkDX+Sc4zCSTNcvZUq7YcH3uAVlmh/gtR9rmUvbzAA3ewLuB3myi4wWRAMEtny6+J/FN/x+2wn9Xw==", - "dev": true, - "dependencies": { - "@sentry/hub": "5.30.0", - "@sentry/types": "5.30.0", - "tslib": "^1.9.3" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/@sentry/node": { - "version": "5.30.0", - "resolved": "https://registry.npmjs.org/@sentry/node/-/node-5.30.0.tgz", - "integrity": "sha512-Br5oyVBF0fZo6ZS9bxbJZG4ApAjRqAnqFFurMVJJdunNb80brh7a5Qva2kjhm+U6r9NJAB5OmDyPkA1Qnt+QVg==", - "dev": true, - "dependencies": { - "@sentry/core": "5.30.0", - "@sentry/hub": "5.30.0", - "@sentry/tracing": "5.30.0", - "@sentry/types": "5.30.0", - "@sentry/utils": "5.30.0", - "cookie": "^0.4.1", - "https-proxy-agent": "^5.0.0", - "lru_map": "^0.3.3", - "tslib": "^1.9.3" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/@sentry/tracing": { - "version": "5.30.0", - "resolved": "https://registry.npmjs.org/@sentry/tracing/-/tracing-5.30.0.tgz", - "integrity": "sha512-dUFowCr0AIMwiLD7Fs314Mdzcug+gBVo/+NCMyDw8tFxJkwWAKl7Qa2OZxLQ0ZHjakcj1hNKfCQJ9rhyfOl4Aw==", - "dev": true, - "dependencies": { - "@sentry/hub": "5.30.0", - "@sentry/minimal": "5.30.0", - "@sentry/types": "5.30.0", - "@sentry/utils": "5.30.0", - "tslib": "^1.9.3" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/@sentry/types": { - "version": "5.30.0", - "resolved": "https://registry.npmjs.org/@sentry/types/-/types-5.30.0.tgz", - "integrity": "sha512-R8xOqlSTZ+htqrfteCWU5Nk0CDN5ApUTvrlvBuiH1DyP6czDZ4ktbZB0hAgBlVcK0U+qpD3ag3Tqqpa5Q67rPw==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/@sentry/utils": { - "version": "5.30.0", - "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-5.30.0.tgz", - "integrity": "sha512-zaYmoH0NWWtvnJjC9/CBseXMtKHm/tm40sz3YfJRxeQjyzRqNQPgivpd9R/oDJCYj999mzdW382p/qi2ypjLww==", - "dev": true, - "dependencies": { - "@sentry/types": "5.30.0", - "tslib": "^1.9.3" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/@types/bn.js": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-5.1.1.tgz", - "integrity": "sha512-qNrYbZqMx0uJAfKnKclPh+dTwK33KfLHYqtyODwd5HnXOjnkhc4qgn3BrK6RWyGZm5+sIFE7Q7Vz6QQtJB7w7g==", - "dev": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/@types/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-ssE3Vlrys7sdIzs5LOxCzTVMsU7i9oa/IaW92wF32JFb3CVczqOkru2xspuKczHEbG3nvmPY7IFqVmGGHdNbYw==", - "dev": true - }, - "node_modules/@types/node": { - "version": "20.5.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.5.1.tgz", - "integrity": "sha512-4tT2UrL5LBqDwoed9wZ6N3umC4Yhz3W3FloMmiiG4JwmUJWpie0c7lcnUNd4gtMKuDEO4wRVS8B6Xa0uMRsMKg==", - "dev": true - }, - "node_modules/@types/pbkdf2": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@types/pbkdf2/-/pbkdf2-3.1.0.tgz", - "integrity": "sha512-Cf63Rv7jCQ0LaL8tNXmEyqTHuIJxRdlS5vMh1mj5voN4+QFhVZnlZruezqpWYDiJ8UTzhP0VmeLXCmBk66YrMQ==", - "dev": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/readable-stream": { - "version": "2.3.15", - "resolved": "https://registry.npmjs.org/@types/readable-stream/-/readable-stream-2.3.15.tgz", - "integrity": "sha512-oM5JSKQCcICF1wvGgmecmHldZ48OZamtMxcGGVICOJA8o8cahXC1zEVAif8iwoc5j8etxFaRFnf095+CDsuoFQ==", - "dev": true, - "dependencies": { - "@types/node": "*", - "safe-buffer": "~5.1.1" - } - }, - "node_modules/@types/secp256k1": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/@types/secp256k1/-/secp256k1-4.0.3.tgz", - "integrity": "sha512-Da66lEIFeIz9ltsdMZcpQvmrmmoqrfju8pm1BH8WbYjZSwUgCwXLb9C+9XYogwBITnbsSaMdVPb2ekf7TV+03w==", - "dev": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/abstract-level": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/abstract-level/-/abstract-level-1.0.3.tgz", - "integrity": "sha512-t6jv+xHy+VYwc4xqZMn2Pa9DjcdzvzZmQGRjTFc8spIbRGHgBrEKbPq+rYXc7CCo0lxgYvSgKVg9qZAhpVQSjA==", - "dev": true, - "dependencies": { - "buffer": "^6.0.3", - "catering": "^2.1.0", - "is-buffer": "^2.0.5", - "level-supports": "^4.0.0", - "level-transcoder": "^1.0.1", - "module-error": "^1.0.1", - "queue-microtask": "^1.2.3" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/adm-zip": { - "version": "0.4.16", - "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.4.16.tgz", - "integrity": "sha512-TFi4HBKSGfIKsK5YCkKaaFG2m4PEDyViZmEwof3MTIgzimHLto6muaHVpbrljdIvIrFZzEq/p4nafOeLcYegrg==", - "dev": true, - "engines": { - "node": ">=0.3.0" - } - }, - "node_modules/aes-js": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/aes-js/-/aes-js-3.0.0.tgz", - "integrity": "sha512-H7wUZRn8WpTq9jocdxQ2c8x2sKo9ZVmzfRE13GiNJXfp7NcKYEdvl3vspKjXox6RIG2VtaRe4JFvxG4rqp2Zuw==", - "dev": true - }, - "node_modules/agent-base": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", - "dev": true, - "dependencies": { - "debug": "4" - }, - "engines": { - "node": ">= 6.0.0" - } - }, - "node_modules/aggregate-error": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", - "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", - "dev": true, - "dependencies": { - "clean-stack": "^2.0.0", - "indent-string": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/ansi-colors": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", - "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/ansi-escapes": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", - "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", - "dev": true, - "dependencies": { - "type-fest": "^0.21.3" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/anymatch": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", - "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", - "dev": true, - "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true - }, - "node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true - }, - "node_modules/base-x": { - "version": "3.0.9", - "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.9.tgz", - "integrity": "sha512-H7JU6iBHTal1gp56aKoaa//YUxEaAOUiydvrV/pILqIHXTtqxSkATOnDA2u+jZ/61sD+L/412+7kzXRtWukhpQ==", - "dev": true, - "dependencies": { - "safe-buffer": "^5.0.1" - } - }, - "node_modules/base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/bech32": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/bech32/-/bech32-1.1.4.tgz", - "integrity": "sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ==", - "dev": true - }, - "node_modules/bigint-crypto-utils": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/bigint-crypto-utils/-/bigint-crypto-utils-3.3.0.tgz", - "integrity": "sha512-jOTSb+drvEDxEq6OuUybOAv/xxoh3cuYRUIPyu8sSHQNKM303UQ2R1DAo45o1AkcIXw6fzbaFI1+xGGdaXs2lg==", - "dev": true, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/binary-extensions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/blakejs": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/blakejs/-/blakejs-1.2.1.tgz", - "integrity": "sha512-QXUSXI3QVc/gJME0dBpXrag1kbzOqCjCX8/b54ntNyW6sjtoqxqRk3LTmXzaJoh71zMsDCjM+47jS7XiwN/+fQ==", - "dev": true - }, - "node_modules/bn.js": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", - "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", - "dev": true - }, - "node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, - "dependencies": { - "fill-range": "^7.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/brorand": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", - "integrity": "sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==", - "dev": true - }, - "node_modules/browser-level": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/browser-level/-/browser-level-1.0.1.tgz", - "integrity": "sha512-XECYKJ+Dbzw0lbydyQuJzwNXtOpbMSq737qxJN11sIRTErOMShvDpbzTlgju7orJKvx4epULolZAuJGLzCmWRQ==", - "dev": true, - "dependencies": { - "abstract-level": "^1.0.2", - "catering": "^2.1.1", - "module-error": "^1.0.2", - "run-parallel-limit": "^1.1.0" - } - }, - "node_modules/browser-stdout": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", - "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", - "dev": true - }, - "node_modules/browserify-aes": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", - "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", - "dev": true, - "dependencies": { - "buffer-xor": "^1.0.3", - "cipher-base": "^1.0.0", - "create-hash": "^1.1.0", - "evp_bytestokey": "^1.0.3", - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "node_modules/bs58": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz", - "integrity": "sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw==", - "dev": true, - "dependencies": { - "base-x": "^3.0.2" - } - }, - "node_modules/bs58check": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/bs58check/-/bs58check-2.1.2.tgz", - "integrity": "sha512-0TS1jicxdU09dwJMNZtVAfzPi6Q6QeN0pM1Fkzrjn+XYHvzMKPU3pHVpva+769iNVSfIYWf7LJ6WR+BuuMf8cA==", - "dev": true, - "dependencies": { - "bs58": "^4.0.0", - "create-hash": "^1.1.0", - "safe-buffer": "^5.1.2" - } - }, - "node_modules/buffer": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", - "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.2.1" - } - }, - "node_modules/buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", - "dev": true - }, - "node_modules/buffer-xor": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", - "integrity": "sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==", - "dev": true - }, - "node_modules/busboy": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz", - "integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==", - "dev": true, - "dependencies": { - "streamsearch": "^1.1.0" - }, - "engines": { - "node": ">=10.16.0" - } - }, - "node_modules/bytes": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", - "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/camelcase": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", - "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/case": { - "version": "1.6.3", - "resolved": "https://registry.npmjs.org/case/-/case-1.6.3.tgz", - "integrity": "sha512-mzDSXIPaFwVDvZAHqZ9VlbyF4yyXRuX6IvB06WvPYkqJVO24kX1PPhv9bfpKNFZyxYFmmgo03HUiD8iklmJYRQ==", - "dev": true, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/catering": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/catering/-/catering-2.1.1.tgz", - "integrity": "sha512-K7Qy8O9p76sL3/3m7/zLKbRkyOlSZAgzEaLhyj2mXS8PsCud2Eo4hAb8aLtZqHh0QGqLcb9dlJSu6lHRVENm1w==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/chokidar": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", - "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - ], - "dependencies": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" - }, - "engines": { - "node": ">= 8.10.0" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - } - }, - "node_modules/ci-info": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", - "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", - "dev": true - }, - "node_modules/cipher-base": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", - "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", - "dev": true, - "dependencies": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "node_modules/classic-level": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/classic-level/-/classic-level-1.3.0.tgz", - "integrity": "sha512-iwFAJQYtqRTRM0F6L8h4JCt00ZSGdOyqh7yVrhhjrOpFhmBjNlRUey64MCiyo6UmQHMJ+No3c81nujPv+n9yrg==", - "dev": true, - "hasInstallScript": true, - "dependencies": { - "abstract-level": "^1.0.2", - "catering": "^2.1.0", - "module-error": "^1.0.1", - "napi-macros": "^2.2.2", - "node-gyp-build": "^4.3.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/clean-stack": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", - "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/cliui": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", - "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", - "dev": true, - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^7.0.0" - } - }, - "node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true - }, - "node_modules/command-exists": { - "version": "1.2.9", - "resolved": "https://registry.npmjs.org/command-exists/-/command-exists-1.2.9.tgz", - "integrity": "sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w==", - "dev": true - }, - "node_modules/commander": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/commander/-/commander-3.0.2.tgz", - "integrity": "sha512-Gar0ASD4BDyKC4hl4DwHqDrmvjoxWKZigVnAbn5H1owvm4CxCPdb0HQDehwNYMJpla5+M2tPmPARzhtYuwpHow==", - "dev": true - }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "dev": true - }, - "node_modules/cookie": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", - "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/crc-32": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.2.tgz", - "integrity": "sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==", - "dev": true, - "bin": { - "crc32": "bin/crc32.njs" - }, - "engines": { - "node": ">=0.8" - } - }, - "node_modules/create-hash": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", - "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", - "dev": true, - "dependencies": { - "cipher-base": "^1.0.1", - "inherits": "^2.0.1", - "md5.js": "^1.3.4", - "ripemd160": "^2.0.1", - "sha.js": "^2.4.0" - } - }, - "node_modules/create-hmac": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", - "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", - "dev": true, - "dependencies": { - "cipher-base": "^1.0.3", - "create-hash": "^1.1.0", - "inherits": "^2.0.1", - "ripemd160": "^2.0.0", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" - } - }, - "node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/decamelize": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz", - "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/depd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", - "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/diff": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz", - "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==", - "dev": true, - "engines": { - "node": ">=0.3.1" - } - }, - "node_modules/elliptic": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", - "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", - "dev": true, - "dependencies": { - "bn.js": "^4.11.9", - "brorand": "^1.1.0", - "hash.js": "^1.0.0", - "hmac-drbg": "^1.0.1", - "inherits": "^2.0.4", - "minimalistic-assert": "^1.0.1", - "minimalistic-crypto-utils": "^1.0.1" - } - }, - "node_modules/elliptic/node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true - }, - "node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "node_modules/enquirer": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.4.1.tgz", - "integrity": "sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==", - "dev": true, - "dependencies": { - "ansi-colors": "^4.1.1", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/env-paths": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", - "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/ethereum-cryptography": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-1.2.0.tgz", - "integrity": "sha512-6yFQC9b5ug6/17CQpCyE3k9eKBMdhyVjzUy1WkiuY/E4vj/SXDBbCw8QEIaXqf0Mf2SnY6RmpDcwlUmBSS0EJw==", - "dev": true, - "dependencies": { - "@noble/hashes": "1.2.0", - "@noble/secp256k1": "1.7.1", - "@scure/bip32": "1.1.5", - "@scure/bip39": "1.1.1" - } - }, - "node_modules/ethereumjs-abi": { - "version": "0.6.8", - "resolved": "https://registry.npmjs.org/ethereumjs-abi/-/ethereumjs-abi-0.6.8.tgz", - "integrity": "sha512-Tx0r/iXI6r+lRsdvkFDlut0N08jWMnKRZ6Gkq+Nmw75lZe4e6o3EkSnkaBP5NF6+m5PTGAr9JP43N3LyeoglsA==", - "dev": true, - "dependencies": { - "bn.js": "^4.11.8", - "ethereumjs-util": "^6.0.0" - } - }, - "node_modules/ethereumjs-abi/node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true - }, - "node_modules/ethereumjs-util": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-6.2.1.tgz", - "integrity": "sha512-W2Ktez4L01Vexijrm5EB6w7dg4n/TgpoYU4avuT5T3Vmnw/eCRtiBrJfQYS/DCSvDIOLn2k57GcHdeBcgVxAqw==", - "dev": true, - "dependencies": { - "@types/bn.js": "^4.11.3", - "bn.js": "^4.11.0", - "create-hash": "^1.1.2", - "elliptic": "^6.5.2", - "ethereum-cryptography": "^0.1.3", - "ethjs-util": "0.1.6", - "rlp": "^2.2.3" - } - }, - "node_modules/ethereumjs-util/node_modules/@types/bn.js": { - "version": "4.11.6", - "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-4.11.6.tgz", - "integrity": "sha512-pqr857jrp2kPuO9uRjZ3PwnJTjoQy+fcdxvBTvHm6dkmEL9q+hDD/2j/0ELOBPtPnS8LjCX0gI9nbl8lVkadpg==", - "dev": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/ethereumjs-util/node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true - }, - "node_modules/ethereumjs-util/node_modules/ethereum-cryptography": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz", - "integrity": "sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==", - "dev": true, - "dependencies": { - "@types/pbkdf2": "^3.0.0", - "@types/secp256k1": "^4.0.1", - "blakejs": "^1.1.0", - "browserify-aes": "^1.2.0", - "bs58check": "^2.1.2", - "create-hash": "^1.2.0", - "create-hmac": "^1.1.7", - "hash.js": "^1.1.7", - "keccak": "^3.0.0", - "pbkdf2": "^3.0.17", - "randombytes": "^2.1.0", - "safe-buffer": "^5.1.2", - "scrypt-js": "^3.0.0", - "secp256k1": "^4.0.1", - "setimmediate": "^1.0.5" - } - }, - "node_modules/ethers": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/ethers/-/ethers-5.7.2.tgz", - "integrity": "sha512-wswUsmWo1aOK8rR7DIKiWSw9DbLWe6x98Jrn8wcTflTVvaXhAMaB5zGAXy0GYQEQp9iO1iSHWVyARQm11zUtyg==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "dependencies": { - "@ethersproject/abi": "5.7.0", - "@ethersproject/abstract-provider": "5.7.0", - "@ethersproject/abstract-signer": "5.7.0", - "@ethersproject/address": "5.7.0", - "@ethersproject/base64": "5.7.0", - "@ethersproject/basex": "5.7.0", - "@ethersproject/bignumber": "5.7.0", - "@ethersproject/bytes": "5.7.0", - "@ethersproject/constants": "5.7.0", - "@ethersproject/contracts": "5.7.0", - "@ethersproject/hash": "5.7.0", - "@ethersproject/hdnode": "5.7.0", - "@ethersproject/json-wallets": "5.7.0", - "@ethersproject/keccak256": "5.7.0", - "@ethersproject/logger": "5.7.0", - "@ethersproject/networks": "5.7.1", - "@ethersproject/pbkdf2": "5.7.0", - "@ethersproject/properties": "5.7.0", - "@ethersproject/providers": "5.7.2", - "@ethersproject/random": "5.7.0", - "@ethersproject/rlp": "5.7.0", - "@ethersproject/sha2": "5.7.0", - "@ethersproject/signing-key": "5.7.0", - "@ethersproject/solidity": "5.7.0", - "@ethersproject/strings": "5.7.0", - "@ethersproject/transactions": "5.7.0", - "@ethersproject/units": "5.7.0", - "@ethersproject/wallet": "5.7.0", - "@ethersproject/web": "5.7.1", - "@ethersproject/wordlists": "5.7.0" - } - }, - "node_modules/ethjs-util": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/ethjs-util/-/ethjs-util-0.1.6.tgz", - "integrity": "sha512-CUnVOQq7gSpDHZVVrQW8ExxUETWrnrvXYvYz55wOU8Uj4VCgw56XC2B/fVqQN+f7gmrnRHSLVnFAwsCuNwji8w==", - "dev": true, - "dependencies": { - "is-hex-prefixed": "1.0.0", - "strip-hex-prefix": "1.0.0" - }, - "engines": { - "node": ">=6.5.0", - "npm": ">=3" - } - }, - "node_modules/evp_bytestokey": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", - "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", - "dev": true, - "dependencies": { - "md5.js": "^1.3.4", - "safe-buffer": "^5.1.1" - } - }, - "node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==", - "dev": true, - "dependencies": { - "locate-path": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/flat": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", - "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", - "dev": true, - "bin": { - "flat": "cli.js" - } - }, - "node_modules/follow-redirects": { - "version": "1.15.2", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", - "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/RubenVerborgh" - } - ], - "engines": { - "node": ">=4.0" - }, - "peerDependenciesMeta": { - "debug": { - "optional": true - } - } - }, - "node_modules/fp-ts": { - "version": "1.19.3", - "resolved": "https://registry.npmjs.org/fp-ts/-/fp-ts-1.19.3.tgz", - "integrity": "sha512-H5KQDspykdHuztLTg+ajGN0Z2qUjcEf3Ybxc6hLt0k7/zPkn29XnKnxlBPyW2XIddWrGaJBzBl4VLYOtk39yZg==", - "dev": true - }, - "node_modules/fs-extra": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", - "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", - "dev": true, - "dependencies": { - "graceful-fs": "^4.1.2", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - }, - "engines": { - "node": ">=6 <7 || >=8" - } - }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", - "dev": true - }, - "node_modules/fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "dev": true, - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, - "node_modules/functional-red-black-tree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", - "integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==", - "dev": true - }, - "node_modules/get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true, - "engines": { - "node": "6.* || 8.* || >= 10.*" - } - }, - "node_modules/glob": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", - "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/graceful-fs": { - "version": "4.2.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", - "dev": true - }, - "node_modules/hardhat": { - "version": "2.17.1", - "resolved": "https://registry.npmjs.org/hardhat/-/hardhat-2.17.1.tgz", - "integrity": "sha512-1PxRkfjhEzXs/wDxI5YgzYBxNmvzifBTjYzuopwel+vXpAhCudplusJthN5eig0FTs4qbi828DBIITEDh8x9LA==", - "dev": true, - "dependencies": { - "@ethersproject/abi": "^5.1.2", - "@metamask/eth-sig-util": "^4.0.0", - "@nomicfoundation/ethereumjs-block": "5.0.1", - "@nomicfoundation/ethereumjs-blockchain": "7.0.1", - "@nomicfoundation/ethereumjs-common": "4.0.1", - "@nomicfoundation/ethereumjs-evm": "2.0.1", - "@nomicfoundation/ethereumjs-rlp": "5.0.1", - "@nomicfoundation/ethereumjs-statemanager": "2.0.1", - "@nomicfoundation/ethereumjs-trie": "6.0.1", - "@nomicfoundation/ethereumjs-tx": "5.0.1", - "@nomicfoundation/ethereumjs-util": "9.0.1", - "@nomicfoundation/ethereumjs-vm": "7.0.1", - "@nomicfoundation/solidity-analyzer": "^0.1.0", - "@sentry/node": "^5.18.1", - "@types/bn.js": "^5.1.0", - "@types/lru-cache": "^5.1.0", - "adm-zip": "^0.4.16", - "aggregate-error": "^3.0.0", - "ansi-escapes": "^4.3.0", - "chalk": "^2.4.2", - "chokidar": "^3.4.0", - "ci-info": "^2.0.0", - "debug": "^4.1.1", - "enquirer": "^2.3.0", - "env-paths": "^2.2.0", - "ethereum-cryptography": "^1.0.3", - "ethereumjs-abi": "^0.6.8", - "find-up": "^2.1.0", - "fp-ts": "1.19.3", - "fs-extra": "^7.0.1", - "glob": "7.2.0", - "immutable": "^4.0.0-rc.12", - "io-ts": "1.10.4", - "keccak": "^3.0.2", - "lodash": "^4.17.11", - "mnemonist": "^0.38.0", - "mocha": "^10.0.0", - "p-map": "^4.0.0", - "raw-body": "^2.4.1", - "resolve": "1.17.0", - "semver": "^6.3.0", - "solc": "0.7.3", - "source-map-support": "^0.5.13", - "stacktrace-parser": "^0.1.10", - "tsort": "0.0.1", - "undici": "^5.14.0", - "uuid": "^8.3.2", - "ws": "^7.4.6" - }, - "bin": { - "hardhat": "internal/cli/bootstrap.js" - }, - "peerDependencies": { - "ts-node": "*", - "typescript": "*" - }, - "peerDependenciesMeta": { - "ts-node": { - "optional": true - }, - "typescript": { - "optional": true - } - } - }, - "node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/hash-base": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", - "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", - "dev": true, - "dependencies": { - "inherits": "^2.0.4", - "readable-stream": "^3.6.0", - "safe-buffer": "^5.2.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/hash-base/node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/hash.js": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", - "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", - "dev": true, - "dependencies": { - "inherits": "^2.0.3", - "minimalistic-assert": "^1.0.1" - } - }, - "node_modules/he": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", - "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", - "dev": true, - "bin": { - "he": "bin/he" - } - }, - "node_modules/hmac-drbg": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", - "integrity": "sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==", - "dev": true, - "dependencies": { - "hash.js": "^1.0.3", - "minimalistic-assert": "^1.0.0", - "minimalistic-crypto-utils": "^1.0.1" - } - }, - "node_modules/http-errors": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", - "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", - "dev": true, - "dependencies": { - "depd": "2.0.0", - "inherits": "2.0.4", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "toidentifier": "1.0.1" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/https-proxy-agent": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", - "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", - "dev": true, - "dependencies": { - "agent-base": "6", - "debug": "4" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "dev": true, - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/immutable": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.2.tgz", - "integrity": "sha512-oGXzbEDem9OOpDWZu88jGiYCvIsLHMvGw+8OXlpsvTFvIQplQbjg1B1cvKg8f7Hoch6+NGjpPsH1Fr+Mc2D1aA==", - "dev": true - }, - "node_modules/indent-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", - "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "dev": true, - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true - }, - "node_modules/io-ts": { - "version": "1.10.4", - "resolved": "https://registry.npmjs.org/io-ts/-/io-ts-1.10.4.tgz", - "integrity": "sha512-b23PteSnYXSONJ6JQXRAlvJhuw8KOtkqa87W4wDtvMrud/DTJd5X+NpOOI+O/zZwVq6v0VLAaJ+1EDViKEuN9g==", - "dev": true, - "dependencies": { - "fp-ts": "^1.0.0" - } - }, - "node_modules/is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "dev": true, - "dependencies": { - "binary-extensions": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-buffer": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", - "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "engines": { - "node": ">=4" - } - }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-hex-prefixed": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-hex-prefixed/-/is-hex-prefixed-1.0.0.tgz", - "integrity": "sha512-WvtOiug1VFrE9v1Cydwm+FnXd3+w9GaeVUss5W4v/SLy3UW00vP+6iNF2SdnfiBoLy4bTqVdkftNGTUeOFVsbA==", - "dev": true, - "engines": { - "node": ">=6.5.0", - "npm": ">=3" - } - }, - "node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true, - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/is-plain-obj": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", - "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-unicode-supported": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", - "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/js-sdsl": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.4.2.tgz", - "integrity": "sha512-dwXFwByc/ajSV6m5bcKAPwe4yDDF6D614pxmIi5odytzxRlwqF6nwoiCek80Ixc7Cvma5awClxrzFtxCQvcM8w==", - "dev": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/js-sdsl" - } - }, - "node_modules/js-sha3": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.8.0.tgz", - "integrity": "sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==", - "dev": true - }, - "node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dev": true, - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/jsonfile": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", - "dev": true, - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, - "node_modules/keccak": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/keccak/-/keccak-3.0.3.tgz", - "integrity": "sha512-JZrLIAJWuZxKbCilMpNz5Vj7Vtb4scDG3dMXLOsbzBmQGyjwE61BbW7bJkfKKCShXiQZt3T6sBgALRtmd+nZaQ==", - "dev": true, - "hasInstallScript": true, - "dependencies": { - "node-addon-api": "^2.0.0", - "node-gyp-build": "^4.2.0", - "readable-stream": "^3.6.0" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/klaw": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/klaw/-/klaw-1.3.1.tgz", - "integrity": "sha512-TED5xi9gGQjGpNnvRWknrwAB1eL5GciPfVFOt3Vk1OJCVDQbzuSfrF3hkUQKlsgKrG1F+0t5W0m+Fje1jIt8rw==", - "dev": true, - "optionalDependencies": { - "graceful-fs": "^4.1.9" - } - }, - "node_modules/level": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/level/-/level-8.0.0.tgz", - "integrity": "sha512-ypf0jjAk2BWI33yzEaaotpq7fkOPALKAgDBxggO6Q9HGX2MRXn0wbP1Jn/tJv1gtL867+YOjOB49WaUF3UoJNQ==", - "dev": true, - "dependencies": { - "browser-level": "^1.0.1", - "classic-level": "^1.2.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/level" - } - }, - "node_modules/level-supports": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/level-supports/-/level-supports-4.0.1.tgz", - "integrity": "sha512-PbXpve8rKeNcZ9C1mUicC9auIYFyGpkV9/i6g76tLgANwWhtG2v7I4xNBUlkn3lE2/dZF3Pi0ygYGtLc4RXXdA==", - "dev": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/level-transcoder": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/level-transcoder/-/level-transcoder-1.0.1.tgz", - "integrity": "sha512-t7bFwFtsQeD8cl8NIoQ2iwxA0CL/9IFw7/9gAjOonH0PWTTiRfY7Hq+Ejbsxh86tXobDQ6IOiddjNYIfOBs06w==", - "dev": true, - "dependencies": { - "buffer": "^6.0.3", - "module-error": "^1.0.1" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/locate-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==", - "dev": true, - "dependencies": { - "p-locate": "^2.0.0", - "path-exists": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true - }, - "node_modules/log-symbols": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", - "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", - "dev": true, - "dependencies": { - "chalk": "^4.1.0", - "is-unicode-supported": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/log-symbols/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/log-symbols/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/log-symbols/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/log-symbols/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/log-symbols/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/log-symbols/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/lru_map": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/lru_map/-/lru_map-0.3.3.tgz", - "integrity": "sha512-Pn9cox5CsMYngeDbmChANltQl+5pi6XmTrraMSzhPmMBbmgcxmqWry0U3PGapCU1yB4/LqCcom7qhHZiF/jGfQ==", - "dev": true - }, - "node_modules/lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", - "dev": true, - "dependencies": { - "yallist": "^3.0.2" - } - }, - "node_modules/mcl-wasm": { - "version": "0.7.9", - "resolved": "https://registry.npmjs.org/mcl-wasm/-/mcl-wasm-0.7.9.tgz", - "integrity": "sha512-iJIUcQWA88IJB/5L15GnJVnSQJmf/YaxxV6zRavv83HILHaJQb6y0iFyDMdDO0gN8X37tdxmAOrH/P8B6RB8sQ==", - "dev": true, - "engines": { - "node": ">=8.9.0" - } - }, - "node_modules/md5.js": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", - "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", - "dev": true, - "dependencies": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, - "node_modules/memory-level": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/memory-level/-/memory-level-1.0.0.tgz", - "integrity": "sha512-UXzwewuWeHBz5krr7EvehKcmLFNoXxGcvuYhC41tRnkrTbJohtS7kVn9akmgirtRygg+f7Yjsfi8Uu5SGSQ4Og==", - "dev": true, - "dependencies": { - "abstract-level": "^1.0.0", - "functional-red-black-tree": "^1.0.1", - "module-error": "^1.0.1" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/memorystream": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz", - "integrity": "sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==", - "dev": true, - "engines": { - "node": ">= 0.10.0" - } - }, - "node_modules/minimalistic-assert": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", - "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", - "dev": true - }, - "node_modules/minimalistic-crypto-utils": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", - "integrity": "sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==", - "dev": true - }, - "node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/mnemonist": { - "version": "0.38.5", - "resolved": "https://registry.npmjs.org/mnemonist/-/mnemonist-0.38.5.tgz", - "integrity": "sha512-bZTFT5rrPKtPJxj8KSV0WkPyNxl72vQepqqVUAW2ARUpUSF2qXMB6jZj7hW5/k7C1rtpzqbD/IIbJwLXUjCHeg==", - "dev": true, - "dependencies": { - "obliterator": "^2.0.0" - } - }, - "node_modules/mocha": { - "version": "10.2.0", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.2.0.tgz", - "integrity": "sha512-IDY7fl/BecMwFHzoqF2sg/SHHANeBoMMXFlS9r0OXKDssYE1M5O43wUY/9BVPeIvfH2zmEbBfseqN9gBQZzXkg==", - "dev": true, - "dependencies": { - "ansi-colors": "4.1.1", - "browser-stdout": "1.3.1", - "chokidar": "3.5.3", - "debug": "4.3.4", - "diff": "5.0.0", - "escape-string-regexp": "4.0.0", - "find-up": "5.0.0", - "glob": "7.2.0", - "he": "1.2.0", - "js-yaml": "4.1.0", - "log-symbols": "4.1.0", - "minimatch": "5.0.1", - "ms": "2.1.3", - "nanoid": "3.3.3", - "serialize-javascript": "6.0.0", - "strip-json-comments": "3.1.1", - "supports-color": "8.1.1", - "workerpool": "6.2.1", - "yargs": "16.2.0", - "yargs-parser": "20.2.4", - "yargs-unparser": "2.0.0" - }, - "bin": { - "_mocha": "bin/_mocha", - "mocha": "bin/mocha.js" - }, - "engines": { - "node": ">= 14.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/mochajs" - } - }, - "node_modules/mocha/node_modules/ansi-colors": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", - "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/mocha/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/mocha/node_modules/escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/mocha/node_modules/find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", - "dev": true, - "dependencies": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/mocha/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/mocha/node_modules/locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", - "dev": true, - "dependencies": { - "p-locate": "^5.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/mocha/node_modules/minimatch": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.0.1.tgz", - "integrity": "sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==", - "dev": true, - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/mocha/node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true - }, - "node_modules/mocha/node_modules/p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, - "dependencies": { - "yocto-queue": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/mocha/node_modules/p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", - "dev": true, - "dependencies": { - "p-limit": "^3.0.2" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/mocha/node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/mocha/node_modules/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" - } - }, - "node_modules/module-error": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/module-error/-/module-error-1.0.2.tgz", - "integrity": "sha512-0yuvsqSCv8LbaOKhnsQ/T5JhyFlCYLPXK3U2sgV10zoKQwzs/MyfuQUOZQ1V/6OCOJsK/TRgNVrPuPDqtdMFtA==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "node_modules/nanoid": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.3.tgz", - "integrity": "sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w==", - "dev": true, - "bin": { - "nanoid": "bin/nanoid.cjs" - }, - "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" - } - }, - "node_modules/napi-macros": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/napi-macros/-/napi-macros-2.2.2.tgz", - "integrity": "sha512-hmEVtAGYzVQpCKdbQea4skABsdXW4RUh5t5mJ2zzqowJS2OyXZTU1KhDVFhx+NlWZ4ap9mqR9TcDO3LTTttd+g==", - "dev": true - }, - "node_modules/node-addon-api": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-2.0.2.tgz", - "integrity": "sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA==", - "dev": true - }, - "node_modules/node-gyp-build": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.6.0.tgz", - "integrity": "sha512-NTZVKn9IylLwUzaKjkas1e4u2DLNcV4rdYagA4PWdPwW87Bi7z+BznyKSRwS/761tV/lzCGXplWsiaMjLqP2zQ==", - "dev": true, - "bin": { - "node-gyp-build": "bin.js", - "node-gyp-build-optional": "optional.js", - "node-gyp-build-test": "build-test.js" - } - }, - "node_modules/normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/obliterator": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/obliterator/-/obliterator-2.0.4.tgz", - "integrity": "sha512-lgHwxlxV1qIg1Eap7LgIeoBWIMFibOjbrYPIPJZcI1mmGAI2m3lNYpK12Y+GBdPQ0U1hRwSord7GIaawz962qQ==", - "dev": true - }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dev": true, - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/os-tmpdir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/p-limit": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", - "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", - "dev": true, - "dependencies": { - "p-try": "^1.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/p-locate": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==", - "dev": true, - "dependencies": { - "p-limit": "^1.1.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/p-map": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", - "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", - "dev": true, - "dependencies": { - "aggregate-error": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-try": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", - "integrity": "sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true - }, - "node_modules/pbkdf2": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz", - "integrity": "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==", - "dev": true, - "dependencies": { - "create-hash": "^1.1.2", - "create-hmac": "^1.1.4", - "ripemd160": "^2.0.1", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" - }, - "engines": { - "node": ">=0.12" - } - }, - "node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true, - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/randombytes": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", - "dev": true, - "dependencies": { - "safe-buffer": "^5.1.0" - } - }, - "node_modules/raw-body": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", - "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", - "dev": true, - "dependencies": { - "bytes": "3.1.2", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "dev": true, - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "dev": true, - "dependencies": { - "picomatch": "^2.2.1" - }, - "engines": { - "node": ">=8.10.0" - } - }, - "node_modules/require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/require-from-string": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", - "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/resolve": { - "version": "1.17.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz", - "integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==", - "dev": true, - "dependencies": { - "path-parse": "^1.0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "dev": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - } - }, - "node_modules/ripemd160": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", - "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", - "dev": true, - "dependencies": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1" - } - }, - "node_modules/rlp": { - "version": "2.2.7", - "resolved": "https://registry.npmjs.org/rlp/-/rlp-2.2.7.tgz", - "integrity": "sha512-d5gdPmgQ0Z+AklL2NVXr/IoSjNZFfTVvQWzL/AM2AOcSzYP2xjlb0AC8YyCLc41MSNf6P6QVtjgPdmVtzb+4lQ==", - "dev": true, - "dependencies": { - "bn.js": "^5.2.0" - }, - "bin": { - "rlp": "bin/rlp" - } - }, - "node_modules/run-parallel-limit": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/run-parallel-limit/-/run-parallel-limit-1.1.0.tgz", - "integrity": "sha512-jJA7irRNM91jaKc3Hcl1npHsFLOXOoTkPCUL1JEa1R82O2miplXXRaGdjW/KM/98YQWDhJLiSs793CnXfblJUw==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "queue-microtask": "^1.2.2" - } - }, - "node_modules/rustbn.js": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/rustbn.js/-/rustbn.js-0.2.0.tgz", - "integrity": "sha512-4VlvkRUuCJvr2J6Y0ImW7NvTCriMi7ErOAqWk1y69vAdoNIzCF3yPmgeNzx+RQTLEDFq5sHfscn1MwHxP9hNfA==", - "dev": true - }, - "node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true - }, - "node_modules/safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "dev": true - }, - "node_modules/scrypt-js": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/scrypt-js/-/scrypt-js-3.0.1.tgz", - "integrity": "sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA==", - "dev": true - }, - "node_modules/secp256k1": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/secp256k1/-/secp256k1-4.0.3.tgz", - "integrity": "sha512-NLZVf+ROMxwtEj3Xa562qgv2BK5e2WNmXPiOdVIPLgs6lyTzMvBq0aWTYMI5XCP9jZMVKOcqZLw/Wc4vDkuxhA==", - "dev": true, - "hasInstallScript": true, - "dependencies": { - "elliptic": "^6.5.4", - "node-addon-api": "^2.0.0", - "node-gyp-build": "^4.2.0" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/serialize-javascript": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", - "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", - "dev": true, - "dependencies": { - "randombytes": "^2.1.0" - } - }, - "node_modules/setimmediate": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", - "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==", - "dev": true - }, - "node_modules/setprototypeof": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", - "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", - "dev": true - }, - "node_modules/sha.js": { - "version": "2.4.11", - "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", - "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", - "dev": true, - "dependencies": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - }, - "bin": { - "sha.js": "bin.js" - } - }, - "node_modules/solc": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/solc/-/solc-0.7.3.tgz", - "integrity": "sha512-GAsWNAjGzIDg7VxzP6mPjdurby3IkGCjQcM8GFYZT6RyaoUZKmMU6Y7YwG+tFGhv7dwZ8rmR4iwFDrrD99JwqA==", - "dev": true, - "dependencies": { - "command-exists": "^1.2.8", - "commander": "3.0.2", - "follow-redirects": "^1.12.1", - "fs-extra": "^0.30.0", - "js-sha3": "0.8.0", - "memorystream": "^0.3.1", - "require-from-string": "^2.0.0", - "semver": "^5.5.0", - "tmp": "0.0.33" - }, - "bin": { - "solcjs": "solcjs" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/solc/node_modules/fs-extra": { - "version": "0.30.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-0.30.0.tgz", - "integrity": "sha512-UvSPKyhMn6LEd/WpUaV9C9t3zATuqoqfWc3QdPhPLb58prN9tqYPlPWi8Krxi44loBoUzlobqZ3+8tGpxxSzwA==", - "dev": true, - "dependencies": { - "graceful-fs": "^4.1.2", - "jsonfile": "^2.1.0", - "klaw": "^1.0.0", - "path-is-absolute": "^1.0.0", - "rimraf": "^2.2.8" - } - }, - "node_modules/solc/node_modules/jsonfile": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz", - "integrity": "sha512-PKllAqbgLgxHaj8TElYymKCAgrASebJrWpTnEkOaTowt23VKXXN0sUeriJ+eh7y6ufb/CC5ap11pz71/cM0hUw==", - "dev": true, - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, - "node_modules/solc/node_modules/semver": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", - "dev": true, - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/source-map-support": { - "version": "0.5.21", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", - "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", - "dev": true, - "dependencies": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "node_modules/stacktrace-parser": { - "version": "0.1.10", - "resolved": "https://registry.npmjs.org/stacktrace-parser/-/stacktrace-parser-0.1.10.tgz", - "integrity": "sha512-KJP1OCML99+8fhOHxwwzyWrlUuVX5GQ0ZpJTd1DFXhdkrvg1szxfHhawXUZ3g9TkXORQd4/WG68jMlQZ2p8wlg==", - "dev": true, - "dependencies": { - "type-fest": "^0.7.1" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/stacktrace-parser/node_modules/type-fest": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.7.1.tgz", - "integrity": "sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/statuses": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", - "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/streamsearch": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz", - "integrity": "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==", - "dev": true, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "dev": true, - "dependencies": { - "safe-buffer": "~5.2.0" - } - }, - "node_modules/string_decoder/node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-hex-prefix": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/strip-hex-prefix/-/strip-hex-prefix-1.0.0.tgz", - "integrity": "sha512-q8d4ue7JGEiVcypji1bALTos+0pWtyGlivAWyPuTkHzuTCJqrK9sWxYQZUq6Nq3cuyv3bm734IhHvHtGGURU6A==", - "dev": true, - "dependencies": { - "is-hex-prefixed": "1.0.0" - }, - "engines": { - "node": ">=6.5.0", - "npm": ">=3" - } - }, - "node_modules/strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/tmp": { - "version": "0.0.33", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", - "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", - "dev": true, - "dependencies": { - "os-tmpdir": "~1.0.2" - }, - "engines": { - "node": ">=0.6.0" - } - }, - "node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, - "node_modules/toidentifier": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", - "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", - "dev": true, - "engines": { - "node": ">=0.6" - } - }, - "node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - }, - "node_modules/tsort": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/tsort/-/tsort-0.0.1.tgz", - "integrity": "sha512-Tyrf5mxF8Ofs1tNoxA13lFeZ2Zrbd6cKbuH3V+MQ5sb6DtBj5FjrXVsRWT8YvNAQTqNoz66dz1WsbigI22aEnw==", - "dev": true - }, - "node_modules/tweetnacl": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-1.0.3.tgz", - "integrity": "sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==", - "dev": true - }, - "node_modules/tweetnacl-util": { - "version": "0.15.1", - "resolved": "https://registry.npmjs.org/tweetnacl-util/-/tweetnacl-util-0.15.1.tgz", - "integrity": "sha512-RKJBIj8lySrShN4w6i/BonWp2Z/uxwC3h4y7xsRrpP59ZboCd0GpEVsOnMDYLMmKBpYhb5TgHzZXy7wTfYFBRw==", - "dev": true - }, - "node_modules/type-fest": { - "version": "0.21.3", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", - "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/undici": { - "version": "5.23.0", - "resolved": "https://registry.npmjs.org/undici/-/undici-5.23.0.tgz", - "integrity": "sha512-1D7w+fvRsqlQ9GscLBwcAJinqcZGHUKjbOmXdlE/v8BvEGXjeWAax+341q44EuTcHXXnfyKNbKRq4Lg7OzhMmg==", - "dev": true, - "dependencies": { - "busboy": "^1.6.0" - }, - "engines": { - "node": ">=14.0" - } - }, - "node_modules/universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", - "dev": true, - "engines": { - "node": ">= 4.0.0" - } - }, - "node_modules/unpipe": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", - "dev": true - }, - "node_modules/uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "dev": true, - "bin": { - "uuid": "dist/bin/uuid" - } - }, - "node_modules/workerpool": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.2.1.tgz", - "integrity": "sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw==", - "dev": true - }, - "node_modules/wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/wrap-ansi/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/wrap-ansi/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/wrap-ansi/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "dev": true - }, - "node_modules/ws": { - "version": "7.5.9", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", - "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", - "dev": true, - "engines": { - "node": ">=8.3.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - }, - "node_modules/y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "dev": true - }, - "node_modules/yargs": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", - "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", - "dev": true, - "dependencies": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.0", - "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/yargs-parser": { - "version": "20.2.4", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", - "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/yargs-unparser": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz", - "integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==", - "dev": true, - "dependencies": { - "camelcase": "^6.0.0", - "decamelize": "^4.0.0", - "flat": "^5.0.2", - "is-plain-obj": "^2.1.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/yocto-queue": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - } - } -} diff --git a/package.json b/package.json index ae34ce59..798f8707 100644 --- a/package.json +++ b/package.json @@ -1,5 +1,5 @@ { "devDependencies": { - "hardhat": "^2.17.1" + "hardhat": "^2.17.3" } } diff --git a/src/blockchain/contracts/staking_router.py b/src/blockchain/contracts/staking_router.py index 3dfbff02..020ceb40 100644 --- a/src/blockchain/contracts/staking_router.py +++ b/src/blockchain/contracts/staking_router.py @@ -34,19 +34,6 @@ def is_staking_module_active( }) return response - def is_staking_module_deposits_paused( - self, - staking_module_id: int, - block_identifier: BlockIdentifier = 'latest', - ) -> bool: - response = self.functions.getStakingModuleIsDepositsPaused(staking_module_id).call(block_identifier=block_identifier) - logger.info({ - 'msg': f'Call `getStakingModuleIsDepositsPaused({staking_module_id})`.', - 'value': response, - 'block_identifier': block_identifier.__repr__(), - }) - return response - def get_staking_module_nonce( self, staking_module_id: int, diff --git a/src/bots/depositor.py b/src/bots/depositor.py index cd0a945d..384e7bf2 100644 --- a/src/bots/depositor.py +++ b/src/bots/depositor.py @@ -125,9 +125,7 @@ def _get_module_strategy(self, module_id: int) -> ModuleDepositStrategyInterface def _check_module_status(self, module_id: int) -> bool: """Returns True if module is ready for deposit""" - is_active = self.w3.lido.staking_router.is_staking_module_active(module_id) - is_deposits_paused = self.w3.lido.staking_router.is_staking_module_deposits_paused(module_id) - return is_active and not is_deposits_paused + return self.w3.lido.staking_router.is_staking_module_active(module_id) def _get_quorum(self, module_id: int) -> Optional[list[DepositMessage]]: """Returns quorum messages or None is quorum is not ready""" diff --git a/tests/blockchain/contracts/test_staking_router.py b/tests/blockchain/contracts/test_staking_router.py index c3a12f32..62e1b318 100644 --- a/tests/blockchain/contracts/test_staking_router.py +++ b/tests/blockchain/contracts/test_staking_router.py @@ -12,7 +12,6 @@ def test_staking_router_call(staking_router, caplog): ('get_staking_module_ids', None, lambda response: check_value_type(response, list) and [check_value_type(x, int) for x in response]), ('is_staking_module_active', (1,), lambda response: check_value_type(response, bool)), - ('is_staking_module_deposits_paused', (1,), lambda response: check_value_type(response, bool)), ('get_staking_module_nonce', (1,), lambda response: check_value_type(response, int)), ('get_staking_module_deposits_count', (1, 100*10**18), lambda response: check_value_type(response, int)), ], diff --git a/tests/bots/test_depositor.py b/tests/bots/test_depositor.py index 40b62e22..0ac71e47 100644 --- a/tests/bots/test_depositor.py +++ b/tests/bots/test_depositor.py @@ -81,19 +81,12 @@ def test_check_balance(depositor_bot, caplog, set_account): @pytest.mark.unit -@pytest.mark.parametrize( - "active,paused,expected", - [ - (True, True, False), - (True, False, True), - (False, True, False), - (False, False, False), - ], -) -def test_depositor_check_module_status(depositor_bot, active, paused, expected): - depositor_bot.w3.lido.staking_router.is_staking_module_active = Mock(return_value=active) - depositor_bot.w3.lido.staking_router.is_staking_module_deposits_paused = Mock(return_value=paused) - assert depositor_bot._check_module_status(1) == expected +def test_depositor_check_module_status(depositor_bot): + depositor_bot.w3.lido.staking_router.is_staking_module_active = Mock(return_value=True) + assert depositor_bot._check_module_status(1) + + depositor_bot.w3.lido.staking_router.is_staking_module_active = Mock(return_value=False) + assert not depositor_bot._check_module_status(1) @pytest.mark.unit diff --git a/tests/bots/test_pauser.py b/tests/bots/test_pauser.py index b831e68b..c6b4e55a 100644 --- a/tests/bots/test_pauser.py +++ b/tests/bots/test_pauser.py @@ -146,14 +146,14 @@ def test_pauser_bot(web3_lido_integration, add_account_to_guardian): pb.execute(latest) # Check no pause - assert not web3_lido_integration.lido.staking_router.is_staking_module_deposits_paused(1) + assert web3_lido_integration.lido.staking_router.is_staking_module_active(1) # Add pause message pb.message_storage.messages = [pm] pb.execute(latest) # Check there is pause message and module paused - assert web3_lido_integration.lido.staking_router.is_staking_module_deposits_paused(1) + assert not web3_lido_integration.lido.staking_router.is_staking_module_active(1) assert len(pb.message_storage.messages) == 1 pb.execute(latest) @@ -164,4 +164,4 @@ def test_pauser_bot(web3_lido_integration, add_account_to_guardian): web3_lido_integration.lido.deposit_security_module.functions.unpauseDeposits(pm['stakingModuleId']).transact( {'from': DSM_OWNER} ) - assert not web3_lido_integration.lido.staking_router.is_staking_module_deposits_paused(1) + assert web3_lido_integration.lido.staking_router.is_staking_module_active(1) diff --git a/yarn.lock b/yarn.lock new file mode 100644 index 00000000..84099851 --- /dev/null +++ b/yarn.lock @@ -0,0 +1,2358 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@chainsafe/as-sha256@^0.3.1": + version "0.3.1" + resolved "https://registry.yarnpkg.com/@chainsafe/as-sha256/-/as-sha256-0.3.1.tgz#3639df0e1435cab03f4d9870cc3ac079e57a6fc9" + integrity sha512-hldFFYuf49ed7DAakWVXSJODuq3pzJEguD8tQ7h+sGkM18vja+OFoJI9krnGmgzyuZC2ETX0NOIcCTy31v2Mtg== + +"@chainsafe/persistent-merkle-tree@^0.4.2": + version "0.4.2" + resolved "https://registry.yarnpkg.com/@chainsafe/persistent-merkle-tree/-/persistent-merkle-tree-0.4.2.tgz#4c9ee80cc57cd3be7208d98c40014ad38f36f7ff" + integrity sha512-lLO3ihKPngXLTus/L7WHKaw9PnNJWizlOF1H9NNzHP6Xvh82vzg9F2bzkXhYIFshMZ2gTCEz8tq6STe7r5NDfQ== + dependencies: + "@chainsafe/as-sha256" "^0.3.1" + +"@chainsafe/persistent-merkle-tree@^0.5.0": + version "0.5.0" + resolved "https://registry.yarnpkg.com/@chainsafe/persistent-merkle-tree/-/persistent-merkle-tree-0.5.0.tgz#2b4a62c9489a5739dedd197250d8d2f5427e9f63" + integrity sha512-l0V1b5clxA3iwQLXP40zYjyZYospQLZXzBVIhhr9kDg/1qHZfzzHw0jj4VPBijfYCArZDlPkRi1wZaV2POKeuw== + dependencies: + "@chainsafe/as-sha256" "^0.3.1" + +"@chainsafe/ssz@^0.10.0": + version "0.10.2" + resolved "https://registry.yarnpkg.com/@chainsafe/ssz/-/ssz-0.10.2.tgz#c782929e1bb25fec66ba72e75934b31fd087579e" + integrity sha512-/NL3Lh8K+0q7A3LsiFq09YXS9fPE+ead2rr7vM2QK8PLzrNsw3uqrif9bpRX5UxgeRjM+vYi+boCM3+GM4ovXg== + dependencies: + "@chainsafe/as-sha256" "^0.3.1" + "@chainsafe/persistent-merkle-tree" "^0.5.0" + +"@chainsafe/ssz@^0.9.2": + version "0.9.4" + resolved "https://registry.yarnpkg.com/@chainsafe/ssz/-/ssz-0.9.4.tgz#696a8db46d6975b600f8309ad3a12f7c0e310497" + integrity sha512-77Qtg2N1ayqs4Bg/wvnWfg5Bta7iy7IRh8XqXh7oNMeP2HBbBwx8m6yTpA8p0EHItWPEBkgZd5S5/LSlp3GXuQ== + dependencies: + "@chainsafe/as-sha256" "^0.3.1" + "@chainsafe/persistent-merkle-tree" "^0.4.2" + case "^1.6.3" + +"@ethersproject/abi@5.7.0", "@ethersproject/abi@^5.1.2", "@ethersproject/abi@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/abi/-/abi-5.7.0.tgz#b3f3e045bbbeed1af3947335c247ad625a44e449" + integrity sha512-351ktp42TiRcYB3H1OP8yajPeAQstMW/yCFokj/AthP9bLHzQFPlOrxOcwYEDkUAICmOHljvN4K39OMTMUa9RA== + dependencies: + "@ethersproject/address" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/constants" "^5.7.0" + "@ethersproject/hash" "^5.7.0" + "@ethersproject/keccak256" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/strings" "^5.7.0" + +"@ethersproject/abstract-provider@5.7.0", "@ethersproject/abstract-provider@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/abstract-provider/-/abstract-provider-5.7.0.tgz#b0a8550f88b6bf9d51f90e4795d48294630cb9ef" + integrity sha512-R41c9UkchKCpAqStMYUpdunjo3pkEvZC3FAwZn5S5MGbXoMQOHIdHItezTETxAO5bevtMApSyEhn9+CHcDsWBw== + dependencies: + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/networks" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/transactions" "^5.7.0" + "@ethersproject/web" "^5.7.0" + +"@ethersproject/abstract-signer@5.7.0", "@ethersproject/abstract-signer@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/abstract-signer/-/abstract-signer-5.7.0.tgz#13f4f32117868452191a4649723cb086d2b596b2" + integrity sha512-a16V8bq1/Cz+TGCkE2OPMTOUDLS3grCpdjoJCYNnVBbdYEMSgKrU0+B90s8b6H+ByYTBZN7a3g76jdIJi7UfKQ== + dependencies: + "@ethersproject/abstract-provider" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + +"@ethersproject/address@5.7.0", "@ethersproject/address@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/address/-/address-5.7.0.tgz#19b56c4d74a3b0a46bfdbb6cfcc0a153fc697f37" + integrity sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA== + dependencies: + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/keccak256" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/rlp" "^5.7.0" + +"@ethersproject/base64@5.7.0", "@ethersproject/base64@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/base64/-/base64-5.7.0.tgz#ac4ee92aa36c1628173e221d0d01f53692059e1c" + integrity sha512-Dr8tcHt2mEbsZr/mwTPIQAf3Ai0Bks/7gTw9dSqk1mQvhW3XvRlmDJr/4n+wg1JmCl16NZue17CDh8xb/vZ0sQ== + dependencies: + "@ethersproject/bytes" "^5.7.0" + +"@ethersproject/basex@5.7.0", "@ethersproject/basex@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/basex/-/basex-5.7.0.tgz#97034dc7e8938a8ca943ab20f8a5e492ece4020b" + integrity sha512-ywlh43GwZLv2Voc2gQVTKBoVQ1mti3d8HK5aMxsfu/nRDnMmNqaSJ3r3n85HBByT8OpoY96SXM1FogC533T4zw== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + +"@ethersproject/bignumber@5.7.0", "@ethersproject/bignumber@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/bignumber/-/bignumber-5.7.0.tgz#e2f03837f268ba655ffba03a57853e18a18dc9c2" + integrity sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + bn.js "^5.2.1" + +"@ethersproject/bytes@5.7.0", "@ethersproject/bytes@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/bytes/-/bytes-5.7.0.tgz#a00f6ea8d7e7534d6d87f47188af1148d71f155d" + integrity sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A== + dependencies: + "@ethersproject/logger" "^5.7.0" + +"@ethersproject/constants@5.7.0", "@ethersproject/constants@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/constants/-/constants-5.7.0.tgz#df80a9705a7e08984161f09014ea012d1c75295e" + integrity sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA== + dependencies: + "@ethersproject/bignumber" "^5.7.0" + +"@ethersproject/contracts@5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/contracts/-/contracts-5.7.0.tgz#c305e775abd07e48aa590e1a877ed5c316f8bd1e" + integrity sha512-5GJbzEU3X+d33CdfPhcyS+z8MzsTrBGk/sc+G+59+tPa9yFkl6HQ9D6L0QMgNTA9q8dT0XKxxkyp883XsQvbbg== + dependencies: + "@ethersproject/abi" "^5.7.0" + "@ethersproject/abstract-provider" "^5.7.0" + "@ethersproject/abstract-signer" "^5.7.0" + "@ethersproject/address" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/constants" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/transactions" "^5.7.0" + +"@ethersproject/hash@5.7.0", "@ethersproject/hash@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/hash/-/hash-5.7.0.tgz#eb7aca84a588508369562e16e514b539ba5240a7" + integrity sha512-qX5WrQfnah1EFnO5zJv1v46a8HW0+E5xuBBDTwMFZLuVTx0tbU2kkx15NqdjxecrLGatQN9FGQKpb1FKdHCt+g== + dependencies: + "@ethersproject/abstract-signer" "^5.7.0" + "@ethersproject/address" "^5.7.0" + "@ethersproject/base64" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/keccak256" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/strings" "^5.7.0" + +"@ethersproject/hdnode@5.7.0", "@ethersproject/hdnode@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/hdnode/-/hdnode-5.7.0.tgz#e627ddc6b466bc77aebf1a6b9e47405ca5aef9cf" + integrity sha512-OmyYo9EENBPPf4ERhR7oj6uAtUAhYGqOnIS+jE5pTXvdKBS99ikzq1E7Iv0ZQZ5V36Lqx1qZLeak0Ra16qpeOg== + dependencies: + "@ethersproject/abstract-signer" "^5.7.0" + "@ethersproject/basex" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/pbkdf2" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/sha2" "^5.7.0" + "@ethersproject/signing-key" "^5.7.0" + "@ethersproject/strings" "^5.7.0" + "@ethersproject/transactions" "^5.7.0" + "@ethersproject/wordlists" "^5.7.0" + +"@ethersproject/json-wallets@5.7.0", "@ethersproject/json-wallets@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/json-wallets/-/json-wallets-5.7.0.tgz#5e3355287b548c32b368d91014919ebebddd5360" + integrity sha512-8oee5Xgu6+RKgJTkvEMl2wDgSPSAQ9MB/3JYjFV9jlKvcYHUXZC+cQp0njgmxdHkYWn8s6/IqIZYm0YWCjO/0g== + dependencies: + "@ethersproject/abstract-signer" "^5.7.0" + "@ethersproject/address" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/hdnode" "^5.7.0" + "@ethersproject/keccak256" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/pbkdf2" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/random" "^5.7.0" + "@ethersproject/strings" "^5.7.0" + "@ethersproject/transactions" "^5.7.0" + aes-js "3.0.0" + scrypt-js "3.0.1" + +"@ethersproject/keccak256@5.7.0", "@ethersproject/keccak256@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/keccak256/-/keccak256-5.7.0.tgz#3186350c6e1cd6aba7940384ec7d6d9db01f335a" + integrity sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg== + dependencies: + "@ethersproject/bytes" "^5.7.0" + js-sha3 "0.8.0" + +"@ethersproject/logger@5.7.0", "@ethersproject/logger@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/logger/-/logger-5.7.0.tgz#6ce9ae168e74fecf287be17062b590852c311892" + integrity sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig== + +"@ethersproject/networks@5.7.1", "@ethersproject/networks@^5.7.0": + version "5.7.1" + resolved "https://registry.yarnpkg.com/@ethersproject/networks/-/networks-5.7.1.tgz#118e1a981d757d45ccea6bb58d9fd3d9db14ead6" + integrity sha512-n/MufjFYv3yFcUyfhnXotyDlNdFb7onmkSy8aQERi2PjNcnWQ66xXxa3XlS8nCcA8aJKJjIIMNJTC7tu80GwpQ== + dependencies: + "@ethersproject/logger" "^5.7.0" + +"@ethersproject/pbkdf2@5.7.0", "@ethersproject/pbkdf2@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/pbkdf2/-/pbkdf2-5.7.0.tgz#d2267d0a1f6e123f3771007338c47cccd83d3102" + integrity sha512-oR/dBRZR6GTyaofd86DehG72hY6NpAjhabkhxgr3X2FpJtJuodEl2auADWBZfhDHgVCbu3/H/Ocq2uC6dpNjjw== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/sha2" "^5.7.0" + +"@ethersproject/properties@5.7.0", "@ethersproject/properties@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/properties/-/properties-5.7.0.tgz#a6e12cb0439b878aaf470f1902a176033067ed30" + integrity sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw== + dependencies: + "@ethersproject/logger" "^5.7.0" + +"@ethersproject/providers@5.7.2", "@ethersproject/providers@^5.7.1", "@ethersproject/providers@^5.7.2": + version "5.7.2" + resolved "https://registry.yarnpkg.com/@ethersproject/providers/-/providers-5.7.2.tgz#f8b1a4f275d7ce58cf0a2eec222269a08beb18cb" + integrity sha512-g34EWZ1WWAVgr4aptGlVBF8mhl3VWjv+8hoAnzStu8Ah22VHBsuGzP17eb6xDVRzw895G4W7vvx60lFFur/1Rg== + dependencies: + "@ethersproject/abstract-provider" "^5.7.0" + "@ethersproject/abstract-signer" "^5.7.0" + "@ethersproject/address" "^5.7.0" + "@ethersproject/base64" "^5.7.0" + "@ethersproject/basex" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/constants" "^5.7.0" + "@ethersproject/hash" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/networks" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/random" "^5.7.0" + "@ethersproject/rlp" "^5.7.0" + "@ethersproject/sha2" "^5.7.0" + "@ethersproject/strings" "^5.7.0" + "@ethersproject/transactions" "^5.7.0" + "@ethersproject/web" "^5.7.0" + bech32 "1.1.4" + ws "7.4.6" + +"@ethersproject/random@5.7.0", "@ethersproject/random@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/random/-/random-5.7.0.tgz#af19dcbc2484aae078bb03656ec05df66253280c" + integrity sha512-19WjScqRA8IIeWclFme75VMXSBvi4e6InrUNuaR4s5pTF2qNhcGdCUwdxUVGtDDqC00sDLCO93jPQoDUH4HVmQ== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + +"@ethersproject/rlp@5.7.0", "@ethersproject/rlp@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/rlp/-/rlp-5.7.0.tgz#de39e4d5918b9d74d46de93af80b7685a9c21304" + integrity sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + +"@ethersproject/sha2@5.7.0", "@ethersproject/sha2@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/sha2/-/sha2-5.7.0.tgz#9a5f7a7824ef784f7f7680984e593a800480c9fb" + integrity sha512-gKlH42riwb3KYp0reLsFTokByAKoJdgFCwI+CCiX/k+Jm2mbNs6oOaCjYQSlI1+XBVejwH2KrmCbMAT/GnRDQw== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + hash.js "1.1.7" + +"@ethersproject/signing-key@5.7.0", "@ethersproject/signing-key@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/signing-key/-/signing-key-5.7.0.tgz#06b2df39411b00bc57c7c09b01d1e41cf1b16ab3" + integrity sha512-MZdy2nL3wO0u7gkB4nA/pEf8lu1TlFswPNmy8AiYkfKTdO6eXBJyUdmHO/ehm/htHw9K/qF8ujnTyUAD+Ry54Q== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + bn.js "^5.2.1" + elliptic "6.5.4" + hash.js "1.1.7" + +"@ethersproject/solidity@5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/solidity/-/solidity-5.7.0.tgz#5e9c911d8a2acce2a5ebb48a5e2e0af20b631cb8" + integrity sha512-HmabMd2Dt/raavyaGukF4XxizWKhKQ24DoLtdNbBmNKUOPqwjsKQSdV9GQtj9CBEea9DlzETlVER1gYeXXBGaA== + dependencies: + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/keccak256" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/sha2" "^5.7.0" + "@ethersproject/strings" "^5.7.0" + +"@ethersproject/strings@5.7.0", "@ethersproject/strings@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/strings/-/strings-5.7.0.tgz#54c9d2a7c57ae8f1205c88a9d3a56471e14d5ed2" + integrity sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/constants" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + +"@ethersproject/transactions@5.7.0", "@ethersproject/transactions@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/transactions/-/transactions-5.7.0.tgz#91318fc24063e057885a6af13fdb703e1f993d3b" + integrity sha512-kmcNicCp1lp8qanMTC3RIikGgoJ80ztTyvtsFvCYpSCfkjhD0jZ2LOrnbcuxuToLIUYYf+4XwD1rP+B/erDIhQ== + dependencies: + "@ethersproject/address" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/constants" "^5.7.0" + "@ethersproject/keccak256" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/rlp" "^5.7.0" + "@ethersproject/signing-key" "^5.7.0" + +"@ethersproject/units@5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/units/-/units-5.7.0.tgz#637b563d7e14f42deeee39245275d477aae1d8b1" + integrity sha512-pD3xLMy3SJu9kG5xDGI7+xhTEmGXlEqXU4OfNapmfnxLVY4EMSSRp7j1k7eezutBPH7RBN/7QPnwR7hzNlEFeg== + dependencies: + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/constants" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + +"@ethersproject/wallet@5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/wallet/-/wallet-5.7.0.tgz#4e5d0790d96fe21d61d38fb40324e6c7ef350b2d" + integrity sha512-MhmXlJXEJFBFVKrDLB4ZdDzxcBxQ3rLyCkhNqVu3CDYvR97E+8r01UgrI+TI99Le+aYm/in/0vp86guJuM7FCA== + dependencies: + "@ethersproject/abstract-provider" "^5.7.0" + "@ethersproject/abstract-signer" "^5.7.0" + "@ethersproject/address" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/hash" "^5.7.0" + "@ethersproject/hdnode" "^5.7.0" + "@ethersproject/json-wallets" "^5.7.0" + "@ethersproject/keccak256" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/random" "^5.7.0" + "@ethersproject/signing-key" "^5.7.0" + "@ethersproject/transactions" "^5.7.0" + "@ethersproject/wordlists" "^5.7.0" + +"@ethersproject/web@5.7.1", "@ethersproject/web@^5.7.0": + version "5.7.1" + resolved "https://registry.yarnpkg.com/@ethersproject/web/-/web-5.7.1.tgz#de1f285b373149bee5928f4eb7bcb87ee5fbb4ae" + integrity sha512-Gueu8lSvyjBWL4cYsWsjh6MtMwM0+H4HvqFPZfB6dV8ctbP9zFAO73VG1cMWae0FLPCtz0peKPpZY8/ugJJX2w== + dependencies: + "@ethersproject/base64" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/strings" "^5.7.0" + +"@ethersproject/wordlists@5.7.0", "@ethersproject/wordlists@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/wordlists/-/wordlists-5.7.0.tgz#8fb2c07185d68c3e09eb3bfd6e779ba2774627f5" + integrity sha512-S2TFNJNfHWVHNE6cNDjbVlZ6MgE17MIxMbMg2zv3wn+3XSJGosL1m9ZVv3GXCf/2ymSsQ+hRI5IzoMJTG6aoVA== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/hash" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/strings" "^5.7.0" + +"@metamask/eth-sig-util@^4.0.0": + version "4.0.1" + resolved "https://registry.yarnpkg.com/@metamask/eth-sig-util/-/eth-sig-util-4.0.1.tgz#3ad61f6ea9ad73ba5b19db780d40d9aae5157088" + integrity sha512-tghyZKLHZjcdlDqCA3gNZmLeR0XvOE9U1qoQO9ohyAZT6Pya+H9vkBPcsyXytmYLNgVoin7CKCmweo/R43V+tQ== + dependencies: + ethereumjs-abi "^0.6.8" + ethereumjs-util "^6.2.1" + ethjs-util "^0.1.6" + tweetnacl "^1.0.3" + tweetnacl-util "^0.15.1" + +"@noble/hashes@1.2.0", "@noble/hashes@~1.2.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.2.0.tgz#a3150eeb09cc7ab207ebf6d7b9ad311a9bdbed12" + integrity sha512-FZfhjEDbT5GRswV3C6uvLPHMiVD6lQBmpoX5+eSiPaMTXte/IKqI5dykDxzZB/WBeK/CDuQRBWarPdi3FNY2zQ== + +"@noble/secp256k1@1.7.1", "@noble/secp256k1@~1.7.0": + version "1.7.1" + resolved "https://registry.yarnpkg.com/@noble/secp256k1/-/secp256k1-1.7.1.tgz#b251c70f824ce3ca7f8dc3df08d58f005cc0507c" + integrity sha512-hOUk6AyBFmqVrv7k5WAw/LpszxVbj9gGN4JRkIX52fdFAj1UA61KXmZDvqVEm+pOyec3+fIeZB02LYa/pWOArw== + +"@nomicfoundation/ethereumjs-block@5.0.2": + version "5.0.2" + resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-block/-/ethereumjs-block-5.0.2.tgz#13a7968f5964f1697da941281b7f7943b0465d04" + integrity sha512-hSe6CuHI4SsSiWWjHDIzWhSiAVpzMUcDRpWYzN0T9l8/Rz7xNn3elwVOJ/tAyS0LqL6vitUD78Uk7lQDXZun7Q== + dependencies: + "@nomicfoundation/ethereumjs-common" "4.0.2" + "@nomicfoundation/ethereumjs-rlp" "5.0.2" + "@nomicfoundation/ethereumjs-trie" "6.0.2" + "@nomicfoundation/ethereumjs-tx" "5.0.2" + "@nomicfoundation/ethereumjs-util" "9.0.2" + ethereum-cryptography "0.1.3" + ethers "^5.7.1" + +"@nomicfoundation/ethereumjs-blockchain@7.0.2": + version "7.0.2" + resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-blockchain/-/ethereumjs-blockchain-7.0.2.tgz#45323b673b3d2fab6b5008535340d1b8fea7d446" + integrity sha512-8UUsSXJs+MFfIIAKdh3cG16iNmWzWC/91P40sazNvrqhhdR/RtGDlFk2iFTGbBAZPs2+klZVzhRX8m2wvuvz3w== + dependencies: + "@nomicfoundation/ethereumjs-block" "5.0.2" + "@nomicfoundation/ethereumjs-common" "4.0.2" + "@nomicfoundation/ethereumjs-ethash" "3.0.2" + "@nomicfoundation/ethereumjs-rlp" "5.0.2" + "@nomicfoundation/ethereumjs-trie" "6.0.2" + "@nomicfoundation/ethereumjs-tx" "5.0.2" + "@nomicfoundation/ethereumjs-util" "9.0.2" + abstract-level "^1.0.3" + debug "^4.3.3" + ethereum-cryptography "0.1.3" + level "^8.0.0" + lru-cache "^5.1.1" + memory-level "^1.0.0" + +"@nomicfoundation/ethereumjs-common@4.0.2": + version "4.0.2" + resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-common/-/ethereumjs-common-4.0.2.tgz#a15d1651ca36757588fdaf2a7d381a150662a3c3" + integrity sha512-I2WGP3HMGsOoycSdOTSqIaES0ughQTueOsddJ36aYVpI3SN8YSusgRFLwzDJwRFVIYDKx/iJz0sQ5kBHVgdDwg== + dependencies: + "@nomicfoundation/ethereumjs-util" "9.0.2" + crc-32 "^1.2.0" + +"@nomicfoundation/ethereumjs-ethash@3.0.2": + version "3.0.2" + resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-ethash/-/ethereumjs-ethash-3.0.2.tgz#da77147f806401ee996bfddfa6487500118addca" + integrity sha512-8PfoOQCcIcO9Pylq0Buijuq/O73tmMVURK0OqdjhwqcGHYC2PwhbajDh7GZ55ekB0Px197ajK3PQhpKoiI/UPg== + dependencies: + "@nomicfoundation/ethereumjs-block" "5.0.2" + "@nomicfoundation/ethereumjs-rlp" "5.0.2" + "@nomicfoundation/ethereumjs-util" "9.0.2" + abstract-level "^1.0.3" + bigint-crypto-utils "^3.0.23" + ethereum-cryptography "0.1.3" + +"@nomicfoundation/ethereumjs-evm@2.0.2": + version "2.0.2" + resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-evm/-/ethereumjs-evm-2.0.2.tgz#4c2f4b84c056047102a4fa41c127454e3f0cfcf6" + integrity sha512-rBLcUaUfANJxyOx9HIdMX6uXGin6lANCulIm/pjMgRqfiCRMZie3WKYxTSd8ZE/d+qT+zTedBF4+VHTdTSePmQ== + dependencies: + "@ethersproject/providers" "^5.7.1" + "@nomicfoundation/ethereumjs-common" "4.0.2" + "@nomicfoundation/ethereumjs-tx" "5.0.2" + "@nomicfoundation/ethereumjs-util" "9.0.2" + debug "^4.3.3" + ethereum-cryptography "0.1.3" + mcl-wasm "^0.7.1" + rustbn.js "~0.2.0" + +"@nomicfoundation/ethereumjs-rlp@5.0.2": + version "5.0.2" + resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-rlp/-/ethereumjs-rlp-5.0.2.tgz#4fee8dc58a53ac6ae87fb1fca7c15dc06c6b5dea" + integrity sha512-QwmemBc+MMsHJ1P1QvPl8R8p2aPvvVcKBbvHnQOKBpBztEo0omN0eaob6FeZS/e3y9NSe+mfu3nNFBHszqkjTA== + +"@nomicfoundation/ethereumjs-statemanager@2.0.2": + version "2.0.2" + resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-statemanager/-/ethereumjs-statemanager-2.0.2.tgz#3ba4253b29b1211cafe4f9265fee5a0d780976e0" + integrity sha512-dlKy5dIXLuDubx8Z74sipciZnJTRSV/uHG48RSijhgm1V7eXYFC567xgKtsKiVZB1ViTP9iFL4B6Je0xD6X2OA== + dependencies: + "@nomicfoundation/ethereumjs-common" "4.0.2" + "@nomicfoundation/ethereumjs-rlp" "5.0.2" + debug "^4.3.3" + ethereum-cryptography "0.1.3" + ethers "^5.7.1" + js-sdsl "^4.1.4" + +"@nomicfoundation/ethereumjs-trie@6.0.2": + version "6.0.2" + resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-trie/-/ethereumjs-trie-6.0.2.tgz#9a6dbd28482dca1bc162d12b3733acab8cd12835" + integrity sha512-yw8vg9hBeLYk4YNg5MrSJ5H55TLOv2FSWUTROtDtTMMmDGROsAu+0tBjiNGTnKRi400M6cEzoFfa89Fc5k8NTQ== + dependencies: + "@nomicfoundation/ethereumjs-rlp" "5.0.2" + "@nomicfoundation/ethereumjs-util" "9.0.2" + "@types/readable-stream" "^2.3.13" + ethereum-cryptography "0.1.3" + readable-stream "^3.6.0" + +"@nomicfoundation/ethereumjs-tx@5.0.2": + version "5.0.2" + resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-tx/-/ethereumjs-tx-5.0.2.tgz#117813b69c0fdc14dd0446698a64be6df71d7e56" + integrity sha512-T+l4/MmTp7VhJeNloMkM+lPU3YMUaXdcXgTGCf8+ZFvV9NYZTRLFekRwlG6/JMmVfIfbrW+dRRJ9A6H5Q/Z64g== + dependencies: + "@chainsafe/ssz" "^0.9.2" + "@ethersproject/providers" "^5.7.2" + "@nomicfoundation/ethereumjs-common" "4.0.2" + "@nomicfoundation/ethereumjs-rlp" "5.0.2" + "@nomicfoundation/ethereumjs-util" "9.0.2" + ethereum-cryptography "0.1.3" + +"@nomicfoundation/ethereumjs-util@9.0.2": + version "9.0.2" + resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-util/-/ethereumjs-util-9.0.2.tgz#16bdc1bb36f333b8a3559bbb4b17dac805ce904d" + integrity sha512-4Wu9D3LykbSBWZo8nJCnzVIYGvGCuyiYLIJa9XXNVt1q1jUzHdB+sJvx95VGCpPkCT+IbLecW6yfzy3E1bQrwQ== + dependencies: + "@chainsafe/ssz" "^0.10.0" + "@nomicfoundation/ethereumjs-rlp" "5.0.2" + ethereum-cryptography "0.1.3" + +"@nomicfoundation/ethereumjs-vm@7.0.2": + version "7.0.2" + resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-vm/-/ethereumjs-vm-7.0.2.tgz#3b0852cb3584df0e18c182d0672a3596c9ca95e6" + integrity sha512-Bj3KZT64j54Tcwr7Qm/0jkeZXJMfdcAtRBedou+Hx0dPOSIgqaIr0vvLwP65TpHbak2DmAq+KJbW2KNtIoFwvA== + dependencies: + "@nomicfoundation/ethereumjs-block" "5.0.2" + "@nomicfoundation/ethereumjs-blockchain" "7.0.2" + "@nomicfoundation/ethereumjs-common" "4.0.2" + "@nomicfoundation/ethereumjs-evm" "2.0.2" + "@nomicfoundation/ethereumjs-rlp" "5.0.2" + "@nomicfoundation/ethereumjs-statemanager" "2.0.2" + "@nomicfoundation/ethereumjs-trie" "6.0.2" + "@nomicfoundation/ethereumjs-tx" "5.0.2" + "@nomicfoundation/ethereumjs-util" "9.0.2" + debug "^4.3.3" + ethereum-cryptography "0.1.3" + mcl-wasm "^0.7.1" + rustbn.js "~0.2.0" + +"@nomicfoundation/solidity-analyzer-darwin-arm64@0.1.1": + version "0.1.1" + resolved "https://registry.yarnpkg.com/@nomicfoundation/solidity-analyzer-darwin-arm64/-/solidity-analyzer-darwin-arm64-0.1.1.tgz#4c858096b1c17fe58a474fe81b46815f93645c15" + integrity sha512-KcTodaQw8ivDZyF+D76FokN/HdpgGpfjc/gFCImdLUyqB6eSWVaZPazMbeAjmfhx3R0zm/NYVzxwAokFKgrc0w== + +"@nomicfoundation/solidity-analyzer-darwin-x64@0.1.1": + version "0.1.1" + resolved "https://registry.yarnpkg.com/@nomicfoundation/solidity-analyzer-darwin-x64/-/solidity-analyzer-darwin-x64-0.1.1.tgz#6e25ccdf6e2d22389c35553b64fe6f3fdaec432c" + integrity sha512-XhQG4BaJE6cIbjAVtzGOGbK3sn1BO9W29uhk9J8y8fZF1DYz0Doj8QDMfpMu+A6TjPDs61lbsmeYodIDnfveSA== + +"@nomicfoundation/solidity-analyzer-freebsd-x64@0.1.1": + version "0.1.1" + resolved "https://registry.yarnpkg.com/@nomicfoundation/solidity-analyzer-freebsd-x64/-/solidity-analyzer-freebsd-x64-0.1.1.tgz#0a224ea50317139caeebcdedd435c28a039d169c" + integrity sha512-GHF1VKRdHW3G8CndkwdaeLkVBi5A9u2jwtlS7SLhBc8b5U/GcoL39Q+1CSO3hYqePNP+eV5YI7Zgm0ea6kMHoA== + +"@nomicfoundation/solidity-analyzer-linux-arm64-gnu@0.1.1": + version "0.1.1" + resolved "https://registry.yarnpkg.com/@nomicfoundation/solidity-analyzer-linux-arm64-gnu/-/solidity-analyzer-linux-arm64-gnu-0.1.1.tgz#dfa085d9ffab9efb2e7b383aed3f557f7687ac2b" + integrity sha512-g4Cv2fO37ZsUENQ2vwPnZc2zRenHyAxHcyBjKcjaSmmkKrFr64yvzeNO8S3GBFCo90rfochLs99wFVGT/0owpg== + +"@nomicfoundation/solidity-analyzer-linux-arm64-musl@0.1.1": + version "0.1.1" + resolved "https://registry.yarnpkg.com/@nomicfoundation/solidity-analyzer-linux-arm64-musl/-/solidity-analyzer-linux-arm64-musl-0.1.1.tgz#c9e06b5d513dd3ab02a7ac069c160051675889a4" + integrity sha512-WJ3CE5Oek25OGE3WwzK7oaopY8xMw9Lhb0mlYuJl/maZVo+WtP36XoQTb7bW/i8aAdHW5Z+BqrHMux23pvxG3w== + +"@nomicfoundation/solidity-analyzer-linux-x64-gnu@0.1.1": + version "0.1.1" + resolved "https://registry.yarnpkg.com/@nomicfoundation/solidity-analyzer-linux-x64-gnu/-/solidity-analyzer-linux-x64-gnu-0.1.1.tgz#8d328d16839e52571f72f2998c81e46bf320f893" + integrity sha512-5WN7leSr5fkUBBjE4f3wKENUy9HQStu7HmWqbtknfXkkil+eNWiBV275IOlpXku7v3uLsXTOKpnnGHJYI2qsdA== + +"@nomicfoundation/solidity-analyzer-linux-x64-musl@0.1.1": + version "0.1.1" + resolved "https://registry.yarnpkg.com/@nomicfoundation/solidity-analyzer-linux-x64-musl/-/solidity-analyzer-linux-x64-musl-0.1.1.tgz#9b49d0634b5976bb5ed1604a1e1b736f390959bb" + integrity sha512-KdYMkJOq0SYPQMmErv/63CwGwMm5XHenEna9X9aB8mQmhDBrYrlAOSsIPgFCUSL0hjxE3xHP65/EPXR/InD2+w== + +"@nomicfoundation/solidity-analyzer-win32-arm64-msvc@0.1.1": + version "0.1.1" + resolved "https://registry.yarnpkg.com/@nomicfoundation/solidity-analyzer-win32-arm64-msvc/-/solidity-analyzer-win32-arm64-msvc-0.1.1.tgz#e2867af7264ebbcc3131ef837878955dd6a3676f" + integrity sha512-VFZASBfl4qiBYwW5xeY20exWhmv6ww9sWu/krWSesv3q5hA0o1JuzmPHR4LPN6SUZj5vcqci0O6JOL8BPw+APg== + +"@nomicfoundation/solidity-analyzer-win32-ia32-msvc@0.1.1": + version "0.1.1" + resolved "https://registry.yarnpkg.com/@nomicfoundation/solidity-analyzer-win32-ia32-msvc/-/solidity-analyzer-win32-ia32-msvc-0.1.1.tgz#0685f78608dd516c8cdfb4896ed451317e559585" + integrity sha512-JnFkYuyCSA70j6Si6cS1A9Gh1aHTEb8kOTBApp/c7NRTFGNMH8eaInKlyuuiIbvYFhlXW4LicqyYuWNNq9hkpQ== + +"@nomicfoundation/solidity-analyzer-win32-x64-msvc@0.1.1": + version "0.1.1" + resolved "https://registry.yarnpkg.com/@nomicfoundation/solidity-analyzer-win32-x64-msvc/-/solidity-analyzer-win32-x64-msvc-0.1.1.tgz#c9a44f7108646f083b82e851486e0f6aeb785836" + integrity sha512-HrVJr6+WjIXGnw3Q9u6KQcbZCtk0caVWhCdFADySvRyUxJ8PnzlaP+MhwNE8oyT8OZ6ejHBRrrgjSqDCFXGirw== + +"@nomicfoundation/solidity-analyzer@^0.1.0": + version "0.1.1" + resolved "https://registry.yarnpkg.com/@nomicfoundation/solidity-analyzer/-/solidity-analyzer-0.1.1.tgz#f5f4d36d3f66752f59a57e7208cd856f3ddf6f2d" + integrity sha512-1LMtXj1puAxyFusBgUIy5pZk3073cNXYnXUpuNKFghHbIit/xZgbk0AokpUADbNm3gyD6bFWl3LRFh3dhVdREg== + optionalDependencies: + "@nomicfoundation/solidity-analyzer-darwin-arm64" "0.1.1" + "@nomicfoundation/solidity-analyzer-darwin-x64" "0.1.1" + "@nomicfoundation/solidity-analyzer-freebsd-x64" "0.1.1" + "@nomicfoundation/solidity-analyzer-linux-arm64-gnu" "0.1.1" + "@nomicfoundation/solidity-analyzer-linux-arm64-musl" "0.1.1" + "@nomicfoundation/solidity-analyzer-linux-x64-gnu" "0.1.1" + "@nomicfoundation/solidity-analyzer-linux-x64-musl" "0.1.1" + "@nomicfoundation/solidity-analyzer-win32-arm64-msvc" "0.1.1" + "@nomicfoundation/solidity-analyzer-win32-ia32-msvc" "0.1.1" + "@nomicfoundation/solidity-analyzer-win32-x64-msvc" "0.1.1" + +"@scure/base@~1.1.0": + version "1.1.3" + resolved "https://registry.yarnpkg.com/@scure/base/-/base-1.1.3.tgz#8584115565228290a6c6c4961973e0903bb3df2f" + integrity sha512-/+SgoRjLq7Xlf0CWuLHq2LUZeL/w65kfzAPG5NH9pcmBhs+nunQTn4gvdwgMTIXnt9b2C/1SeL2XiysZEyIC9Q== + +"@scure/bip32@1.1.5": + version "1.1.5" + resolved "https://registry.yarnpkg.com/@scure/bip32/-/bip32-1.1.5.tgz#d2ccae16dcc2e75bc1d75f5ef3c66a338d1ba300" + integrity sha512-XyNh1rB0SkEqd3tXcXMi+Xe1fvg+kUIcoRIEujP1Jgv7DqW2r9lg3Ah0NkFaCs9sTkQAQA8kw7xiRXzENi9Rtw== + dependencies: + "@noble/hashes" "~1.2.0" + "@noble/secp256k1" "~1.7.0" + "@scure/base" "~1.1.0" + +"@scure/bip39@1.1.1": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@scure/bip39/-/bip39-1.1.1.tgz#b54557b2e86214319405db819c4b6a370cf340c5" + integrity sha512-t+wDck2rVkh65Hmv280fYdVdY25J9YeEUIgn2LG1WM6gxFkGzcksoDiUkWVpVp3Oex9xGC68JU2dSbUfwZ2jPg== + dependencies: + "@noble/hashes" "~1.2.0" + "@scure/base" "~1.1.0" + +"@sentry/core@5.30.0": + version "5.30.0" + resolved "https://registry.yarnpkg.com/@sentry/core/-/core-5.30.0.tgz#6b203664f69e75106ee8b5a2fe1d717379b331f3" + integrity sha512-TmfrII8w1PQZSZgPpUESqjB+jC6MvZJZdLtE/0hZ+SrnKhW3x5WlYLvTXZpcWePYBku7rl2wn1RZu6uT0qCTeg== + dependencies: + "@sentry/hub" "5.30.0" + "@sentry/minimal" "5.30.0" + "@sentry/types" "5.30.0" + "@sentry/utils" "5.30.0" + tslib "^1.9.3" + +"@sentry/hub@5.30.0": + version "5.30.0" + resolved "https://registry.yarnpkg.com/@sentry/hub/-/hub-5.30.0.tgz#2453be9b9cb903404366e198bd30c7ca74cdc100" + integrity sha512-2tYrGnzb1gKz2EkMDQcfLrDTvmGcQPuWxLnJKXJvYTQDGLlEvi2tWz1VIHjunmOvJrB5aIQLhm+dcMRwFZDCqQ== + dependencies: + "@sentry/types" "5.30.0" + "@sentry/utils" "5.30.0" + tslib "^1.9.3" + +"@sentry/minimal@5.30.0": + version "5.30.0" + resolved "https://registry.yarnpkg.com/@sentry/minimal/-/minimal-5.30.0.tgz#ce3d3a6a273428e0084adcb800bc12e72d34637b" + integrity sha512-BwWb/owZKtkDX+Sc4zCSTNcvZUq7YcH3uAVlmh/gtR9rmUvbzAA3ewLuB3myi4wWRAMEtny6+J/FN/x+2wn9Xw== + dependencies: + "@sentry/hub" "5.30.0" + "@sentry/types" "5.30.0" + tslib "^1.9.3" + +"@sentry/node@^5.18.1": + version "5.30.0" + resolved "https://registry.yarnpkg.com/@sentry/node/-/node-5.30.0.tgz#4ca479e799b1021285d7fe12ac0858951c11cd48" + integrity sha512-Br5oyVBF0fZo6ZS9bxbJZG4ApAjRqAnqFFurMVJJdunNb80brh7a5Qva2kjhm+U6r9NJAB5OmDyPkA1Qnt+QVg== + dependencies: + "@sentry/core" "5.30.0" + "@sentry/hub" "5.30.0" + "@sentry/tracing" "5.30.0" + "@sentry/types" "5.30.0" + "@sentry/utils" "5.30.0" + cookie "^0.4.1" + https-proxy-agent "^5.0.0" + lru_map "^0.3.3" + tslib "^1.9.3" + +"@sentry/tracing@5.30.0": + version "5.30.0" + resolved "https://registry.yarnpkg.com/@sentry/tracing/-/tracing-5.30.0.tgz#501d21f00c3f3be7f7635d8710da70d9419d4e1f" + integrity sha512-dUFowCr0AIMwiLD7Fs314Mdzcug+gBVo/+NCMyDw8tFxJkwWAKl7Qa2OZxLQ0ZHjakcj1hNKfCQJ9rhyfOl4Aw== + dependencies: + "@sentry/hub" "5.30.0" + "@sentry/minimal" "5.30.0" + "@sentry/types" "5.30.0" + "@sentry/utils" "5.30.0" + tslib "^1.9.3" + +"@sentry/types@5.30.0": + version "5.30.0" + resolved "https://registry.yarnpkg.com/@sentry/types/-/types-5.30.0.tgz#19709bbe12a1a0115bc790b8942917da5636f402" + integrity sha512-R8xOqlSTZ+htqrfteCWU5Nk0CDN5ApUTvrlvBuiH1DyP6czDZ4ktbZB0hAgBlVcK0U+qpD3ag3Tqqpa5Q67rPw== + +"@sentry/utils@5.30.0": + version "5.30.0" + resolved "https://registry.yarnpkg.com/@sentry/utils/-/utils-5.30.0.tgz#9a5bd7ccff85ccfe7856d493bffa64cabc41e980" + integrity sha512-zaYmoH0NWWtvnJjC9/CBseXMtKHm/tm40sz3YfJRxeQjyzRqNQPgivpd9R/oDJCYj999mzdW382p/qi2ypjLww== + dependencies: + "@sentry/types" "5.30.0" + tslib "^1.9.3" + +"@types/bn.js@^4.11.3": + version "4.11.6" + resolved "https://registry.yarnpkg.com/@types/bn.js/-/bn.js-4.11.6.tgz#c306c70d9358aaea33cd4eda092a742b9505967c" + integrity sha512-pqr857jrp2kPuO9uRjZ3PwnJTjoQy+fcdxvBTvHm6dkmEL9q+hDD/2j/0ELOBPtPnS8LjCX0gI9nbl8lVkadpg== + dependencies: + "@types/node" "*" + +"@types/bn.js@^5.1.0": + version "5.1.1" + resolved "https://registry.yarnpkg.com/@types/bn.js/-/bn.js-5.1.1.tgz#b51e1b55920a4ca26e9285ff79936bbdec910682" + integrity sha512-qNrYbZqMx0uJAfKnKclPh+dTwK33KfLHYqtyODwd5HnXOjnkhc4qgn3BrK6RWyGZm5+sIFE7Q7Vz6QQtJB7w7g== + dependencies: + "@types/node" "*" + +"@types/lru-cache@^5.1.0": + version "5.1.1" + resolved "https://registry.yarnpkg.com/@types/lru-cache/-/lru-cache-5.1.1.tgz#c48c2e27b65d2a153b19bfc1a317e30872e01eef" + integrity sha512-ssE3Vlrys7sdIzs5LOxCzTVMsU7i9oa/IaW92wF32JFb3CVczqOkru2xspuKczHEbG3nvmPY7IFqVmGGHdNbYw== + +"@types/node@*": + version "20.6.0" + resolved "https://registry.yarnpkg.com/@types/node/-/node-20.6.0.tgz#9d7daa855d33d4efec8aea88cd66db1c2f0ebe16" + integrity sha512-najjVq5KN2vsH2U/xyh2opaSEz6cZMR2SetLIlxlj08nOcmPOemJmUK2o4kUzfLqfrWE0PIrNeE16XhYDd3nqg== + +"@types/pbkdf2@^3.0.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@types/pbkdf2/-/pbkdf2-3.1.0.tgz#039a0e9b67da0cdc4ee5dab865caa6b267bb66b1" + integrity sha512-Cf63Rv7jCQ0LaL8tNXmEyqTHuIJxRdlS5vMh1mj5voN4+QFhVZnlZruezqpWYDiJ8UTzhP0VmeLXCmBk66YrMQ== + dependencies: + "@types/node" "*" + +"@types/readable-stream@^2.3.13": + version "2.3.15" + resolved "https://registry.yarnpkg.com/@types/readable-stream/-/readable-stream-2.3.15.tgz#3d79c9ceb1b6a57d5f6e6976f489b9b5384321ae" + integrity sha512-oM5JSKQCcICF1wvGgmecmHldZ48OZamtMxcGGVICOJA8o8cahXC1zEVAif8iwoc5j8etxFaRFnf095+CDsuoFQ== + dependencies: + "@types/node" "*" + safe-buffer "~5.1.1" + +"@types/secp256k1@^4.0.1": + version "4.0.3" + resolved "https://registry.yarnpkg.com/@types/secp256k1/-/secp256k1-4.0.3.tgz#1b8e55d8e00f08ee7220b4d59a6abe89c37a901c" + integrity sha512-Da66lEIFeIz9ltsdMZcpQvmrmmoqrfju8pm1BH8WbYjZSwUgCwXLb9C+9XYogwBITnbsSaMdVPb2ekf7TV+03w== + dependencies: + "@types/node" "*" + +abstract-level@^1.0.0, abstract-level@^1.0.2, abstract-level@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/abstract-level/-/abstract-level-1.0.3.tgz#78a67d3d84da55ee15201486ab44c09560070741" + integrity sha512-t6jv+xHy+VYwc4xqZMn2Pa9DjcdzvzZmQGRjTFc8spIbRGHgBrEKbPq+rYXc7CCo0lxgYvSgKVg9qZAhpVQSjA== + dependencies: + buffer "^6.0.3" + catering "^2.1.0" + is-buffer "^2.0.5" + level-supports "^4.0.0" + level-transcoder "^1.0.1" + module-error "^1.0.1" + queue-microtask "^1.2.3" + +adm-zip@^0.4.16: + version "0.4.16" + resolved "https://registry.yarnpkg.com/adm-zip/-/adm-zip-0.4.16.tgz#cf4c508fdffab02c269cbc7f471a875f05570365" + integrity sha512-TFi4HBKSGfIKsK5YCkKaaFG2m4PEDyViZmEwof3MTIgzimHLto6muaHVpbrljdIvIrFZzEq/p4nafOeLcYegrg== + +aes-js@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/aes-js/-/aes-js-3.0.0.tgz#e21df10ad6c2053295bcbb8dab40b09dbea87e4d" + integrity sha512-H7wUZRn8WpTq9jocdxQ2c8x2sKo9ZVmzfRE13GiNJXfp7NcKYEdvl3vspKjXox6RIG2VtaRe4JFvxG4rqp2Zuw== + +agent-base@6: + version "6.0.2" + resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77" + integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ== + dependencies: + debug "4" + +aggregate-error@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/aggregate-error/-/aggregate-error-3.1.0.tgz#92670ff50f5359bdb7a3e0d40d0ec30c5737687a" + integrity sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA== + dependencies: + clean-stack "^2.0.0" + indent-string "^4.0.0" + +ansi-colors@4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348" + integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA== + +ansi-colors@^4.1.1: + version "4.1.3" + resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.3.tgz#37611340eb2243e70cc604cad35d63270d48781b" + integrity sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw== + +ansi-escapes@^4.3.0: + version "4.3.2" + resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.2.tgz#6b2291d1db7d98b6521d5f1efa42d0f3a9feb65e" + integrity sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ== + dependencies: + type-fest "^0.21.3" + +ansi-regex@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" + integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== + +ansi-styles@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" + integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== + dependencies: + color-convert "^1.9.0" + +ansi-styles@^4.0.0, ansi-styles@^4.1.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" + integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== + dependencies: + color-convert "^2.0.1" + +anymatch@~3.1.2: + version "3.1.3" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e" + integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== + dependencies: + normalize-path "^3.0.0" + picomatch "^2.0.4" + +argparse@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" + integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== + +balanced-match@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" + integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== + +base-x@^3.0.2: + version "3.0.9" + resolved "https://registry.yarnpkg.com/base-x/-/base-x-3.0.9.tgz#6349aaabb58526332de9f60995e548a53fe21320" + integrity sha512-H7JU6iBHTal1gp56aKoaa//YUxEaAOUiydvrV/pILqIHXTtqxSkATOnDA2u+jZ/61sD+L/412+7kzXRtWukhpQ== + dependencies: + safe-buffer "^5.0.1" + +base64-js@^1.3.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" + integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== + +bech32@1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/bech32/-/bech32-1.1.4.tgz#e38c9f37bf179b8eb16ae3a772b40c356d4832e9" + integrity sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ== + +bigint-crypto-utils@^3.0.23: + version "3.3.0" + resolved "https://registry.yarnpkg.com/bigint-crypto-utils/-/bigint-crypto-utils-3.3.0.tgz#72ad00ae91062cf07f2b1def9594006c279c1d77" + integrity sha512-jOTSb+drvEDxEq6OuUybOAv/xxoh3cuYRUIPyu8sSHQNKM303UQ2R1DAo45o1AkcIXw6fzbaFI1+xGGdaXs2lg== + +binary-extensions@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" + integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== + +blakejs@^1.1.0: + version "1.2.1" + resolved "https://registry.yarnpkg.com/blakejs/-/blakejs-1.2.1.tgz#5057e4206eadb4a97f7c0b6e197a505042fc3814" + integrity sha512-QXUSXI3QVc/gJME0dBpXrag1kbzOqCjCX8/b54ntNyW6sjtoqxqRk3LTmXzaJoh71zMsDCjM+47jS7XiwN/+fQ== + +bn.js@^4.11.0, bn.js@^4.11.8, bn.js@^4.11.9: + version "4.12.0" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.12.0.tgz#775b3f278efbb9718eec7361f483fb36fbbfea88" + integrity sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA== + +bn.js@^5.2.0, bn.js@^5.2.1: + version "5.2.1" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.2.1.tgz#0bc527a6a0d18d0aa8d5b0538ce4a77dccfa7b70" + integrity sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ== + +brace-expansion@^1.1.7: + version "1.1.11" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" + integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== + dependencies: + balanced-match "^1.0.0" + concat-map "0.0.1" + +brace-expansion@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae" + integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA== + dependencies: + balanced-match "^1.0.0" + +braces@~3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" + integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== + dependencies: + fill-range "^7.0.1" + +brorand@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" + integrity sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w== + +browser-level@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/browser-level/-/browser-level-1.0.1.tgz#36e8c3183d0fe1c405239792faaab5f315871011" + integrity sha512-XECYKJ+Dbzw0lbydyQuJzwNXtOpbMSq737qxJN11sIRTErOMShvDpbzTlgju7orJKvx4epULolZAuJGLzCmWRQ== + dependencies: + abstract-level "^1.0.2" + catering "^2.1.1" + module-error "^1.0.2" + run-parallel-limit "^1.1.0" + +browser-stdout@1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.1.tgz#baa559ee14ced73452229bad7326467c61fabd60" + integrity sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw== + +browserify-aes@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.2.0.tgz#326734642f403dabc3003209853bb70ad428ef48" + integrity sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA== + dependencies: + buffer-xor "^1.0.3" + cipher-base "^1.0.0" + create-hash "^1.1.0" + evp_bytestokey "^1.0.3" + inherits "^2.0.1" + safe-buffer "^5.0.1" + +bs58@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/bs58/-/bs58-4.0.1.tgz#be161e76c354f6f788ae4071f63f34e8c4f0a42a" + integrity sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw== + dependencies: + base-x "^3.0.2" + +bs58check@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/bs58check/-/bs58check-2.1.2.tgz#53b018291228d82a5aa08e7d796fdafda54aebfc" + integrity sha512-0TS1jicxdU09dwJMNZtVAfzPi6Q6QeN0pM1Fkzrjn+XYHvzMKPU3pHVpva+769iNVSfIYWf7LJ6WR+BuuMf8cA== + dependencies: + bs58 "^4.0.0" + create-hash "^1.1.0" + safe-buffer "^5.1.2" + +buffer-from@^1.0.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" + integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== + +buffer-xor@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" + integrity sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ== + +buffer@^6.0.3: + version "6.0.3" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-6.0.3.tgz#2ace578459cc8fbe2a70aaa8f52ee63b6a74c6c6" + integrity sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA== + dependencies: + base64-js "^1.3.1" + ieee754 "^1.2.1" + +busboy@^1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/busboy/-/busboy-1.6.0.tgz#966ea36a9502e43cdb9146962523b92f531f6893" + integrity sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA== + dependencies: + streamsearch "^1.1.0" + +bytes@3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5" + integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg== + +camelcase@^6.0.0: + version "6.3.0" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" + integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== + +case@^1.6.3: + version "1.6.3" + resolved "https://registry.yarnpkg.com/case/-/case-1.6.3.tgz#0a4386e3e9825351ca2e6216c60467ff5f1ea1c9" + integrity sha512-mzDSXIPaFwVDvZAHqZ9VlbyF4yyXRuX6IvB06WvPYkqJVO24kX1PPhv9bfpKNFZyxYFmmgo03HUiD8iklmJYRQ== + +catering@^2.1.0, catering@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/catering/-/catering-2.1.1.tgz#66acba06ed5ee28d5286133982a927de9a04b510" + integrity sha512-K7Qy8O9p76sL3/3m7/zLKbRkyOlSZAgzEaLhyj2mXS8PsCud2Eo4hAb8aLtZqHh0QGqLcb9dlJSu6lHRVENm1w== + +chalk@^2.4.2: + version "2.4.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" + integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== + dependencies: + ansi-styles "^3.2.1" + escape-string-regexp "^1.0.5" + supports-color "^5.3.0" + +chalk@^4.1.0: + version "4.1.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" + integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + +chokidar@3.5.3, chokidar@^3.4.0: + version "3.5.3" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd" + integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== + dependencies: + anymatch "~3.1.2" + braces "~3.0.2" + glob-parent "~5.1.2" + is-binary-path "~2.1.0" + is-glob "~4.0.1" + normalize-path "~3.0.0" + readdirp "~3.6.0" + optionalDependencies: + fsevents "~2.3.2" + +ci-info@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" + integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== + +cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de" + integrity sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q== + dependencies: + inherits "^2.0.1" + safe-buffer "^5.0.1" + +classic-level@^1.2.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/classic-level/-/classic-level-1.3.0.tgz#5e36680e01dc6b271775c093f2150844c5edd5c8" + integrity sha512-iwFAJQYtqRTRM0F6L8h4JCt00ZSGdOyqh7yVrhhjrOpFhmBjNlRUey64MCiyo6UmQHMJ+No3c81nujPv+n9yrg== + dependencies: + abstract-level "^1.0.2" + catering "^2.1.0" + module-error "^1.0.1" + napi-macros "^2.2.2" + node-gyp-build "^4.3.0" + +clean-stack@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b" + integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A== + +cliui@^7.0.2: + version "7.0.4" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f" + integrity sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ== + dependencies: + string-width "^4.2.0" + strip-ansi "^6.0.0" + wrap-ansi "^7.0.0" + +color-convert@^1.9.0: + version "1.9.3" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" + integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== + dependencies: + color-name "1.1.3" + +color-convert@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" + integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== + dependencies: + color-name "~1.1.4" + +color-name@1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" + integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== + +color-name@~1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" + integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== + +command-exists@^1.2.8: + version "1.2.9" + resolved "https://registry.yarnpkg.com/command-exists/-/command-exists-1.2.9.tgz#c50725af3808c8ab0260fd60b01fbfa25b954f69" + integrity sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w== + +commander@3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/commander/-/commander-3.0.2.tgz#6837c3fb677ad9933d1cfba42dd14d5117d6b39e" + integrity sha512-Gar0ASD4BDyKC4hl4DwHqDrmvjoxWKZigVnAbn5H1owvm4CxCPdb0HQDehwNYMJpla5+M2tPmPARzhtYuwpHow== + +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== + +cookie@^0.4.1: + version "0.4.2" + resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.2.tgz#0e41f24de5ecf317947c82fc789e06a884824432" + integrity sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA== + +crc-32@^1.2.0: + version "1.2.2" + resolved "https://registry.yarnpkg.com/crc-32/-/crc-32-1.2.2.tgz#3cad35a934b8bf71f25ca524b6da51fb7eace2ff" + integrity sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ== + +create-hash@^1.1.0, create-hash@^1.1.2, create-hash@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.2.0.tgz#889078af11a63756bcfb59bd221996be3a9ef196" + integrity sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg== + dependencies: + cipher-base "^1.0.1" + inherits "^2.0.1" + md5.js "^1.3.4" + ripemd160 "^2.0.1" + sha.js "^2.4.0" + +create-hmac@^1.1.4, create-hmac@^1.1.7: + version "1.1.7" + resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.7.tgz#69170c78b3ab957147b2b8b04572e47ead2243ff" + integrity sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg== + dependencies: + cipher-base "^1.0.3" + create-hash "^1.1.0" + inherits "^2.0.1" + ripemd160 "^2.0.0" + safe-buffer "^5.0.1" + sha.js "^2.4.8" + +debug@4, debug@4.3.4, debug@^4.1.1, debug@^4.3.3: + version "4.3.4" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" + integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== + dependencies: + ms "2.1.2" + +decamelize@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-4.0.0.tgz#aa472d7bf660eb15f3494efd531cab7f2a709837" + integrity sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ== + +depd@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df" + integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== + +diff@5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/diff/-/diff-5.0.0.tgz#7ed6ad76d859d030787ec35855f5b1daf31d852b" + integrity sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w== + +elliptic@6.5.4, elliptic@^6.5.2, elliptic@^6.5.4: + version "6.5.4" + resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.4.tgz#da37cebd31e79a1367e941b592ed1fbebd58abbb" + integrity sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ== + dependencies: + bn.js "^4.11.9" + brorand "^1.1.0" + hash.js "^1.0.0" + hmac-drbg "^1.0.1" + inherits "^2.0.4" + minimalistic-assert "^1.0.1" + minimalistic-crypto-utils "^1.0.1" + +emoji-regex@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" + integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== + +enquirer@^2.3.0: + version "2.4.1" + resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.4.1.tgz#93334b3fbd74fc7097b224ab4a8fb7e40bf4ae56" + integrity sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ== + dependencies: + ansi-colors "^4.1.1" + strip-ansi "^6.0.1" + +env-paths@^2.2.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/env-paths/-/env-paths-2.2.1.tgz#420399d416ce1fbe9bc0a07c62fa68d67fd0f8f2" + integrity sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A== + +escalade@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" + integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== + +escape-string-regexp@4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" + integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== + +escape-string-regexp@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" + integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== + +ethereum-cryptography@0.1.3, ethereum-cryptography@^0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz#8d6143cfc3d74bf79bbd8edecdf29e4ae20dd191" + integrity sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ== + dependencies: + "@types/pbkdf2" "^3.0.0" + "@types/secp256k1" "^4.0.1" + blakejs "^1.1.0" + browserify-aes "^1.2.0" + bs58check "^2.1.2" + create-hash "^1.2.0" + create-hmac "^1.1.7" + hash.js "^1.1.7" + keccak "^3.0.0" + pbkdf2 "^3.0.17" + randombytes "^2.1.0" + safe-buffer "^5.1.2" + scrypt-js "^3.0.0" + secp256k1 "^4.0.1" + setimmediate "^1.0.5" + +ethereum-cryptography@^1.0.3: + version "1.2.0" + resolved "https://registry.yarnpkg.com/ethereum-cryptography/-/ethereum-cryptography-1.2.0.tgz#5ccfa183e85fdaf9f9b299a79430c044268c9b3a" + integrity sha512-6yFQC9b5ug6/17CQpCyE3k9eKBMdhyVjzUy1WkiuY/E4vj/SXDBbCw8QEIaXqf0Mf2SnY6RmpDcwlUmBSS0EJw== + dependencies: + "@noble/hashes" "1.2.0" + "@noble/secp256k1" "1.7.1" + "@scure/bip32" "1.1.5" + "@scure/bip39" "1.1.1" + +ethereumjs-abi@^0.6.8: + version "0.6.8" + resolved "https://registry.yarnpkg.com/ethereumjs-abi/-/ethereumjs-abi-0.6.8.tgz#71bc152db099f70e62f108b7cdfca1b362c6fcae" + integrity sha512-Tx0r/iXI6r+lRsdvkFDlut0N08jWMnKRZ6Gkq+Nmw75lZe4e6o3EkSnkaBP5NF6+m5PTGAr9JP43N3LyeoglsA== + dependencies: + bn.js "^4.11.8" + ethereumjs-util "^6.0.0" + +ethereumjs-util@^6.0.0, ethereumjs-util@^6.2.1: + version "6.2.1" + resolved "https://registry.yarnpkg.com/ethereumjs-util/-/ethereumjs-util-6.2.1.tgz#fcb4e4dd5ceacb9d2305426ab1a5cd93e3163b69" + integrity sha512-W2Ktez4L01Vexijrm5EB6w7dg4n/TgpoYU4avuT5T3Vmnw/eCRtiBrJfQYS/DCSvDIOLn2k57GcHdeBcgVxAqw== + dependencies: + "@types/bn.js" "^4.11.3" + bn.js "^4.11.0" + create-hash "^1.1.2" + elliptic "^6.5.2" + ethereum-cryptography "^0.1.3" + ethjs-util "0.1.6" + rlp "^2.2.3" + +ethers@^5.7.1: + version "5.7.2" + resolved "https://registry.yarnpkg.com/ethers/-/ethers-5.7.2.tgz#3a7deeabbb8c030d4126b24f84e525466145872e" + integrity sha512-wswUsmWo1aOK8rR7DIKiWSw9DbLWe6x98Jrn8wcTflTVvaXhAMaB5zGAXy0GYQEQp9iO1iSHWVyARQm11zUtyg== + dependencies: + "@ethersproject/abi" "5.7.0" + "@ethersproject/abstract-provider" "5.7.0" + "@ethersproject/abstract-signer" "5.7.0" + "@ethersproject/address" "5.7.0" + "@ethersproject/base64" "5.7.0" + "@ethersproject/basex" "5.7.0" + "@ethersproject/bignumber" "5.7.0" + "@ethersproject/bytes" "5.7.0" + "@ethersproject/constants" "5.7.0" + "@ethersproject/contracts" "5.7.0" + "@ethersproject/hash" "5.7.0" + "@ethersproject/hdnode" "5.7.0" + "@ethersproject/json-wallets" "5.7.0" + "@ethersproject/keccak256" "5.7.0" + "@ethersproject/logger" "5.7.0" + "@ethersproject/networks" "5.7.1" + "@ethersproject/pbkdf2" "5.7.0" + "@ethersproject/properties" "5.7.0" + "@ethersproject/providers" "5.7.2" + "@ethersproject/random" "5.7.0" + "@ethersproject/rlp" "5.7.0" + "@ethersproject/sha2" "5.7.0" + "@ethersproject/signing-key" "5.7.0" + "@ethersproject/solidity" "5.7.0" + "@ethersproject/strings" "5.7.0" + "@ethersproject/transactions" "5.7.0" + "@ethersproject/units" "5.7.0" + "@ethersproject/wallet" "5.7.0" + "@ethersproject/web" "5.7.1" + "@ethersproject/wordlists" "5.7.0" + +ethjs-util@0.1.6, ethjs-util@^0.1.6: + version "0.1.6" + resolved "https://registry.yarnpkg.com/ethjs-util/-/ethjs-util-0.1.6.tgz#f308b62f185f9fe6237132fb2a9818866a5cd536" + integrity sha512-CUnVOQq7gSpDHZVVrQW8ExxUETWrnrvXYvYz55wOU8Uj4VCgw56XC2B/fVqQN+f7gmrnRHSLVnFAwsCuNwji8w== + dependencies: + is-hex-prefixed "1.0.0" + strip-hex-prefix "1.0.0" + +evp_bytestokey@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz#7fcbdb198dc71959432efe13842684e0525acb02" + integrity sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA== + dependencies: + md5.js "^1.3.4" + safe-buffer "^5.1.1" + +fill-range@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" + integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== + dependencies: + to-regex-range "^5.0.1" + +find-up@5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" + integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== + dependencies: + locate-path "^6.0.0" + path-exists "^4.0.0" + +find-up@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" + integrity sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ== + dependencies: + locate-path "^2.0.0" + +flat@^5.0.2: + version "5.0.2" + resolved "https://registry.yarnpkg.com/flat/-/flat-5.0.2.tgz#8ca6fe332069ffa9d324c327198c598259ceb241" + integrity sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ== + +follow-redirects@^1.12.1: + version "1.15.2" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.2.tgz#b460864144ba63f2681096f274c4e57026da2c13" + integrity sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA== + +fp-ts@1.19.3: + version "1.19.3" + resolved "https://registry.yarnpkg.com/fp-ts/-/fp-ts-1.19.3.tgz#261a60d1088fbff01f91256f91d21d0caaaaa96f" + integrity sha512-H5KQDspykdHuztLTg+ajGN0Z2qUjcEf3Ybxc6hLt0k7/zPkn29XnKnxlBPyW2XIddWrGaJBzBl4VLYOtk39yZg== + +fp-ts@^1.0.0: + version "1.19.5" + resolved "https://registry.yarnpkg.com/fp-ts/-/fp-ts-1.19.5.tgz#3da865e585dfa1fdfd51785417357ac50afc520a" + integrity sha512-wDNqTimnzs8QqpldiId9OavWK2NptormjXnRJTQecNjzwfyp6P/8s/zG8e4h3ja3oqkKaY72UlTjQYt/1yXf9A== + +fs-extra@^0.30.0: + version "0.30.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-0.30.0.tgz#f233ffcc08d4da7d432daa449776989db1df93f0" + integrity sha512-UvSPKyhMn6LEd/WpUaV9C9t3zATuqoqfWc3QdPhPLb58prN9tqYPlPWi8Krxi44loBoUzlobqZ3+8tGpxxSzwA== + dependencies: + graceful-fs "^4.1.2" + jsonfile "^2.1.0" + klaw "^1.0.0" + path-is-absolute "^1.0.0" + rimraf "^2.2.8" + +fs-extra@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-7.0.1.tgz#4f189c44aa123b895f722804f55ea23eadc348e9" + integrity sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw== + dependencies: + graceful-fs "^4.1.2" + jsonfile "^4.0.0" + universalify "^0.1.0" + +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== + +fsevents@~2.3.2: + version "2.3.3" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" + integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== + +functional-red-black-tree@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" + integrity sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g== + +get-caller-file@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" + integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== + +glob-parent@~5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" + integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== + dependencies: + is-glob "^4.0.1" + +glob@7.2.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.0.tgz#d15535af7732e02e948f4c41628bd910293f6023" + integrity sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.4" + once "^1.3.0" + path-is-absolute "^1.0.0" + +glob@^7.1.3: + version "7.2.3" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" + integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.1.1" + once "^1.3.0" + path-is-absolute "^1.0.0" + +graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.1.9: + version "4.2.11" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" + integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== + +hardhat@^2.17.3: + version "2.17.3" + resolved "https://registry.yarnpkg.com/hardhat/-/hardhat-2.17.3.tgz#4cb15f2afdea5f108970ed72e5b81e6e53052cfb" + integrity sha512-SFZoYVXW1bWJZrIIKXOA+IgcctfuKXDwENywiYNT2dM3YQc4fXNaTbuk/vpPzHIF50upByx4zW5EqczKYQubsA== + dependencies: + "@ethersproject/abi" "^5.1.2" + "@metamask/eth-sig-util" "^4.0.0" + "@nomicfoundation/ethereumjs-block" "5.0.2" + "@nomicfoundation/ethereumjs-blockchain" "7.0.2" + "@nomicfoundation/ethereumjs-common" "4.0.2" + "@nomicfoundation/ethereumjs-evm" "2.0.2" + "@nomicfoundation/ethereumjs-rlp" "5.0.2" + "@nomicfoundation/ethereumjs-statemanager" "2.0.2" + "@nomicfoundation/ethereumjs-trie" "6.0.2" + "@nomicfoundation/ethereumjs-tx" "5.0.2" + "@nomicfoundation/ethereumjs-util" "9.0.2" + "@nomicfoundation/ethereumjs-vm" "7.0.2" + "@nomicfoundation/solidity-analyzer" "^0.1.0" + "@sentry/node" "^5.18.1" + "@types/bn.js" "^5.1.0" + "@types/lru-cache" "^5.1.0" + adm-zip "^0.4.16" + aggregate-error "^3.0.0" + ansi-escapes "^4.3.0" + chalk "^2.4.2" + chokidar "^3.4.0" + ci-info "^2.0.0" + debug "^4.1.1" + enquirer "^2.3.0" + env-paths "^2.2.0" + ethereum-cryptography "^1.0.3" + ethereumjs-abi "^0.6.8" + find-up "^2.1.0" + fp-ts "1.19.3" + fs-extra "^7.0.1" + glob "7.2.0" + immutable "^4.0.0-rc.12" + io-ts "1.10.4" + keccak "^3.0.2" + lodash "^4.17.11" + mnemonist "^0.38.0" + mocha "^10.0.0" + p-map "^4.0.0" + raw-body "^2.4.1" + resolve "1.17.0" + semver "^6.3.0" + solc "0.7.3" + source-map-support "^0.5.13" + stacktrace-parser "^0.1.10" + tsort "0.0.1" + undici "^5.14.0" + uuid "^8.3.2" + ws "^7.4.6" + +has-flag@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" + integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== + +has-flag@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" + integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== + +hash-base@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.1.0.tgz#55c381d9e06e1d2997a883b4a3fddfe7f0d3af33" + integrity sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA== + dependencies: + inherits "^2.0.4" + readable-stream "^3.6.0" + safe-buffer "^5.2.0" + +hash.js@1.1.7, hash.js@^1.0.0, hash.js@^1.0.3, hash.js@^1.1.7: + version "1.1.7" + resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42" + integrity sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA== + dependencies: + inherits "^2.0.3" + minimalistic-assert "^1.0.1" + +he@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" + integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== + +hmac-drbg@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" + integrity sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg== + dependencies: + hash.js "^1.0.3" + minimalistic-assert "^1.0.0" + minimalistic-crypto-utils "^1.0.1" + +http-errors@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-2.0.0.tgz#b7774a1486ef73cf7667ac9ae0858c012c57b9d3" + integrity sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ== + dependencies: + depd "2.0.0" + inherits "2.0.4" + setprototypeof "1.2.0" + statuses "2.0.1" + toidentifier "1.0.1" + +https-proxy-agent@^5.0.0: + version "5.0.1" + resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz#c59ef224a04fe8b754f3db0063a25ea30d0005d6" + integrity sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA== + dependencies: + agent-base "6" + debug "4" + +iconv-lite@0.4.24: + version "0.4.24" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" + integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== + dependencies: + safer-buffer ">= 2.1.2 < 3" + +ieee754@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" + integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== + +immutable@^4.0.0-rc.12: + version "4.3.4" + resolved "https://registry.yarnpkg.com/immutable/-/immutable-4.3.4.tgz#2e07b33837b4bb7662f288c244d1ced1ef65a78f" + integrity sha512-fsXeu4J4i6WNWSikpI88v/PcVflZz+6kMhUfIwc5SY+poQRPnaf5V7qds6SUyUN3cVxEzuCab7QIoLOQ+DQ1wA== + +indent-string@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251" + integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== + +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" + integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== + +io-ts@1.10.4: + version "1.10.4" + resolved "https://registry.yarnpkg.com/io-ts/-/io-ts-1.10.4.tgz#cd5401b138de88e4f920adbcb7026e2d1967e6e2" + integrity sha512-b23PteSnYXSONJ6JQXRAlvJhuw8KOtkqa87W4wDtvMrud/DTJd5X+NpOOI+O/zZwVq6v0VLAaJ+1EDViKEuN9g== + dependencies: + fp-ts "^1.0.0" + +is-binary-path@~2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" + integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== + dependencies: + binary-extensions "^2.0.0" + +is-buffer@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-2.0.5.tgz#ebc252e400d22ff8d77fa09888821a24a658c191" + integrity sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ== + +is-extglob@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" + integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== + +is-fullwidth-code-point@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" + integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== + +is-glob@^4.0.1, is-glob@~4.0.1: + version "4.0.3" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" + integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== + dependencies: + is-extglob "^2.1.1" + +is-hex-prefixed@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-hex-prefixed/-/is-hex-prefixed-1.0.0.tgz#7d8d37e6ad77e5d127148913c573e082d777f554" + integrity sha512-WvtOiug1VFrE9v1Cydwm+FnXd3+w9GaeVUss5W4v/SLy3UW00vP+6iNF2SdnfiBoLy4bTqVdkftNGTUeOFVsbA== + +is-number@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" + integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== + +is-plain-obj@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-2.1.0.tgz#45e42e37fccf1f40da8e5f76ee21515840c09287" + integrity sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA== + +is-unicode-supported@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz#3f26c76a809593b52bfa2ecb5710ed2779b522a7" + integrity sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw== + +js-sdsl@^4.1.4: + version "4.4.2" + resolved "https://registry.yarnpkg.com/js-sdsl/-/js-sdsl-4.4.2.tgz#2e3c031b1f47d3aca8b775532e3ebb0818e7f847" + integrity sha512-dwXFwByc/ajSV6m5bcKAPwe4yDDF6D614pxmIi5odytzxRlwqF6nwoiCek80Ixc7Cvma5awClxrzFtxCQvcM8w== + +js-sha3@0.8.0: + version "0.8.0" + resolved "https://registry.yarnpkg.com/js-sha3/-/js-sha3-0.8.0.tgz#b9b7a5da73afad7dedd0f8c463954cbde6818840" + integrity sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q== + +js-yaml@4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" + integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== + dependencies: + argparse "^2.0.1" + +jsonfile@^2.1.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-2.4.0.tgz#3736a2b428b87bbda0cc83b53fa3d633a35c2ae8" + integrity sha512-PKllAqbgLgxHaj8TElYymKCAgrASebJrWpTnEkOaTowt23VKXXN0sUeriJ+eh7y6ufb/CC5ap11pz71/cM0hUw== + optionalDependencies: + graceful-fs "^4.1.6" + +jsonfile@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" + integrity sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg== + optionalDependencies: + graceful-fs "^4.1.6" + +keccak@^3.0.0, keccak@^3.0.2: + version "3.0.3" + resolved "https://registry.yarnpkg.com/keccak/-/keccak-3.0.3.tgz#4bc35ad917be1ef54ff246f904c2bbbf9ac61276" + integrity sha512-JZrLIAJWuZxKbCilMpNz5Vj7Vtb4scDG3dMXLOsbzBmQGyjwE61BbW7bJkfKKCShXiQZt3T6sBgALRtmd+nZaQ== + dependencies: + node-addon-api "^2.0.0" + node-gyp-build "^4.2.0" + readable-stream "^3.6.0" + +klaw@^1.0.0: + version "1.3.1" + resolved "https://registry.yarnpkg.com/klaw/-/klaw-1.3.1.tgz#4088433b46b3b1ba259d78785d8e96f73ba02439" + integrity sha512-TED5xi9gGQjGpNnvRWknrwAB1eL5GciPfVFOt3Vk1OJCVDQbzuSfrF3hkUQKlsgKrG1F+0t5W0m+Fje1jIt8rw== + optionalDependencies: + graceful-fs "^4.1.9" + +level-supports@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/level-supports/-/level-supports-4.0.1.tgz#431546f9d81f10ff0fea0e74533a0e875c08c66a" + integrity sha512-PbXpve8rKeNcZ9C1mUicC9auIYFyGpkV9/i6g76tLgANwWhtG2v7I4xNBUlkn3lE2/dZF3Pi0ygYGtLc4RXXdA== + +level-transcoder@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/level-transcoder/-/level-transcoder-1.0.1.tgz#f8cef5990c4f1283d4c86d949e73631b0bc8ba9c" + integrity sha512-t7bFwFtsQeD8cl8NIoQ2iwxA0CL/9IFw7/9gAjOonH0PWTTiRfY7Hq+Ejbsxh86tXobDQ6IOiddjNYIfOBs06w== + dependencies: + buffer "^6.0.3" + module-error "^1.0.1" + +level@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/level/-/level-8.0.0.tgz#41b4c515dabe28212a3e881b61c161ffead14394" + integrity sha512-ypf0jjAk2BWI33yzEaaotpq7fkOPALKAgDBxggO6Q9HGX2MRXn0wbP1Jn/tJv1gtL867+YOjOB49WaUF3UoJNQ== + dependencies: + browser-level "^1.0.1" + classic-level "^1.2.0" + +locate-path@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" + integrity sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA== + dependencies: + p-locate "^2.0.0" + path-exists "^3.0.0" + +locate-path@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" + integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== + dependencies: + p-locate "^5.0.0" + +lodash@^4.17.11: + version "4.17.21" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" + integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== + +log-symbols@4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.1.0.tgz#3fbdbb95b4683ac9fc785111e792e558d4abd503" + integrity sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg== + dependencies: + chalk "^4.1.0" + is-unicode-supported "^0.1.0" + +lru-cache@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" + integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w== + dependencies: + yallist "^3.0.2" + +lru_map@^0.3.3: + version "0.3.3" + resolved "https://registry.yarnpkg.com/lru_map/-/lru_map-0.3.3.tgz#b5c8351b9464cbd750335a79650a0ec0e56118dd" + integrity sha512-Pn9cox5CsMYngeDbmChANltQl+5pi6XmTrraMSzhPmMBbmgcxmqWry0U3PGapCU1yB4/LqCcom7qhHZiF/jGfQ== + +mcl-wasm@^0.7.1: + version "0.7.9" + resolved "https://registry.yarnpkg.com/mcl-wasm/-/mcl-wasm-0.7.9.tgz#c1588ce90042a8700c3b60e40efb339fc07ab87f" + integrity sha512-iJIUcQWA88IJB/5L15GnJVnSQJmf/YaxxV6zRavv83HILHaJQb6y0iFyDMdDO0gN8X37tdxmAOrH/P8B6RB8sQ== + +md5.js@^1.3.4: + version "1.3.5" + resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f" + integrity sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg== + dependencies: + hash-base "^3.0.0" + inherits "^2.0.1" + safe-buffer "^5.1.2" + +memory-level@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/memory-level/-/memory-level-1.0.0.tgz#7323c3fd368f9af2f71c3cd76ba403a17ac41692" + integrity sha512-UXzwewuWeHBz5krr7EvehKcmLFNoXxGcvuYhC41tRnkrTbJohtS7kVn9akmgirtRygg+f7Yjsfi8Uu5SGSQ4Og== + dependencies: + abstract-level "^1.0.0" + functional-red-black-tree "^1.0.1" + module-error "^1.0.1" + +memorystream@^0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/memorystream/-/memorystream-0.3.1.tgz#86d7090b30ce455d63fbae12dda51a47ddcaf9b2" + integrity sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw== + +minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" + integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== + +minimalistic-crypto-utils@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" + integrity sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg== + +minimatch@5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.0.1.tgz#fb9022f7528125187c92bd9e9b6366be1cf3415b" + integrity sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g== + dependencies: + brace-expansion "^2.0.1" + +minimatch@^3.0.4, minimatch@^3.1.1: + version "3.1.2" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" + integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== + dependencies: + brace-expansion "^1.1.7" + +mnemonist@^0.38.0: + version "0.38.5" + resolved "https://registry.yarnpkg.com/mnemonist/-/mnemonist-0.38.5.tgz#4adc7f4200491237fe0fa689ac0b86539685cade" + integrity sha512-bZTFT5rrPKtPJxj8KSV0WkPyNxl72vQepqqVUAW2ARUpUSF2qXMB6jZj7hW5/k7C1rtpzqbD/IIbJwLXUjCHeg== + dependencies: + obliterator "^2.0.0" + +mocha@^10.0.0: + version "10.2.0" + resolved "https://registry.yarnpkg.com/mocha/-/mocha-10.2.0.tgz#1fd4a7c32ba5ac372e03a17eef435bd00e5c68b8" + integrity sha512-IDY7fl/BecMwFHzoqF2sg/SHHANeBoMMXFlS9r0OXKDssYE1M5O43wUY/9BVPeIvfH2zmEbBfseqN9gBQZzXkg== + dependencies: + ansi-colors "4.1.1" + browser-stdout "1.3.1" + chokidar "3.5.3" + debug "4.3.4" + diff "5.0.0" + escape-string-regexp "4.0.0" + find-up "5.0.0" + glob "7.2.0" + he "1.2.0" + js-yaml "4.1.0" + log-symbols "4.1.0" + minimatch "5.0.1" + ms "2.1.3" + nanoid "3.3.3" + serialize-javascript "6.0.0" + strip-json-comments "3.1.1" + supports-color "8.1.1" + workerpool "6.2.1" + yargs "16.2.0" + yargs-parser "20.2.4" + yargs-unparser "2.0.0" + +module-error@^1.0.1, module-error@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/module-error/-/module-error-1.0.2.tgz#8d1a48897ca883f47a45816d4fb3e3c6ba404d86" + integrity sha512-0yuvsqSCv8LbaOKhnsQ/T5JhyFlCYLPXK3U2sgV10zoKQwzs/MyfuQUOZQ1V/6OCOJsK/TRgNVrPuPDqtdMFtA== + +ms@2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" + integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== + +ms@2.1.3: + version "2.1.3" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" + integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== + +nanoid@3.3.3: + version "3.3.3" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.3.tgz#fd8e8b7aa761fe807dba2d1b98fb7241bb724a25" + integrity sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w== + +napi-macros@^2.2.2: + version "2.2.2" + resolved "https://registry.yarnpkg.com/napi-macros/-/napi-macros-2.2.2.tgz#817fef20c3e0e40a963fbf7b37d1600bd0201044" + integrity sha512-hmEVtAGYzVQpCKdbQea4skABsdXW4RUh5t5mJ2zzqowJS2OyXZTU1KhDVFhx+NlWZ4ap9mqR9TcDO3LTTttd+g== + +node-addon-api@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-2.0.2.tgz#432cfa82962ce494b132e9d72a15b29f71ff5d32" + integrity sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA== + +node-gyp-build@^4.2.0, node-gyp-build@^4.3.0: + version "4.6.1" + resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.6.1.tgz#24b6d075e5e391b8d5539d98c7fc5c210cac8a3e" + integrity sha512-24vnklJmyRS8ViBNI8KbtK/r/DmXQMRiOMXTNz2nrTnAYUwjmEEbnnpB/+kt+yWRv73bPsSPRFddrcIbAxSiMQ== + +normalize-path@^3.0.0, normalize-path@~3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" + integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== + +obliterator@^2.0.0: + version "2.0.4" + resolved "https://registry.yarnpkg.com/obliterator/-/obliterator-2.0.4.tgz#fa650e019b2d075d745e44f1effeb13a2adbe816" + integrity sha512-lgHwxlxV1qIg1Eap7LgIeoBWIMFibOjbrYPIPJZcI1mmGAI2m3lNYpK12Y+GBdPQ0U1hRwSord7GIaawz962qQ== + +once@^1.3.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== + dependencies: + wrappy "1" + +os-tmpdir@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" + integrity sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g== + +p-limit@^1.1.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8" + integrity sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q== + dependencies: + p-try "^1.0.0" + +p-limit@^3.0.2: + version "3.1.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" + integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== + dependencies: + yocto-queue "^0.1.0" + +p-locate@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" + integrity sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg== + dependencies: + p-limit "^1.1.0" + +p-locate@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" + integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== + dependencies: + p-limit "^3.0.2" + +p-map@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/p-map/-/p-map-4.0.0.tgz#bb2f95a5eda2ec168ec9274e06a747c3e2904d2b" + integrity sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ== + dependencies: + aggregate-error "^3.0.0" + +p-try@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" + integrity sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww== + +path-exists@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" + integrity sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ== + +path-exists@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" + integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== + +path-is-absolute@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== + +path-parse@^1.0.6: + version "1.0.7" + resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" + integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== + +pbkdf2@^3.0.17: + version "3.1.2" + resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.1.2.tgz#dd822aa0887580e52f1a039dc3eda108efae3075" + integrity sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA== + dependencies: + create-hash "^1.1.2" + create-hmac "^1.1.4" + ripemd160 "^2.0.1" + safe-buffer "^5.0.1" + sha.js "^2.4.8" + +picomatch@^2.0.4, picomatch@^2.2.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" + integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== + +queue-microtask@^1.2.2, queue-microtask@^1.2.3: + version "1.2.3" + resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" + integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== + +randombytes@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" + integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== + dependencies: + safe-buffer "^5.1.0" + +raw-body@^2.4.1: + version "2.5.2" + resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.5.2.tgz#99febd83b90e08975087e8f1f9419a149366b68a" + integrity sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA== + dependencies: + bytes "3.1.2" + http-errors "2.0.0" + iconv-lite "0.4.24" + unpipe "1.0.0" + +readable-stream@^3.6.0: + version "3.6.2" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.2.tgz#56a9b36ea965c00c5a93ef31eb111a0f11056967" + integrity sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA== + dependencies: + inherits "^2.0.3" + string_decoder "^1.1.1" + util-deprecate "^1.0.1" + +readdirp@~3.6.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" + integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== + dependencies: + picomatch "^2.2.1" + +require-directory@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" + integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== + +require-from-string@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" + integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== + +resolve@1.17.0: + version "1.17.0" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.17.0.tgz#b25941b54968231cc2d1bb76a79cb7f2c0bf8444" + integrity sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w== + dependencies: + path-parse "^1.0.6" + +rimraf@^2.2.8: + version "2.7.1" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" + integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== + dependencies: + glob "^7.1.3" + +ripemd160@^2.0.0, ripemd160@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c" + integrity sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA== + dependencies: + hash-base "^3.0.0" + inherits "^2.0.1" + +rlp@^2.2.3: + version "2.2.7" + resolved "https://registry.yarnpkg.com/rlp/-/rlp-2.2.7.tgz#33f31c4afac81124ac4b283e2bd4d9720b30beaf" + integrity sha512-d5gdPmgQ0Z+AklL2NVXr/IoSjNZFfTVvQWzL/AM2AOcSzYP2xjlb0AC8YyCLc41MSNf6P6QVtjgPdmVtzb+4lQ== + dependencies: + bn.js "^5.2.0" + +run-parallel-limit@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/run-parallel-limit/-/run-parallel-limit-1.1.0.tgz#be80e936f5768623a38a963262d6bef8ff11e7ba" + integrity sha512-jJA7irRNM91jaKc3Hcl1npHsFLOXOoTkPCUL1JEa1R82O2miplXXRaGdjW/KM/98YQWDhJLiSs793CnXfblJUw== + dependencies: + queue-microtask "^1.2.2" + +rustbn.js@~0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/rustbn.js/-/rustbn.js-0.2.0.tgz#8082cb886e707155fd1cb6f23bd591ab8d55d0ca" + integrity sha512-4VlvkRUuCJvr2J6Y0ImW7NvTCriMi7ErOAqWk1y69vAdoNIzCF3yPmgeNzx+RQTLEDFq5sHfscn1MwHxP9hNfA== + +safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.0, safe-buffer@~5.2.0: + version "5.2.1" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" + integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== + +safe-buffer@~5.1.1: + version "5.1.2" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" + integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== + +"safer-buffer@>= 2.1.2 < 3": + version "2.1.2" + resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" + integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== + +scrypt-js@3.0.1, scrypt-js@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/scrypt-js/-/scrypt-js-3.0.1.tgz#d314a57c2aef69d1ad98a138a21fe9eafa9ee312" + integrity sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA== + +secp256k1@^4.0.1: + version "4.0.3" + resolved "https://registry.yarnpkg.com/secp256k1/-/secp256k1-4.0.3.tgz#c4559ecd1b8d3c1827ed2d1b94190d69ce267303" + integrity sha512-NLZVf+ROMxwtEj3Xa562qgv2BK5e2WNmXPiOdVIPLgs6lyTzMvBq0aWTYMI5XCP9jZMVKOcqZLw/Wc4vDkuxhA== + dependencies: + elliptic "^6.5.4" + node-addon-api "^2.0.0" + node-gyp-build "^4.2.0" + +semver@^5.5.0: + version "5.7.2" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.2.tgz#48d55db737c3287cd4835e17fa13feace1c41ef8" + integrity sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g== + +semver@^6.3.0: + version "6.3.1" + resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" + integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== + +serialize-javascript@6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-6.0.0.tgz#efae5d88f45d7924141da8b5c3a7a7e663fefeb8" + integrity sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag== + dependencies: + randombytes "^2.1.0" + +setimmediate@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" + integrity sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA== + +setprototypeof@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424" + integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw== + +sha.js@^2.4.0, sha.js@^2.4.8: + version "2.4.11" + resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7" + integrity sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ== + dependencies: + inherits "^2.0.1" + safe-buffer "^5.0.1" + +solc@0.7.3: + version "0.7.3" + resolved "https://registry.yarnpkg.com/solc/-/solc-0.7.3.tgz#04646961bd867a744f63d2b4e3c0701ffdc7d78a" + integrity sha512-GAsWNAjGzIDg7VxzP6mPjdurby3IkGCjQcM8GFYZT6RyaoUZKmMU6Y7YwG+tFGhv7dwZ8rmR4iwFDrrD99JwqA== + dependencies: + command-exists "^1.2.8" + commander "3.0.2" + follow-redirects "^1.12.1" + fs-extra "^0.30.0" + js-sha3 "0.8.0" + memorystream "^0.3.1" + require-from-string "^2.0.0" + semver "^5.5.0" + tmp "0.0.33" + +source-map-support@^0.5.13: + version "0.5.21" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" + integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== + dependencies: + buffer-from "^1.0.0" + source-map "^0.6.0" + +source-map@^0.6.0: + version "0.6.1" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== + +stacktrace-parser@^0.1.10: + version "0.1.10" + resolved "https://registry.yarnpkg.com/stacktrace-parser/-/stacktrace-parser-0.1.10.tgz#29fb0cae4e0d0b85155879402857a1639eb6051a" + integrity sha512-KJP1OCML99+8fhOHxwwzyWrlUuVX5GQ0ZpJTd1DFXhdkrvg1szxfHhawXUZ3g9TkXORQd4/WG68jMlQZ2p8wlg== + dependencies: + type-fest "^0.7.1" + +statuses@2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/statuses/-/statuses-2.0.1.tgz#55cb000ccf1d48728bd23c685a063998cf1a1b63" + integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ== + +streamsearch@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/streamsearch/-/streamsearch-1.1.0.tgz#404dd1e2247ca94af554e841a8ef0eaa238da764" + integrity sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg== + +string-width@^4.1.0, string-width@^4.2.0: + version "4.2.3" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" + +string_decoder@^1.1.1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" + integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== + dependencies: + safe-buffer "~5.2.0" + +strip-ansi@^6.0.0, strip-ansi@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== + dependencies: + ansi-regex "^5.0.1" + +strip-hex-prefix@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/strip-hex-prefix/-/strip-hex-prefix-1.0.0.tgz#0c5f155fef1151373377de9dbb588da05500e36f" + integrity sha512-q8d4ue7JGEiVcypji1bALTos+0pWtyGlivAWyPuTkHzuTCJqrK9sWxYQZUq6Nq3cuyv3bm734IhHvHtGGURU6A== + dependencies: + is-hex-prefixed "1.0.0" + +strip-json-comments@3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" + integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== + +supports-color@8.1.1: + version "8.1.1" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" + integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== + dependencies: + has-flag "^4.0.0" + +supports-color@^5.3.0: + version "5.5.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" + integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== + dependencies: + has-flag "^3.0.0" + +supports-color@^7.1.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" + integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== + dependencies: + has-flag "^4.0.0" + +tmp@0.0.33: + version "0.0.33" + resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" + integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw== + dependencies: + os-tmpdir "~1.0.2" + +to-regex-range@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" + integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== + dependencies: + is-number "^7.0.0" + +toidentifier@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.1.tgz#3be34321a88a820ed1bd80dfaa33e479fbb8dd35" + integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA== + +tslib@^1.9.3: + version "1.14.1" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" + integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== + +tsort@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/tsort/-/tsort-0.0.1.tgz#e2280f5e817f8bf4275657fd0f9aebd44f5a2786" + integrity sha512-Tyrf5mxF8Ofs1tNoxA13lFeZ2Zrbd6cKbuH3V+MQ5sb6DtBj5FjrXVsRWT8YvNAQTqNoz66dz1WsbigI22aEnw== + +tweetnacl-util@^0.15.1: + version "0.15.1" + resolved "https://registry.yarnpkg.com/tweetnacl-util/-/tweetnacl-util-0.15.1.tgz#b80fcdb5c97bcc508be18c44a4be50f022eea00b" + integrity sha512-RKJBIj8lySrShN4w6i/BonWp2Z/uxwC3h4y7xsRrpP59ZboCd0GpEVsOnMDYLMmKBpYhb5TgHzZXy7wTfYFBRw== + +tweetnacl@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-1.0.3.tgz#ac0af71680458d8a6378d0d0d050ab1407d35596" + integrity sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw== + +type-fest@^0.21.3: + version "0.21.3" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.21.3.tgz#d260a24b0198436e133fa26a524a6d65fa3b2e37" + integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w== + +type-fest@^0.7.1: + version "0.7.1" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.7.1.tgz#8dda65feaf03ed78f0a3f9678f1869147f7c5c48" + integrity sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg== + +undici@^5.14.0: + version "5.24.0" + resolved "https://registry.yarnpkg.com/undici/-/undici-5.24.0.tgz#6133630372894cfeb3c3dab13b4c23866bd344b5" + integrity sha512-OKlckxBjFl0oXxcj9FU6oB8fDAaiRUq+D8jrFWGmOfI/gIyjk/IeS75LMzgYKUaeHzLUcYvf9bbJGSrUwTfwwQ== + dependencies: + busboy "^1.6.0" + +universalify@^0.1.0: + version "0.1.2" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" + integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== + +unpipe@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" + integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ== + +util-deprecate@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" + integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== + +uuid@^8.3.2: + version "8.3.2" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" + integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== + +workerpool@6.2.1: + version "6.2.1" + resolved "https://registry.yarnpkg.com/workerpool/-/workerpool-6.2.1.tgz#46fc150c17d826b86a008e5a4508656777e9c343" + integrity sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw== + +wrap-ansi@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" + integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + +wrappy@1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== + +ws@7.4.6: + version "7.4.6" + resolved "https://registry.yarnpkg.com/ws/-/ws-7.4.6.tgz#5654ca8ecdeee47c33a9a4bf6d28e2be2980377c" + integrity sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A== + +ws@^7.4.6: + version "7.5.9" + resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.9.tgz#54fa7db29f4c7cec68b1ddd3a89de099942bb591" + integrity sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q== + +y18n@^5.0.5: + version "5.0.8" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" + integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== + +yallist@^3.0.2: + version "3.1.1" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" + integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== + +yargs-parser@20.2.4: + version "20.2.4" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.4.tgz#b42890f14566796f85ae8e3a25290d205f154a54" + integrity sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA== + +yargs-parser@^20.2.2: + version "20.2.9" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee" + integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== + +yargs-unparser@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/yargs-unparser/-/yargs-unparser-2.0.0.tgz#f131f9226911ae5d9ad38c432fe809366c2325eb" + integrity sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA== + dependencies: + camelcase "^6.0.0" + decamelize "^4.0.0" + flat "^5.0.2" + is-plain-obj "^2.1.0" + +yargs@16.2.0: + version "16.2.0" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66" + integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw== + dependencies: + cliui "^7.0.2" + escalade "^3.1.1" + get-caller-file "^2.0.5" + require-directory "^2.1.1" + string-width "^4.2.0" + y18n "^5.0.5" + yargs-parser "^20.2.2" + +yocto-queue@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" + integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== From da15f2d7f3dcfba0f5633377372e2c196578de1e Mon Sep 17 00:00:00 2001 From: F4ever <1590415904a@gmail.com> Date: Mon, 11 Sep 2023 21:44:36 +0200 Subject: [PATCH 13/42] depoistor bot impr --- src/blockchain/contracts/deposit_security_module.py | 2 +- src/blockchain/deposit_strategy/curated_module.py | 5 +++++ src/bots/depositor.py | 6 ++++-- src/metrics/metrics.py | 1 + 4 files changed, 11 insertions(+), 3 deletions(-) diff --git a/src/blockchain/contracts/deposit_security_module.py b/src/blockchain/contracts/deposit_security_module.py index 687802ec..cb21e581 100644 --- a/src/blockchain/contracts/deposit_security_module.py +++ b/src/blockchain/contracts/deposit_security_module.py @@ -47,7 +47,7 @@ def deposit_buffered_ether( staking_module_id: int, nonce: int, deposit_call_data: bytes, - guardian_signatures: list[tuple[bytes, bytes]], + guardian_signatures: list[tuple[str, str]], ): """ Calls LIDO.deposit(maxDepositsPerBlock, stakingModuleId, depositCalldata). diff --git a/src/blockchain/deposit_strategy/curated_module.py b/src/blockchain/deposit_strategy/curated_module.py index 377a21f9..1d279f0a 100644 --- a/src/blockchain/deposit_strategy/curated_module.py +++ b/src/blockchain/deposit_strategy/curated_module.py @@ -31,6 +31,11 @@ def __init__(self, w3: Web3, module_id: int): def is_deposited_keys_amount_ok(self) -> bool: possible_deposits_amount = self._get_possible_deposits_amount() + + if possible_deposits_amount == 0: + logger.info({'msg': f'Possible deposits amount is {possible_deposits_amount}. Skip deposit.'}) + return False + recommended_max_gas = self._calculate_recommended_gas_based_on_deposit_amount(possible_deposits_amount) base_fee_per_gas = self._get_pending_base_fee() diff --git a/src/bots/depositor.py b/src/bots/depositor.py index 384e7bf2..26eaf539 100644 --- a/src/bots/depositor.py +++ b/src/bots/depositor.py @@ -133,6 +133,8 @@ def _get_quorum(self, module_id: int) -> Optional[list[DepositMessage]]: messages = self.message_storage.get_messages(actualize_filter) min_signs_to_deposit = self.w3.lido.deposit_security_module.get_guardian_quorum() + CURRENT_QUORUM_SIZE.labels('required').set(min_signs_to_deposit) + messages_by_block_hash = defaultdict(dict) max_quorum_size = 0 @@ -147,12 +149,12 @@ def _get_quorum(self, module_id: int) -> Optional[list[DepositMessage]]: quorum_size = len(unified_messages) if quorum_size >= min_signs_to_deposit: - CURRENT_QUORUM_SIZE.set(quorum_size) + CURRENT_QUORUM_SIZE.labels('current').set(quorum_size) return list(unified_messages) max_quorum_size = max(quorum_size, max_quorum_size) - CURRENT_QUORUM_SIZE.set(max_quorum_size) + CURRENT_QUORUM_SIZE.labels('current').set(max_quorum_size) def _get_message_actualize_filter(self, module_id: int) -> Callable[[DepositMessage], bool]: latest = self.w3.eth.get_block('latest') diff --git a/src/metrics/metrics.py b/src/metrics/metrics.py index eedae177..c5ca6527 100644 --- a/src/metrics/metrics.py +++ b/src/metrics/metrics.py @@ -45,6 +45,7 @@ CURRENT_QUORUM_SIZE = Gauge( 'quorum_size', 'Current quorum size', + ['type'], namespace=PREFIX, ) From 28f4301208511de8dec5438285d7638545504f19 Mon Sep 17 00:00:00 2001 From: F4ever <1590415904a@gmail.com> Date: Tue, 12 Sep 2023 09:56:40 +0200 Subject: [PATCH 14/42] add checksum test --- tests/transport/test_msg_storage.py | 32 +++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 tests/transport/test_msg_storage.py diff --git a/tests/transport/test_msg_storage.py b/tests/transport/test_msg_storage.py new file mode 100644 index 00000000..ed633032 --- /dev/null +++ b/tests/transport/test_msg_storage.py @@ -0,0 +1,32 @@ +import pytest + +from transport.msg_schemas import to_check_sum_address +from transport.msg_storage import MessageStorage + + +class Transport: + def get_messages(self): + return [ + {'guardianAddress': '0x5fd0ddbc3351d009eb3f88de7cd081a614c519f1'}, + {'guardianAddress': '0x3dc4cF780F2599B528F37dedB34449Fb65Ef7d4A'}, + ] + + +@pytest.fixture +def msg_storage(): + yield MessageStorage( + [Transport()], + filters=[ + to_check_sum_address, + ], + ) + + +@pytest.mark.unit +def test_checksum_address_parsing(msg_storage: MessageStorage): + updated_msgs = msg_storage.get_messages(lambda x: x) + + assert updated_msgs == [ + {'guardianAddress': '0x5fd0dDbC3351d009eb3f88DE7Cd081a614C519F1'}, + {'guardianAddress': '0x3dc4cF780F2599B528F37dedB34449Fb65Ef7d4A'}, + ] From c3f8daf64d695fe75c02c4d32e0cc162b018450e Mon Sep 17 00:00:00 2001 From: F4ever <1590415904a@gmail.com> Date: Tue, 12 Sep 2023 11:01:25 +0200 Subject: [PATCH 15/42] Add modules white list for deposit --- .env.example | 3 +++ README.md | 39 ++++++++++++++++++------------------ docker-compose.yml | 1 + src/bots/depositor.py | 4 ++++ src/depositor.py | 2 +- src/metrics/metrics.py | 2 +- src/pauser.py | 2 +- src/variables.py | 3 +++ tests/bots/test_depositor.py | 10 +++++++++ 9 files changed, 44 insertions(+), 22 deletions(-) diff --git a/.env.example b/.env.example index 3db16308..686c3562 100644 --- a/.env.example +++ b/.env.example @@ -31,3 +31,6 @@ CREATE_TRANSACTIONS=true # Görli: "https://relay-goerli.flashbots.net", FLASHBOTS_RPC=https://relay-goerli.flashbots.net FLASHBOT_SIGNATURE=0xbb0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ffaa + +# List of staking module's ids in which the depositor bot will make deposits +DEPOSIT_MODULES_WHITELIST=1 diff --git a/README.md b/README.md index 50620c09..0d40ed63 100644 --- a/README.md +++ b/README.md @@ -40,25 +40,26 @@ This deposit is executed using the depositBufferedEther function within the "Dep ### Required variables -| Variable | Default | Description | -|-----------------------------------------|--------------------------------------------|--------------------------------------------------------------------------------------------------------------------------| -| WEB3_RPC_ENDPOINTS | - | List of rpc endpoints that will be used to send requests comma separated (`,`) | -| WALLET_PRIVATE_KEY | - | Account private key | -| CREATE_TRANSACTIONS | false | If true then tx will be send to blockchain | -| LIDO_LOCATOR | 0xC1d0b3DE6792Bf6b4b37EccdcC24e45978Cfd2Eb | Lido Locator address. Mainnet by default. Other networks could be found [here](https://docs.lido.fi/deployed-contracts/) | -| DEPOSIT_CONTRACT | 0x00000000219ab540356cBB839Cbe05303d7705Fa | Ethereum deposit contract address | -| -------------------------------------- | -------------------------------------- | ----------------------------------------- | -| TRANSPORTS | - | Transports used in bot. One of/or both: rabbit/kafka | -| RABBIT_MQ_URL | - | RabbitMQ url | -| RABBIT_MQ_USERNAME | - | RabbitMQ username for virtualhost | -| RABBIT_MQ_PASSWORD | - | RabbitMQ password for virtualhost | -| -------------------------------------- | --- _kafka is not used at the moment_ --- | ----------------------------------------- | -| KAFKA_BROKER_ADDRESS_1 | - | Kafka servers url and port | -| KAFKA_USERNAME | - | Kafka username | -| KAFKA_PASSWORD | - | Password for kafka | -| KAFKA_NETWORK | - | Network type (mainnet or goerli) | -| KAFKA_TOPIC | - | Kafka topic name (for msg receiving) | -| KAFKA_GROUP_PREFIX | - | Just for staging (staging-) | +| Variable | Default | Description | +|----------------------------------------|--------------------------------------------|--------------------------------------------------------------------------------------------------------------------------| +| WEB3_RPC_ENDPOINTS | - | List of rpc endpoints that will be used to send requests comma separated (`,`) | +| WALLET_PRIVATE_KEY | - | Account private key | +| CREATE_TRANSACTIONS | false | If true then tx will be send to blockchain | +| LIDO_LOCATOR | 0xC1d0b3DE6792Bf6b4b37EccdcC24e45978Cfd2Eb | Lido Locator address. Mainnet by default. Other networks could be found [here](https://docs.lido.fi/deployed-contracts/) | +| DEPOSIT_CONTRACT | 0x00000000219ab540356cBB839Cbe05303d7705Fa | Ethereum deposit contract address | +| DEPOSIT_MODULES_WHITELIST | - | List of staking module's ids in which the depositor bot will make deposits | +| -------------------------------------- | -------------------------------------- | ----------------------------------------- | +| TRANSPORTS | - | Transports used in bot. One of/or both: rabbit/kafka | +| RABBIT_MQ_URL | - | RabbitMQ url | +| RABBIT_MQ_USERNAME | - | RabbitMQ username for virtualhost | +| RABBIT_MQ_PASSWORD | - | RabbitMQ password for virtualhost | +| -------------------------------------- | --- _kafka is not used at the moment_ --- | ----------------------------------------- | +| KAFKA_BROKER_ADDRESS_1 | - | Kafka servers url and port | +| KAFKA_USERNAME | - | Kafka username | +| KAFKA_PASSWORD | - | Password for kafka | +| KAFKA_NETWORK | - | Network type (mainnet or goerli) | +| KAFKA_TOPIC | - | Kafka topic name (for msg receiving) | +| KAFKA_GROUP_PREFIX | - | Just for staging (staging-) | ### Additional variables diff --git a/docker-compose.yml b/docker-compose.yml index 54248be3..9aa0c649 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -17,6 +17,7 @@ services: - RABBIT_MQ_PASSWORD=${RABBIT_MQ_PASSWORD} - FLASHBOTS_RPC=${FLASHBOTS_RPC} - FLASHBOT_SIGNATURE=${FLASHBOT_SIGNATURE} + - DEPOSIT_MODULES_WHITELIST=${DEPOSIT_MODULES_WHITELIST} command: src/depositor.py lido-pause-bot: diff --git a/src/bots/depositor.py b/src/bots/depositor.py index 3813c075..fa84b1a6 100644 --- a/src/bots/depositor.py +++ b/src/bots/depositor.py @@ -75,6 +75,10 @@ def execute(self, block: BlockData) -> bool: module_ids = self.w3.lido.staking_router.get_staking_module_ids() for module_id in module_ids: + if module_id not in variables.DEPOSIT_MODULES_WHITELIST: + logger.info({'msg': f'Module [{module_id}] not in white list. Skip deposit for module.'}) + continue + logger.info({'msg': f'Do deposit for module with id: {module_id}.'}) try: self._deposit_to_module(module_id) diff --git a/src/depositor.py b/src/depositor.py index 23849526..d2d617a5 100644 --- a/src/depositor.py +++ b/src/depositor.py @@ -35,9 +35,9 @@ def main(): variables.GAS_PRIORITY_FEE_PERCENTILE, variables.MIN_PRIORITY_FEE, variables.MAX_PRIORITY_FEE, - variables.KAFKA_TOPIC, variables.ACCOUNT.address if variables.ACCOUNT else '0x0', variables.CREATE_TRANSACTIONS, + variables.DEPOSIT_MODULES_WHITELIST, ) logger.info({'msg': 'Connect MultiHTTPProviders.', 'rpc_count': len(variables.WEB3_RPC_ENDPOINTS)}) diff --git a/src/metrics/metrics.py b/src/metrics/metrics.py index eedae177..9faf7f1c 100644 --- a/src/metrics/metrics.py +++ b/src/metrics/metrics.py @@ -12,9 +12,9 @@ 'gas_priority_fee_percentile', 'min_priority_fee', 'max_priority_fee', - 'kafka_topic', 'account_address', 'create_transactions', + 'modules_whitelist', ], namespace=PREFIX) GAS_FEE = Gauge('gas_fee', 'Gas fee', ['type', 'module_id'], namespace=PREFIX) diff --git a/src/pauser.py b/src/pauser.py index a83ad537..d86b82fe 100644 --- a/src/pauser.py +++ b/src/pauser.py @@ -33,9 +33,9 @@ def main(): None, None, None, - variables.KAFKA_TOPIC, variables.ACCOUNT.address if variables.ACCOUNT else '0x0', variables.CREATE_TRANSACTIONS, + None, ) logger.info({'msg': 'Connect MultiHTTPProviders.', 'rpc_count': len(variables.WEB3_RPC_ENDPOINTS)}) diff --git a/src/variables.py b/src/variables.py index 236e3e81..5fe8572c 100644 --- a/src/variables.py +++ b/src/variables.py @@ -75,3 +75,6 @@ PROMETHEUS_PORT = int(os.getenv('PROMETHEUS_PORT', '9000')) PULSE_SERVER_PORT = int(os.getenv('PULSE_SERVER_PORT', '9010')) MAX_CYCLE_LIFETIME_IN_SECONDS = int(os.getenv('MAX_CYCLE_LIFETIME_IN_SECONDS', '1200')) + +# List of ids of staking modules in which the depositor bot will make deposits +DEPOSIT_MODULES_WHITELIST = [int(module_id) for module_id in os.getenv('MESSAGE_TRANSPORTS', '1').split(',')] diff --git a/tests/bots/test_depositor.py b/tests/bots/test_depositor.py index 40b62e22..134eb9c9 100644 --- a/tests/bots/test_depositor.py +++ b/tests/bots/test_depositor.py @@ -18,6 +18,7 @@ @pytest.fixture def depositor_bot(web3_lido_unit, block_data): variables.MESSAGE_TRANSPORTS = '' + variables.DEPOSIT_MODULES_WHITELIST = [1, 2] web3_lido_unit.lido.staking_router.get_staking_module_ids = Mock(return_value=[1, 2]) web3_lido_unit.eth.get_block = Mock(return_value=block_data) yield DepositorBot(web3_lido_unit) @@ -56,6 +57,15 @@ def test_depositor_check_all_modules(depositor_bot, block_data): assert depositor_bot._deposit_to_module.call_count == 2 +@pytest.mark.unit +def test_depositor_deposit_only_to_one_module(depositor_bot, block_data): + variables.DEPOSIT_MODULES_WHITELIST = [2] + depositor_bot._deposit_to_module = Mock(return_value=False) + depositor_bot.execute(block_data) + + assert depositor_bot._deposit_to_module.call_count == 1 + + @pytest.mark.unit def test_depositor_one_module_deposited(depositor_bot, block_data): depositor_bot._deposit_to_module = Mock(return_value=True) From 76f2494d239ebe9806968f82302a30ee0160094e Mon Sep 17 00:00:00 2001 From: F4ever <1590415904a@gmail.com> Date: Thu, 14 Sep 2023 09:28:05 +0200 Subject: [PATCH 16/42] Update node version --- .github/workflows/tests_and_checks.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/tests_and_checks.yml b/.github/workflows/tests_and_checks.yml index 350e4201..9d6fb8d0 100644 --- a/.github/workflows/tests_and_checks.yml +++ b/.github/workflows/tests_and_checks.yml @@ -33,7 +33,7 @@ jobs: - name: Set up node uses: actions/setup-node@v3.0.0 with: - node-version: 'lts/*' + node-version: '18.17.1' cache: 'yarn' - name: Install dependencies From cdff89bd20b11eb5e0c00ee6e6d0dfc83b551050 Mon Sep 17 00:00:00 2001 From: F4ever <1590415904a@gmail.com> Date: Thu, 14 Sep 2023 10:05:47 +0200 Subject: [PATCH 17/42] fix var name --- src/variables.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/variables.py b/src/variables.py index 5fe8572c..1e8d1407 100644 --- a/src/variables.py +++ b/src/variables.py @@ -77,4 +77,4 @@ MAX_CYCLE_LIFETIME_IN_SECONDS = int(os.getenv('MAX_CYCLE_LIFETIME_IN_SECONDS', '1200')) # List of ids of staking modules in which the depositor bot will make deposits -DEPOSIT_MODULES_WHITELIST = [int(module_id) for module_id in os.getenv('MESSAGE_TRANSPORTS', '1').split(',')] +DEPOSIT_MODULES_WHITELIST = [int(module_id) for module_id in os.getenv('DEPOSIT_MODULES_WHITELIST', '1').split(',')] From 69206e9af2ca2b58350078fc7a0d50743679df5a Mon Sep 17 00:00:00 2001 From: F4ever <1590415904a@gmail.com> Date: Fri, 15 Sep 2023 12:31:05 +0200 Subject: [PATCH 18/42] Add get max deposits func --- src/blockchain/contracts/deposit_security_module.py | 12 ++++++++++++ .../contracts/test_deposit_security_module.py | 1 + 2 files changed, 13 insertions(+) diff --git a/src/blockchain/contracts/deposit_security_module.py b/src/blockchain/contracts/deposit_security_module.py index cb21e581..a9cedbe3 100644 --- a/src/blockchain/contracts/deposit_security_module.py +++ b/src/blockchain/contracts/deposit_security_module.py @@ -127,3 +127,15 @@ def pause_deposits( guardian_signature, )}) return tx + + def get_max_deposits(self, block_identifier: BlockIdentifier = 'latest'): + """ + Returns maxDepositsPerBlock + """ + response = self.functions.getMaxDeposits().call(block_identifier=block_identifier) + logger.info({ + 'msg': f'Call `getMaxDeposits()`.', + 'value': response, + 'block_identifier': block_identifier.__repr__(), + }) + return response diff --git a/tests/blockchain/contracts/test_deposit_security_module.py b/tests/blockchain/contracts/test_deposit_security_module.py index e9c40f70..7509d192 100644 --- a/tests/blockchain/contracts/test_deposit_security_module.py +++ b/tests/blockchain/contracts/test_deposit_security_module.py @@ -16,6 +16,7 @@ def test_deposit_security_module_call(deposit_security_module, caplog): ('can_deposit', (1,), lambda response: check_value_type(response, bool)), ('get_pause_message_prefix', None, lambda response: check_value_type(response, bytes)), ('get_pause_intent_validity_period_blocks', None, lambda response: check_value_type(response, int)), + ('get_max_deposits', None, lambda response: check_value_type(response, int)), ], caplog, ) From a9cbde0edbf21e2520e8b2b56939d877f3a07b74 Mon Sep 17 00:00:00 2001 From: F4ever <1590415904a@gmail.com> Date: Fri, 15 Sep 2023 12:31:31 +0200 Subject: [PATCH 19/42] rename to max deposits count --- src/blockchain/contracts/staking_router.py | 2 +- src/blockchain/deposit_strategy/curated_module.py | 2 +- tests/blockchain/contracts/test_staking_router.py | 2 +- tests/blockchain/deposit_strategy/test_curated_module.py | 4 ++-- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/blockchain/contracts/staking_router.py b/src/blockchain/contracts/staking_router.py index 020ceb40..b284408d 100644 --- a/src/blockchain/contracts/staking_router.py +++ b/src/blockchain/contracts/staking_router.py @@ -47,7 +47,7 @@ def get_staking_module_nonce( }) return response - def get_staking_module_deposits_count( + def get_staking_module_max_deposits_count( self, staking_module_id: int, depositable_ether: Wei, diff --git a/src/blockchain/deposit_strategy/curated_module.py b/src/blockchain/deposit_strategy/curated_module.py index 1d279f0a..bf01bc2f 100644 --- a/src/blockchain/deposit_strategy/curated_module.py +++ b/src/blockchain/deposit_strategy/curated_module.py @@ -45,7 +45,7 @@ def _get_possible_deposits_amount(self) -> int: depositable_ether = self.w3.lido.lido.get_depositable_ether() DEPOSITABLE_ETHER.labels(self.module_id).set(depositable_ether) - possible_deposits_amount = self.w3.lido.staking_router.get_staking_module_deposits_count( + possible_deposits_amount = self.w3.lido.staking_router.get_staking_module_max_deposits_count( self.module_id, depositable_ether, ) diff --git a/tests/blockchain/contracts/test_staking_router.py b/tests/blockchain/contracts/test_staking_router.py index 62e1b318..3deef7ac 100644 --- a/tests/blockchain/contracts/test_staking_router.py +++ b/tests/blockchain/contracts/test_staking_router.py @@ -13,7 +13,7 @@ def test_staking_router_call(staking_router, caplog): [check_value_type(x, int) for x in response]), ('is_staking_module_active', (1,), lambda response: check_value_type(response, bool)), ('get_staking_module_nonce', (1,), lambda response: check_value_type(response, int)), - ('get_staking_module_deposits_count', (1, 100*10**18), lambda response: check_value_type(response, int)), + ('get_staking_module_max_deposits_count', (1, 100*10**18), lambda response: check_value_type(response, int)), ], caplog, ) diff --git a/tests/blockchain/deposit_strategy/test_curated_module.py b/tests/blockchain/deposit_strategy/test_curated_module.py index 98fddd7f..2f518ddb 100644 --- a/tests/blockchain/deposit_strategy/test_curated_module.py +++ b/tests/blockchain/deposit_strategy/test_curated_module.py @@ -33,10 +33,10 @@ def test_get_possible_deposits_amount(cmds): possible_deposits = depositable_eth // 32 cmds.w3.lido.lido.get_depositable_ether = Mock(return_value=depositable_eth) - cmds.w3.lido.staking_router.get_staking_module_deposits_count = Mock(return_value=possible_deposits) + cmds.w3.lido.staking_router.get_staking_module_max_deposits_count = Mock(return_value=possible_deposits) assert cmds._get_possible_deposits_amount() == possible_deposits - cmds.w3.lido.staking_router.get_staking_module_deposits_count.assert_called_once_with( + cmds.w3.lido.staking_router.get_staking_module_max_deposits_count.assert_called_once_with( MODULE_ID, depositable_eth, ) From 579f9040cace35329a23d3dd3433ca0b48b207b1 Mon Sep 17 00:00:00 2001 From: F4ever <1590415904a@gmail.com> Date: Fri, 15 Sep 2023 15:45:41 +0200 Subject: [PATCH 20/42] add preferred deposit module func --- .../prefered_module_to_deposit.py | 50 +++++++++++++++++++ src/bots/depositor.py | 14 ++---- .../test_get_prefered_module_to_deposit.py | 48 ++++++++++++++++++ 3 files changed, 103 insertions(+), 9 deletions(-) create mode 100644 src/blockchain/deposit_strategy/prefered_module_to_deposit.py create mode 100644 tests/blockchain/deposit_strategy/test_get_prefered_module_to_deposit.py diff --git a/src/blockchain/deposit_strategy/prefered_module_to_deposit.py b/src/blockchain/deposit_strategy/prefered_module_to_deposit.py new file mode 100644 index 00000000..4d48ff46 --- /dev/null +++ b/src/blockchain/deposit_strategy/prefered_module_to_deposit.py @@ -0,0 +1,50 @@ +from typing import Optional + +from blockchain.typings import Web3 + + +def get_preferred_to_deposit_module(w3: Web3, whitelist_modules: list[int]) -> Optional[int]: + """ + Returns preferable module to deposit to make deposits balanced following the rules specified in Staking Router. + Order is + 1. What module can accept bigger deposit? Checks available keys amount + 2. Check which module accepts more staking allocation + """ + active_modules = get_active_modules(w3, whitelist_modules) + + if not active_modules: + return None + + stats = get_modules_stats(w3, active_modules) + + # Return module id + return stats[0][2] + + +def get_active_modules(w3: Web3, whitelist_modules: list[int]) -> list[int]: + # Get all module ids + modules = w3.lido.staking_router.get_staking_module_ids() + + # Filter not-whitelisted modules + modules = [module for module in modules if module in whitelist_modules] + + # Filter not-active modules + modules = [module for module in modules if w3.lido.staking_router.is_staking_module_active(module)] + + return modules + + +def get_modules_stats(w3: Web3, modules: list[int]) -> list[tuple[int, int, int]]: + max_deposits_count = w3.lido.deposit_security_module.get_max_deposits() + depositable_ether = w3.lido.lido.get_depositable_ether() + + module_stats = [( + w3.lido.staking_router.get_staking_module_max_deposits_count(module, depositable_ether), + w3.lido.staking_router.get_staking_module_max_deposits_count(module, max_deposits_count * 32 * 10 ** 18), + module, + ) for module in modules + ] + + module_stats = sorted(module_stats, reverse=True) + + return module_stats diff --git a/src/bots/depositor.py b/src/bots/depositor.py index 7bd7274a..3a73516c 100644 --- a/src/bots/depositor.py +++ b/src/bots/depositor.py @@ -10,6 +10,7 @@ from blockchain.deposit_strategy.curated_module import CuratedModuleDepositStrategy from blockchain.deposit_strategy.interface import ModuleDepositStrategyInterface +from blockchain.deposit_strategy.prefered_module_to_deposit import get_preferred_to_deposit_module from blockchain.typings import Web3 from cryptography.verify_signature import compute_vs from metrics.metrics import ( @@ -74,14 +75,10 @@ def __init__(self, w3: Web3): def execute(self, block: BlockData) -> bool: self._check_balance() - module_ids = self.w3.lido.staking_router.get_staking_module_ids() + module_id = get_preferred_to_deposit_module(self.w3, variables.DEPOSIT_MODULES_WHITELIST) - for module_id in module_ids: - if module_id not in variables.DEPOSIT_MODULES_WHITELIST: - logger.info({'msg': f'Module [{module_id}] not in white list. Skip deposit for module.'}) - continue - - logger.info({'msg': f'Do deposit for module with id: {module_id}.'}) + if module_id: + logger.info({'msg': f'Do deposit to module with id: {module_id}.'}) try: self._deposit_to_module(module_id) except ModuleNotSupportedError as error: @@ -121,8 +118,7 @@ def _deposit_to_module(self, module_id: int) -> bool: return False def _get_module_strategy(self, module_id: int) -> ModuleDepositStrategyInterface: - # ToDo somehow support different gas strategies for different module types - if module_id == 1: + if module_id in (1, 2): return CuratedModuleDepositStrategy(self.w3, module_id) raise ModuleNotSupportedError(f'Module with id: {module_id} is not supported yet.') diff --git a/tests/blockchain/deposit_strategy/test_get_prefered_module_to_deposit.py b/tests/blockchain/deposit_strategy/test_get_prefered_module_to_deposit.py new file mode 100644 index 00000000..2c0023d5 --- /dev/null +++ b/tests/blockchain/deposit_strategy/test_get_prefered_module_to_deposit.py @@ -0,0 +1,48 @@ +from unittest.mock import Mock + +import pytest + +from blockchain.deposit_strategy.prefered_module_to_deposit import ( + get_preferred_to_deposit_module, + get_active_modules, + get_modules_stats, +) + + +@pytest.mark.unit +def test_get_preferred_to_deposit_module(web3_lido_unit): + modules = list(range(10)) + + web3_lido_unit.lido.deposit_security_module.get_max_deposits = Mock(return_value=100) + web3_lido_unit.lido.lido.get_depositable_ether = Mock(return_value=10 * 32 * 10 ** 18) + web3_lido_unit.lido.staking_router.get_staking_module_ids = Mock(return_value=modules) + web3_lido_unit.lido.staking_router.get_staking_module_max_deposits_count = Mock(return_value=0) + + result = get_preferred_to_deposit_module(web3_lido_unit, modules[:-2]) + + assert result == 7 + + +def test_active_modules(web3_lido_unit): + web3_lido_unit.lido.staking_router.get_staking_module_ids = Mock(return_value=[1, 2, 3, 4, 5, 6]) + web3_lido_unit.lido.staking_router.is_staking_module_active = lambda x: x % 2 + + modules_list = get_active_modules(web3_lido_unit, [1, 2, 3, 4]) + + assert modules_list == [1, 3] + + +def test_get_module_stats(web3_lido_unit): + web3_lido_unit.lido.deposit_security_module.get_max_deposits = Mock(return_value=100) + web3_lido_unit.lido.lido.get_depositable_ether = Mock(return_value=10 * 32 * 10 ** 18) + web3_lido_unit.lido.staking_router.get_staking_module_max_deposits_count = lambda x, y: x % 3 + + stats = get_modules_stats(web3_lido_unit, modules=list(range(8))) + + for i in range(len(stats) - 1): + assert stats[i][0] >= stats[i + 1][0] + + if stats[i][1] > stats[i + 1][1]: + assert stats[i][2] <= stats[i - 1][2] + elif stats[i][1] == stats[i + 1][1]: + assert stats[i][0] == stats[i + 1][0] From 1a5af55d540c9048ccade0d8c672013877e7f403 Mon Sep 17 00:00:00 2001 From: F4ever <1590415904a@gmail.com> Date: Fri, 15 Sep 2023 16:07:00 +0200 Subject: [PATCH 21/42] fix tests --- tests/bots/test_depositor.py | 24 +++++++----------------- 1 file changed, 7 insertions(+), 17 deletions(-) diff --git a/tests/bots/test_depositor.py b/tests/bots/test_depositor.py index bc4fc3e2..094abfd7 100644 --- a/tests/bots/test_depositor.py +++ b/tests/bots/test_depositor.py @@ -50,28 +50,18 @@ def deposit_message(): @pytest.mark.unit -def test_depositor_check_all_modules(depositor_bot, block_data): - depositor_bot._deposit_to_module = Mock(return_value=False) - depositor_bot.execute(block_data) - - assert depositor_bot._deposit_to_module.call_count == 2 - - -@pytest.mark.unit -def test_depositor_deposit_only_to_one_module(depositor_bot, block_data): - variables.DEPOSIT_MODULES_WHITELIST = [2] - depositor_bot._deposit_to_module = Mock(return_value=False) - depositor_bot.execute(block_data) - - assert depositor_bot._deposit_to_module.call_count == 1 +def test_depositor_one_module_deposited(depositor_bot, block_data): + modules = list(range(10)) + depositor_bot.w3.lido.deposit_security_module.get_max_deposits = Mock(return_value=100) + depositor_bot.w3.lido.lido.get_depositable_ether = Mock(return_value=10 * 32 * 10 ** 18) + depositor_bot.w3.lido.staking_router.get_staking_module_ids = Mock(return_value=modules) + depositor_bot.w3.lido.staking_router.get_staking_module_max_deposits_count = Mock(return_value=0) -@pytest.mark.unit -def test_depositor_one_module_deposited(depositor_bot, block_data): depositor_bot._deposit_to_module = Mock(return_value=True) depositor_bot.execute(block_data) - assert depositor_bot._deposit_to_module.call_count == 2 + assert depositor_bot._deposit_to_module.call_count == 1 @pytest.mark.unit From e0f4a3e445453af8953ac53f59ef6d3054a7cd1e Mon Sep 17 00:00:00 2001 From: F4ever <1590415904a@gmail.com> Date: Mon, 18 Sep 2023 10:05:05 +0200 Subject: [PATCH 22/42] fix log message for metrics --- src/blockchain/web3_extentions/transaction.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/blockchain/web3_extentions/transaction.py b/src/blockchain/web3_extentions/transaction.py index c2095bed..58a2510e 100644 --- a/src/blockchain/web3_extentions/transaction.py +++ b/src/blockchain/web3_extentions/transaction.py @@ -92,7 +92,7 @@ def flashbots_send( except TransactionNotFound: return False else: - logger.info({'msg': 'Transaction mined.', 'value': rec[-1]['transactionHash'].hex()}) + logger.info({'msg': 'Transaction found.', 'value': rec[-1]['transactionHash'].hex()}) return True def classic_send(self, signed_tx: SignedTransaction, timeout_in_blocks: int) -> bool: @@ -102,7 +102,7 @@ def classic_send(self, signed_tx: SignedTransaction, timeout_in_blocks: int) -> logger.error({'msg': 'Transaction reverted.', 'value': str(error)}) return False - logger.info({'msg': 'Transaction sent.', 'value': tx_hash.hex()}) + logger.info({'msg': 'Transaction found.', 'value': tx_hash.hex()}) try: tx_receipt = self.web3.eth.wait_for_transaction_receipt(tx_hash, (timeout_in_blocks + 1) * SLOT_TIME) except TimeExhausted: From 6359387d5a89df98108aa0d75dc9692d8703d8d3 Mon Sep 17 00:00:00 2001 From: F4ever <1590415904a@gmail.com> Date: Mon, 18 Sep 2023 14:29:47 +0200 Subject: [PATCH 23/42] timeout tweak --- src/blockchain/executer.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/blockchain/executer.py b/src/blockchain/executer.py index 3ad3b544..40683e17 100644 --- a/src/blockchain/executer.py +++ b/src/blockchain/executer.py @@ -59,8 +59,8 @@ def _wait_for_new_block_and_execute(self) -> Any: def _wait_until_next_block(self) -> BlockData: with TimeoutManager(max( # Wait at least 5 slots before throw exception - 5 * SLOT_TIME, - self.blocks_between_execution * SLOT_TIME * 2 + 12 * SLOT_TIME, + self.blocks_between_execution * SLOT_TIME * 8 )): while True: latest_block: BlockData = self.w3.eth.get_block('latest') From 4f6c1d7d5f57399723cca2de70199ec746062f08 Mon Sep 17 00:00:00 2001 From: F4ever <1590415904a@gmail.com> Date: Mon, 18 Sep 2023 14:31:40 +0200 Subject: [PATCH 24/42] tweak vars --- src/blockchain/executer.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/blockchain/executer.py b/src/blockchain/executer.py index 40683e17..fe14b5ef 100644 --- a/src/blockchain/executer.py +++ b/src/blockchain/executer.py @@ -59,8 +59,8 @@ def _wait_for_new_block_and_execute(self) -> Any: def _wait_until_next_block(self) -> BlockData: with TimeoutManager(max( # Wait at least 5 slots before throw exception - 12 * SLOT_TIME, - self.blocks_between_execution * SLOT_TIME * 8 + 32 * SLOT_TIME, + self.blocks_between_execution * SLOT_TIME * 4 )): while True: latest_block: BlockData = self.w3.eth.get_block('latest') From 16561d8314705e58ccba51b96db2624ca3676d59 Mon Sep 17 00:00:00 2001 From: F4ever <1590415904a@gmail.com> Date: Mon, 18 Sep 2023 15:10:52 +0200 Subject: [PATCH 25/42] error to str --- src/transport/msg_providers/stomp/client.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/transport/msg_providers/stomp/client.py b/src/transport/msg_providers/stomp/client.py index 1e604a26..e9216e3a 100644 --- a/src/transport/msg_providers/stomp/client.py +++ b/src/transport/msg_providers/stomp/client.py @@ -55,7 +55,7 @@ def _on_close(self, ws_app, *args): self.on_close() def _on_error(self, ws_app, error, *args): - logging.error({'msg': 'Websocket error.', 'error': error}) + logging.error({'msg': 'Websocket error.', 'error': str(error)}) def _on_message(self, ws_app, message, *args): logging.debug("\n<<< " + str(message)) From 6a3b52dbd31ca9c8fa39886b570701f847d75e0a Mon Sep 17 00:00:00 2001 From: F4ever <1590415904a@gmail.com> Date: Mon, 18 Sep 2023 17:06:13 +0200 Subject: [PATCH 26/42] fix log --- src/blockchain/web3_extentions/transaction.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/blockchain/web3_extentions/transaction.py b/src/blockchain/web3_extentions/transaction.py index 58a2510e..62c3300e 100644 --- a/src/blockchain/web3_extentions/transaction.py +++ b/src/blockchain/web3_extentions/transaction.py @@ -92,7 +92,7 @@ def flashbots_send( except TransactionNotFound: return False else: - logger.info({'msg': 'Transaction found.', 'value': rec[-1]['transactionHash'].hex()}) + logger.info({'msg': 'Sent transaction found.', 'value': rec[-1]['transactionHash'].hex()}) return True def classic_send(self, signed_tx: SignedTransaction, timeout_in_blocks: int) -> bool: @@ -102,7 +102,7 @@ def classic_send(self, signed_tx: SignedTransaction, timeout_in_blocks: int) -> logger.error({'msg': 'Transaction reverted.', 'value': str(error)}) return False - logger.info({'msg': 'Transaction found.', 'value': tx_hash.hex()}) + logger.info({'msg': 'Sent transaction found.', 'value': tx_hash.hex()}) try: tx_receipt = self.web3.eth.wait_for_transaction_receipt(tx_hash, (timeout_in_blocks + 1) * SLOT_TIME) except TimeExhausted: From fc9a9c5ae2624bc26cf996560bedd19ed4ae93d9 Mon Sep 17 00:00:00 2001 From: F4ever <1590415904a@gmail.com> Date: Thu, 21 Sep 2023 11:02:12 +0200 Subject: [PATCH 27/42] from TRANSPORTS to MESSAGE_TRANSPORTS --- README.md | 4 ++-- docker-compose.yml | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 3d022cfe..b07f3b3a 100644 --- a/README.md +++ b/README.md @@ -30,7 +30,7 @@ This deposit is executed using the depositBufferedEther function within the "Dep - Set WEB3_RPC_ENDPOINTS - Set WALLET_PRIVATE_KEY - Set CREATE_TRANSACTIONS to true - - Set TRANSPORTS to rabbit + - Set MESSAGE_TRANSPORTS to rabbit - Set RABBIT_MQ_URL, RABBIT_MQ_USERNAME and RABBIT_MQ_PASSWORD 3. ```docker-compose up``` 4. Send metrics and logs to grafana @@ -49,7 +49,7 @@ This deposit is executed using the depositBufferedEther function within the "Dep | DEPOSIT_CONTRACT | 0x00000000219ab540356cBB839Cbe05303d7705Fa | Ethereum deposit contract address | | DEPOSIT_MODULES_WHITELIST | - | List of staking module's ids in which the depositor bot will make deposits | | --- | --- | --- | -| TRANSPORTS | - | Transports used in bot. One of/or both: rabbit/kafka | +| MESSAGE_TRANSPORTS | - | Transports used in bot. One of/or both: rabbit/kafka | | RABBIT_MQ_URL | - | RabbitMQ url | | RABBIT_MQ_USERNAME | - | RabbitMQ username for virtualhost | | RABBIT_MQ_PASSWORD | - | RabbitMQ password for virtualhost | diff --git a/docker-compose.yml b/docker-compose.yml index 9aa0c649..612f878e 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -11,7 +11,7 @@ services: - WEB3_RPC_ENDPOINTS=${WEB3_RPC_ENDPOINTS} - WALLET_PRIVATE_KEY=${WALLET_PRIVATE_KEY} - CREATE_TRANSACTIONS=${CREATE_TRANSACTIONS} - - TRANSPORTS=${TRANSPORTS} + - MESSAGE_TRANSPORTS=${MESSAGE_TRANSPORTS} - RABBIT_MQ_URL=${RABBIT_MQ_URL} - RABBIT_MQ_USERNAME=${RABBIT_MQ_USERNAME} - RABBIT_MQ_PASSWORD=${RABBIT_MQ_PASSWORD} @@ -31,7 +31,7 @@ services: - WEB3_RPC_ENDPOINTS=${WEB3_RPC_ENDPOINTS} - WALLET_PRIVATE_KEY=${WALLET_PRIVATE_KEY} - CREATE_TRANSACTIONS=${CREATE_TRANSACTIONS} - - TRANSPORTS=${TRANSPORTS} + - MESSAGE_TRANSPORTS=${MESSAGE_TRANSPORTS} - RABBIT_MQ_URL=${RABBIT_MQ_URL} - RABBIT_MQ_USERNAME=${RABBIT_MQ_USERNAME} - RABBIT_MQ_PASSWORD=${RABBIT_MQ_PASSWORD} From 0668580dde6d199418d34e4f4a3b3cbbdfde2f6f Mon Sep 17 00:00:00 2001 From: F4ever <1590415904a@gmail.com> Date: Thu, 21 Sep 2023 11:12:00 +0200 Subject: [PATCH 28/42] remove max check deposits --- README.md | 2 +- src/blockchain/contracts/deposit_security_module.py | 13 ------------- src/blockchain/deposit_strategy/curated_module.py | 7 +++---- .../deposit_strategy/prefered_module_to_deposit.py | 6 ++---- src/blockchain/{executer.py => executor.py} | 0 .../contracts/test_deposit_security_module.py | 3 +-- .../test_get_prefered_module_to_deposit.py | 10 ++++------ tests/bots/test_depositor.py | 2 -- 8 files changed, 11 insertions(+), 32 deletions(-) rename src/blockchain/{executer.py => executor.py} (100%) diff --git a/README.md b/README.md index b07f3b3a..83c6074c 100644 --- a/README.md +++ b/README.md @@ -49,7 +49,7 @@ This deposit is executed using the depositBufferedEther function within the "Dep | DEPOSIT_CONTRACT | 0x00000000219ab540356cBB839Cbe05303d7705Fa | Ethereum deposit contract address | | DEPOSIT_MODULES_WHITELIST | - | List of staking module's ids in which the depositor bot will make deposits | | --- | --- | --- | -| MESSAGE_TRANSPORTS | - | Transports used in bot. One of/or both: rabbit/kafka | +| MESSAGE_TRANSPORTS | - | Transports used in bot. One of/or both: rabbit/kafka | | RABBIT_MQ_URL | - | RabbitMQ url | | RABBIT_MQ_USERNAME | - | RabbitMQ username for virtualhost | | RABBIT_MQ_PASSWORD | - | RabbitMQ password for virtualhost | diff --git a/src/blockchain/contracts/deposit_security_module.py b/src/blockchain/contracts/deposit_security_module.py index a9cedbe3..ea4c1a30 100644 --- a/src/blockchain/contracts/deposit_security_module.py +++ b/src/blockchain/contracts/deposit_security_module.py @@ -5,7 +5,6 @@ from blockchain.contracts.base_interface import ContractInterface - logger = logging.getLogger(__name__) @@ -127,15 +126,3 @@ def pause_deposits( guardian_signature, )}) return tx - - def get_max_deposits(self, block_identifier: BlockIdentifier = 'latest'): - """ - Returns maxDepositsPerBlock - """ - response = self.functions.getMaxDeposits().call(block_identifier=block_identifier) - logger.info({ - 'msg': f'Call `getMaxDeposits()`.', - 'value': response, - 'block_identifier': block_identifier.__repr__(), - }) - return response diff --git a/src/blockchain/deposit_strategy/curated_module.py b/src/blockchain/deposit_strategy/curated_module.py index bf01bc2f..bb51a2e2 100644 --- a/src/blockchain/deposit_strategy/curated_module.py +++ b/src/blockchain/deposit_strategy/curated_module.py @@ -10,7 +10,6 @@ from blockchain.deposit_strategy.interface import ModuleDepositStrategyInterface from metrics.metrics import GAS_FEE, DEPOSITABLE_ETHER, POSSIBLE_DEPOSITS_AMOUNT - logger = logging.getLogger(__name__) @@ -61,7 +60,7 @@ def _calculate_recommended_gas_based_on_deposit_amount(self, deposits_amount: in GAS_FEE.labels('based_on_buffer_fee', self.module_id).set(recommended_max_gas) return recommended_max_gas - def _get_pending_base_fee(self): + def _get_pending_base_fee(self) -> Wei: base_fee_per_gas = self.w3.eth.get_block('pending')['baseFeePerGas'] logger.info({'msg': 'Fetch base_fee_per_gas for pending block.', 'value': base_fee_per_gas}) return base_fee_per_gas @@ -81,9 +80,9 @@ def is_gas_price_ok(self) -> bool: return recommended_gas_fee >= current_gas_fee - def _get_recommended_gas_fee(self): + def _get_recommended_gas_fee(self) -> Wei: gas_history = self._fetch_gas_fee_history(variables.GAS_FEE_PERCENTILE_DAYS_HISTORY_1) - return int(numpy.percentile(gas_history, variables.GAS_FEE_PERCENTILE_1)) + return Wei(int(numpy.percentile(gas_history, variables.GAS_FEE_PERCENTILE_1))) def _fetch_gas_fee_history(self, days: int) -> list[int]: latest_block_num = self.w3.eth.get_block('latest')['number'] diff --git a/src/blockchain/deposit_strategy/prefered_module_to_deposit.py b/src/blockchain/deposit_strategy/prefered_module_to_deposit.py index 4d48ff46..82118816 100644 --- a/src/blockchain/deposit_strategy/prefered_module_to_deposit.py +++ b/src/blockchain/deposit_strategy/prefered_module_to_deposit.py @@ -18,7 +18,7 @@ def get_preferred_to_deposit_module(w3: Web3, whitelist_modules: list[int]) -> O stats = get_modules_stats(w3, active_modules) # Return module id - return stats[0][2] + return stats[0][1] def get_active_modules(w3: Web3, whitelist_modules: list[int]) -> list[int]: @@ -34,13 +34,11 @@ def get_active_modules(w3: Web3, whitelist_modules: list[int]) -> list[int]: return modules -def get_modules_stats(w3: Web3, modules: list[int]) -> list[tuple[int, int, int]]: - max_deposits_count = w3.lido.deposit_security_module.get_max_deposits() +def get_modules_stats(w3: Web3, modules: list[int]) -> list[tuple[int, int]]: depositable_ether = w3.lido.lido.get_depositable_ether() module_stats = [( w3.lido.staking_router.get_staking_module_max_deposits_count(module, depositable_ether), - w3.lido.staking_router.get_staking_module_max_deposits_count(module, max_deposits_count * 32 * 10 ** 18), module, ) for module in modules ] diff --git a/src/blockchain/executer.py b/src/blockchain/executor.py similarity index 100% rename from src/blockchain/executer.py rename to src/blockchain/executor.py diff --git a/tests/blockchain/contracts/test_deposit_security_module.py b/tests/blockchain/contracts/test_deposit_security_module.py index 7509d192..9e329945 100644 --- a/tests/blockchain/contracts/test_deposit_security_module.py +++ b/tests/blockchain/contracts/test_deposit_security_module.py @@ -1,7 +1,7 @@ import pytest from tests.utils.contract_utils import check_contract -from tests.utils.regrex import HASH_REGREX, check_value_re, check_value_type, ADDRESS_REGREX +from tests.utils.regrex import check_value_re, check_value_type, ADDRESS_REGREX @pytest.mark.integration @@ -16,7 +16,6 @@ def test_deposit_security_module_call(deposit_security_module, caplog): ('can_deposit', (1,), lambda response: check_value_type(response, bool)), ('get_pause_message_prefix', None, lambda response: check_value_type(response, bytes)), ('get_pause_intent_validity_period_blocks', None, lambda response: check_value_type(response, int)), - ('get_max_deposits', None, lambda response: check_value_type(response, int)), ], caplog, ) diff --git a/tests/blockchain/deposit_strategy/test_get_prefered_module_to_deposit.py b/tests/blockchain/deposit_strategy/test_get_prefered_module_to_deposit.py index 2c0023d5..cc9eb5aa 100644 --- a/tests/blockchain/deposit_strategy/test_get_prefered_module_to_deposit.py +++ b/tests/blockchain/deposit_strategy/test_get_prefered_module_to_deposit.py @@ -13,7 +13,6 @@ def test_get_preferred_to_deposit_module(web3_lido_unit): modules = list(range(10)) - web3_lido_unit.lido.deposit_security_module.get_max_deposits = Mock(return_value=100) web3_lido_unit.lido.lido.get_depositable_ether = Mock(return_value=10 * 32 * 10 ** 18) web3_lido_unit.lido.staking_router.get_staking_module_ids = Mock(return_value=modules) web3_lido_unit.lido.staking_router.get_staking_module_max_deposits_count = Mock(return_value=0) @@ -23,6 +22,7 @@ def test_get_preferred_to_deposit_module(web3_lido_unit): assert result == 7 +@pytest.mark.unit def test_active_modules(web3_lido_unit): web3_lido_unit.lido.staking_router.get_staking_module_ids = Mock(return_value=[1, 2, 3, 4, 5, 6]) web3_lido_unit.lido.staking_router.is_staking_module_active = lambda x: x % 2 @@ -32,8 +32,8 @@ def test_active_modules(web3_lido_unit): assert modules_list == [1, 3] +@pytest.mark.unit def test_get_module_stats(web3_lido_unit): - web3_lido_unit.lido.deposit_security_module.get_max_deposits = Mock(return_value=100) web3_lido_unit.lido.lido.get_depositable_ether = Mock(return_value=10 * 32 * 10 ** 18) web3_lido_unit.lido.staking_router.get_staking_module_max_deposits_count = lambda x, y: x % 3 @@ -42,7 +42,5 @@ def test_get_module_stats(web3_lido_unit): for i in range(len(stats) - 1): assert stats[i][0] >= stats[i + 1][0] - if stats[i][1] > stats[i + 1][1]: - assert stats[i][2] <= stats[i - 1][2] - elif stats[i][1] == stats[i + 1][1]: - assert stats[i][0] == stats[i + 1][0] + if stats[i][0] == stats[i + 1][0]: + assert stats[i + 1][1] < stats[i][1] diff --git a/tests/bots/test_depositor.py b/tests/bots/test_depositor.py index 094abfd7..5b793e57 100644 --- a/tests/bots/test_depositor.py +++ b/tests/bots/test_depositor.py @@ -7,7 +7,6 @@ from bots.depositor import DepositorBot from tests.conftest import DSM_OWNER - COUNCIL_ADDRESS_1 = '0x70997970C51812dc3A010C7d01b50e0d17dc79C8' COUNCIL_PK_1 = '0x59c6995e998f97a5a0044966f0945389dc9e86dae88c7a8412f4603b6b78690d' @@ -53,7 +52,6 @@ def deposit_message(): def test_depositor_one_module_deposited(depositor_bot, block_data): modules = list(range(10)) - depositor_bot.w3.lido.deposit_security_module.get_max_deposits = Mock(return_value=100) depositor_bot.w3.lido.lido.get_depositable_ether = Mock(return_value=10 * 32 * 10 ** 18) depositor_bot.w3.lido.staking_router.get_staking_module_ids = Mock(return_value=modules) depositor_bot.w3.lido.staking_router.get_staking_module_max_deposits_count = Mock(return_value=0) From 455325cd3782c63b4d8c257018dc02c57c159446 Mon Sep 17 00:00:00 2001 From: F4ever <1590415904a@gmail.com> Date: Thu, 21 Sep 2023 11:47:58 +0200 Subject: [PATCH 29/42] review fixes --- README.md | 2 +- src/blockchain/web3_extentions/transaction.py | 7 +++---- src/bots/depositor.py | 10 +++++++--- src/bots/{pause.py => pauser.py} | 0 src/depositor.py | 9 ++++----- src/metrics/metrics.py | 11 +++++++++-- src/metrics/transport_message_metrics.py | 5 ++--- src/pauser.py | 9 ++++----- src/transport/msg_schemas.py | 12 +++++++----- tests/bots/test_depositor.py | 12 ++++++++++++ 10 files changed, 49 insertions(+), 28 deletions(-) rename src/bots/{pause.py => pauser.py} (100%) diff --git a/README.md b/README.md index 83c6074c..97414f21 100644 --- a/README.md +++ b/README.md @@ -47,7 +47,7 @@ This deposit is executed using the depositBufferedEther function within the "Dep | CREATE_TRANSACTIONS | false | If true then tx will be send to blockchain | | LIDO_LOCATOR | 0xC1d0b3DE6792Bf6b4b37EccdcC24e45978Cfd2Eb | Lido Locator address. Mainnet by default. Other networks could be found [here](https://docs.lido.fi/deployed-contracts/) | | DEPOSIT_CONTRACT | 0x00000000219ab540356cBB839Cbe05303d7705Fa | Ethereum deposit contract address | -| DEPOSIT_MODULES_WHITELIST | - | List of staking module's ids in which the depositor bot will make deposits | +| DEPOSIT_MODULES_WHITELIST | 1 | List of staking module's ids in which the depositor bot will make deposits | | --- | --- | --- | | MESSAGE_TRANSPORTS | - | Transports used in bot. One of/or both: rabbit/kafka | | RABBIT_MQ_URL | - | RabbitMQ url | diff --git a/src/blockchain/web3_extentions/transaction.py b/src/blockchain/web3_extentions/transaction.py index 62c3300e..bafad7fa 100644 --- a/src/blockchain/web3_extentions/transaction.py +++ b/src/blockchain/web3_extentions/transaction.py @@ -10,7 +10,6 @@ from blockchain.constants import SLOT_TIME from metrics.metrics import TX_SEND - logger = logging.getLogger(__name__) @@ -92,7 +91,7 @@ def flashbots_send( except TransactionNotFound: return False else: - logger.info({'msg': 'Sent transaction found.', 'value': rec[-1]['transactionHash'].hex()}) + logger.info({'msg': 'Sent transaction included in blockchain.', 'value': rec[-1]['transactionHash'].hex()}) return True def classic_send(self, signed_tx: SignedTransaction, timeout_in_blocks: int) -> bool: @@ -102,13 +101,13 @@ def classic_send(self, signed_tx: SignedTransaction, timeout_in_blocks: int) -> logger.error({'msg': 'Transaction reverted.', 'value': str(error)}) return False - logger.info({'msg': 'Sent transaction found.', 'value': tx_hash.hex()}) + logger.info({'msg': 'Transaction sent.', 'value': tx_hash.hex()}) try: tx_receipt = self.web3.eth.wait_for_transaction_receipt(tx_hash, (timeout_in_blocks + 1) * SLOT_TIME) except TimeExhausted: return False - logger.info({'msg': 'Transaction found', 'value': tx_receipt['transactionHash'].hex()}) + logger.info({'msg': 'Sent transaction included in blockchain.', 'value': tx_receipt['transactionHash'].hex()}) return True def _get_priority_fee(self, percentile: int, min_priority_fee: Wei, max_priority_fee: Wei): diff --git a/src/bots/depositor.py b/src/bots/depositor.py index 3a73516c..c01c4f9e 100644 --- a/src/bots/depositor.py +++ b/src/bots/depositor.py @@ -7,14 +7,15 @@ from web3.types import BlockData import variables - from blockchain.deposit_strategy.curated_module import CuratedModuleDepositStrategy from blockchain.deposit_strategy.interface import ModuleDepositStrategyInterface from blockchain.deposit_strategy.prefered_module_to_deposit import get_preferred_to_deposit_module from blockchain.typings import Web3 from cryptography.verify_signature import compute_vs from metrics.metrics import ( - ACCOUNT_BALANCE, CURRENT_QUORUM_SIZE, + ACCOUNT_BALANCE, + CURRENT_QUORUM_SIZE, + UNEXPECTED_EXCEPTIONS, ) from metrics.transport_message_metrics import message_metrics_filter from transport.msg_providers.kafka import KafkaMessageProvider @@ -29,7 +30,6 @@ from transport.msg_storage import MessageStorage from transport.types import TransportType - logger = logging.getLogger(__name__) @@ -165,6 +165,10 @@ def _get_message_actualize_filter(self, module_id: int) -> Callable[[DepositMess def message_filter(message: DepositMessage) -> bool: if message['guardianAddress'] not in guardians_list: + UNEXPECTED_EXCEPTIONS.labels('unexpected_guardian_address').inc() + return False + + if message['stakingModuleId'] != module_id: return False if message['blockNumber'] < latest['number'] - 200: diff --git a/src/bots/pause.py b/src/bots/pauser.py similarity index 100% rename from src/bots/pause.py rename to src/bots/pauser.py diff --git a/src/depositor.py b/src/depositor.py index d2d617a5..bf3892e0 100644 --- a/src/depositor.py +++ b/src/depositor.py @@ -1,19 +1,18 @@ -from prometheus_client import start_http_server +from blockchain.executer import Executor from flashbots import flashbot +from prometheus_client import start_http_server from web3 import Web3 from web3_multi_provider import FallbackProvider import variables -from blockchain.executer import Executor from blockchain.web3_extentions.lido_contracts import LidoContracts +from blockchain.web3_extentions.requests_metric_middleware import add_requests_metric_middleware from blockchain.web3_extentions.transaction import TransactionUtils from bots.depositor import DepositorBot from metrics.healthcheck_pulse import start_pulse_server from metrics.logging import logging -from blockchain.web3_extentions.requests_metric_middleware import add_requests_metric_middleware from metrics.metrics import BUILD_INFO - logger = logging.getLogger(__name__) @@ -67,7 +66,7 @@ def main(): 5, variables.MAX_CYCLE_LIFETIME_IN_SECONDS, ) - logger.info({'msg': 'Rum executor.'}) + logger.info({'msg': 'Execute depositor as daemon.'}) e.execute_as_daemon() diff --git a/src/metrics/metrics.py b/src/metrics/metrics.py index 234b4a63..183947a4 100644 --- a/src/metrics/metrics.py +++ b/src/metrics/metrics.py @@ -26,13 +26,13 @@ DEPOSIT_MESSAGES = Gauge( 'deposit_messages', 'Guardians deposit messages', - ['address', 'version'], + ['address', 'module_id', 'version'], namespace=PREFIX, ) PAUSE_MESSAGES = Gauge( 'pause_messages', 'Guardians pause messages', - ['address', 'version'], + ['address', 'module_id', 'version'], namespace=PREFIX, ) PING_MESSAGES = Gauge( @@ -74,3 +74,10 @@ ['method', 'code', 'domain'], namespace=PREFIX ) + +UNEXPECTED_EXCEPTIONS = Counter( + 'unexpected_exceptions', + 'Total count of unexpected exceptions', + ['type'], + namespace=PREFIX, +) diff --git a/src/metrics/transport_message_metrics.py b/src/metrics/transport_message_metrics.py index 2e7baa40..1e1f3e2e 100644 --- a/src/metrics/transport_message_metrics.py +++ b/src/metrics/transport_message_metrics.py @@ -4,7 +4,6 @@ from transport.msg_providers.rabbit import MessageType from transport.msg_schemas import DepositMessage - logger = logging.getLogger(__name__) @@ -15,11 +14,11 @@ def message_metrics_filter(msg: DepositMessage) -> bool: address, version = msg.get('guardianAddress'), msg.get('app', {}).get('version') if msg_type == MessageType.PAUSE: - PAUSE_MESSAGES.labels(address, version).inc() + PAUSE_MESSAGES.labels(address, msg.get('stakingModuleId', -1), version).inc() return True if msg_type == MessageType.DEPOSIT: - DEPOSIT_MESSAGES.labels(address, version).inc() + DEPOSIT_MESSAGES.labels(address, msg.get('stakingModuleId', -1), version).inc() return True elif msg_type == MessageType.PING: diff --git a/src/pauser.py b/src/pauser.py index d86b82fe..619a230f 100644 --- a/src/pauser.py +++ b/src/pauser.py @@ -1,18 +1,17 @@ +from blockchain.executer import Executor +from bots.pause import PauserBot from prometheus_client import start_http_server from web3 import Web3 from web3_multi_provider import FallbackProvider import variables -from blockchain.executer import Executor from blockchain.web3_extentions.lido_contracts import LidoContracts +from blockchain.web3_extentions.requests_metric_middleware import add_requests_metric_middleware from blockchain.web3_extentions.transaction import TransactionUtils -from bots.pause import PauserBot from metrics.healthcheck_pulse import start_pulse_server from metrics.logging import logging -from blockchain.web3_extentions.requests_metric_middleware import add_requests_metric_middleware from metrics.metrics import BUILD_INFO - logger = logging.getLogger(__name__) @@ -60,7 +59,7 @@ def main(): 1, variables.MAX_CYCLE_LIFETIME_IN_SECONDS, ) - logger.info({'msg': 'Rum executor.'}) + logger.info({'msg': 'Execute depositor as daemon.'}) e.execute_as_daemon() diff --git a/src/transport/msg_schemas.py b/src/transport/msg_schemas.py index 54db33cd..d5ce6b82 100644 --- a/src/transport/msg_schemas.py +++ b/src/transport/msg_schemas.py @@ -6,7 +6,7 @@ from web3 import Web3 from cryptography.verify_signature import verify_message_with_signature - +from metrics.metrics import UNEXPECTED_EXCEPTIONS logger = logging.getLogger(__name__) @@ -74,11 +74,11 @@ class DepositMessage(TypedDict): app: dict -def get_deposit_messages_sign_filter(attestation_prefix: bytes) -> Callable: +def get_deposit_messages_sign_filter(deposit_prefix: bytes) -> Callable: """Returns filter that checks message validity""" def check_deposit_messages(msg: DepositMessage) -> bool: verified = verify_message_with_signature( - data=[attestation_prefix, msg['blockNumber'], msg['blockHash'], msg['depositRoot'], msg['stakingModuleId'], msg['nonce']], + data=[deposit_prefix, msg['blockNumber'], msg['blockHash'], msg['depositRoot'], msg['stakingModuleId'], msg['nonce']], abi=['bytes32', 'uint256', 'bytes32', 'bytes32', 'uint256', 'uint256'], address=msg['guardianAddress'], vrs=( @@ -90,6 +90,7 @@ def check_deposit_messages(msg: DepositMessage) -> bool: if not verified: logger.error({'msg': 'Message verification failed.', 'value': msg}) + UNEXPECTED_EXCEPTIONS.labels('deposit_message_verification_failed').inc() return verified @@ -130,10 +131,10 @@ class PauseMessage(TypedDict): stakingModuleId: int -def get_pause_messages_sign_filter(attestation_prefix: bytes) -> Callable: +def get_pause_messages_sign_filter(pause_prefix: bytes) -> Callable: def check_pause_message(msg: PauseMessage) -> bool: verified = verify_message_with_signature( - data=[attestation_prefix, msg['blockNumber'], msg['stakingModuleId']], + data=[pause_prefix, msg['blockNumber'], msg['stakingModuleId']], abi=['bytes32', 'uint256', 'uint256'], address=msg['guardianAddress'], vrs=( @@ -145,6 +146,7 @@ def check_pause_message(msg: PauseMessage) -> bool: if not verified: logger.error({'msg': 'Message verification failed.', 'value': msg}) + UNEXPECTED_EXCEPTIONS.labels('pause_message_verification_failed').inc() return verified diff --git a/tests/bots/test_depositor.py b/tests/bots/test_depositor.py index 5b793e57..7d3da621 100644 --- a/tests/bots/test_depositor.py +++ b/tests/bots/test_depositor.py @@ -135,6 +135,18 @@ def test_depositor_message_actualizer_not_guardian(setup_deposit_message, deposi assert not list(filter(message_filter, [deposit_message])) +@pytest.mark.unit +def test_depositor_message_actualizer_no_selected_module(setup_deposit_message, depositor_bot, deposit_message, block_data): + second = deposit_message.copy() + second['stakingModuleId'] = 2 + + message_filter = depositor_bot._get_message_actualize_filter(2) + assert not list(filter(message_filter, [ + deposit_message, + ])) + assert len(list(filter(message_filter, [deposit_message, second]))) == 1 + + @pytest.mark.unit def test_depositor_message_actualizer_outdated(setup_deposit_message, depositor_bot, deposit_message, block_data): deposit_message['blockNumber'] = block_data['number'] - 250 From e4fe57793a495605992839d75867642ef49c85d4 Mon Sep 17 00:00:00 2001 From: F4ever <1590415904a@gmail.com> Date: Thu, 21 Sep 2023 11:56:09 +0200 Subject: [PATCH 30/42] fix imports --- src/depositor.py | 2 +- src/pauser.py | 4 ++-- tests/bots/test_executor.py | 2 +- tests/bots/test_pauser.py | 5 +---- 4 files changed, 5 insertions(+), 8 deletions(-) diff --git a/src/depositor.py b/src/depositor.py index bf3892e0..50b1d491 100644 --- a/src/depositor.py +++ b/src/depositor.py @@ -1,10 +1,10 @@ -from blockchain.executer import Executor from flashbots import flashbot from prometheus_client import start_http_server from web3 import Web3 from web3_multi_provider import FallbackProvider import variables +from blockchain.executor import Executor from blockchain.web3_extentions.lido_contracts import LidoContracts from blockchain.web3_extentions.requests_metric_middleware import add_requests_metric_middleware from blockchain.web3_extentions.transaction import TransactionUtils diff --git a/src/pauser.py b/src/pauser.py index 619a230f..da367e32 100644 --- a/src/pauser.py +++ b/src/pauser.py @@ -1,13 +1,13 @@ -from blockchain.executer import Executor -from bots.pause import PauserBot from prometheus_client import start_http_server from web3 import Web3 from web3_multi_provider import FallbackProvider import variables +from blockchain.executor import Executor from blockchain.web3_extentions.lido_contracts import LidoContracts from blockchain.web3_extentions.requests_metric_middleware import add_requests_metric_middleware from blockchain.web3_extentions.transaction import TransactionUtils +from bots.pauser import PauserBot from metrics.healthcheck_pulse import start_pulse_server from metrics.logging import logging from metrics.metrics import BUILD_INFO diff --git a/tests/bots/test_executor.py b/tests/bots/test_executor.py index 80f71f8a..35970320 100644 --- a/tests/bots/test_executor.py +++ b/tests/bots/test_executor.py @@ -4,7 +4,7 @@ import pytest from web3.types import BlockData -from blockchain.executer import Executor +from blockchain.executor import Executor from metrics import healthcheck_pulse from utils.timeout import TimeoutManagerError diff --git a/tests/bots/test_pauser.py b/tests/bots/test_pauser.py index c6b4e55a..e2e57ae0 100644 --- a/tests/bots/test_pauser.py +++ b/tests/bots/test_pauser.py @@ -1,12 +1,9 @@ from unittest.mock import Mock import pytest -from eth_abi import encode -from eth_account.messages import encode_defunct, encode_structured_data -from eth_hash.backends.pycryptodome import keccak256 import variables -from bots.pause import PauserBot +from bots.pauser import PauserBot from tests.conftest import DSM_OWNER # WARNING: These accounts, and their private keys, are publicly known. From 2178ff09ddbca01a931332b50926ea643d2d723b Mon Sep 17 00:00:00 2001 From: F4ever <1590415904a@gmail.com> Date: Thu, 21 Sep 2023 13:54:14 +0200 Subject: [PATCH 31/42] add gas estimation --- src/blockchain/web3_extentions/transaction.py | 21 +++++++++++++++- .../blockchain/web3_extentions/transaction.py | 25 +++++++++++++++++++ tests/fixtures/provider.py | 5 +++- 3 files changed, 49 insertions(+), 2 deletions(-) diff --git a/src/blockchain/web3_extentions/transaction.py b/src/blockchain/web3_extentions/transaction.py index bafad7fa..c0afad22 100644 --- a/src/blockchain/web3_extentions/transaction.py +++ b/src/blockchain/web3_extentions/transaction.py @@ -1,6 +1,7 @@ import logging from eth_account.datastructures import SignedTransaction +from eth_typing import ChecksumAddress from web3.contract import ContractFunction from web3.exceptions import ContractLogicError, TransactionNotFound, TimeExhausted from web3.module import Module @@ -47,10 +48,12 @@ def send( variables.MAX_PRIORITY_FEE, ) + gas_limit = self._estimate_gas(transaction, variables.ACCOUNT.address) + transaction_dict = transaction.build_transaction({ 'from': variables.ACCOUNT.address, # TODO Estimate gas and min(contract_gas_limit, estimated_gas * 1.3) - 'gas': variables.CONTRACT_GAS_LIMIT, + 'gas': gas_limit, 'maxFeePerGas': pending['baseFeePerGas'] * 2 + priority, 'maxPriorityFeePerGas': priority, "nonce": self.web3.eth.get_transaction_count(variables.ACCOUNT.address), @@ -73,6 +76,22 @@ def send( return status + @staticmethod + def _estimate_gas(transaction: ContractFunction, account_address: ChecksumAddress) -> int: + try: + gas = transaction.estimate_gas({'from': account_address}) + except ContractLogicError as error: + logger.warning({'msg': 'Can not estimate gas. Contract logic error.', 'error': str(error)}) + return variables.CONTRACT_GAS_LIMIT + except ValueError as error: + logger.warning({'msg': 'Can not estimate gas. Execution reverted.', 'error': str(error)}) + return variables.CONTRACT_GAS_LIMIT + + return min( + variables.CONTRACT_GAS_LIMIT, + int(gas * 1.3), + ) + def flashbots_send( self, signed_tx: SignedTransaction, diff --git a/tests/blockchain/web3_extentions/transaction.py b/tests/blockchain/web3_extentions/transaction.py index f12acfee..5a9c27ae 100644 --- a/tests/blockchain/web3_extentions/transaction.py +++ b/tests/blockchain/web3_extentions/transaction.py @@ -2,6 +2,7 @@ from unittest.mock import Mock import pytest +from web3.exceptions import ContractLogicError import variables from blockchain.web3_extentions.transaction import TransactionUtils @@ -35,3 +36,27 @@ def test_protector_create_tx(web3_lido_unit, set_integration_account, caplog): variables.CREATE_TRANSACTIONS = False tu.send(None, False, 10) assert 'Dry mode activated. Sending transaction skipped.' in caplog.messages[-1] + + +class Transaction: + args = {} + + def estimate_gas(self, params: dict) -> int: + return 0 + + +@pytest.mark.unit +def test_estimate_gas(web3_lido_unit, set_account): + tx = Transaction() + + tx.estimate_gas = Mock(return_value=variables.CONTRACT_GAS_LIMIT * 2) + gas_amount = web3_lido_unit.transaction._estimate_gas(tx, variables.ACCOUNT.address) + assert gas_amount == variables.CONTRACT_GAS_LIMIT + + tx.estimate_gas = Mock(return_value=100) + gas_amount = web3_lido_unit.transaction._estimate_gas(tx, variables.ACCOUNT.address) + assert gas_amount == 130 + + tx.estimate_gas = Mock(side_effect=ContractLogicError()) + gas_amount = web3_lido_unit.transaction._estimate_gas(tx, variables.ACCOUNT.address) + assert gas_amount == variables.CONTRACT_GAS_LIMIT diff --git a/tests/fixtures/provider.py b/tests/fixtures/provider.py index 80ae4eb3..8c28a36b 100644 --- a/tests/fixtures/provider.py +++ b/tests/fixtures/provider.py @@ -14,7 +14,10 @@ def web3_lido_unit(): web3 = Web3() web3.lido = Mock() - web3.transaction = Mock() + web3.attach_modules({ + 'transaction': TransactionUtils, + }) + yield web3 From 568ab936c3db5efb83a9e49f3b1e02ebe67df0d4 Mon Sep 17 00:00:00 2001 From: Raman Siamionau Date: Mon, 25 Sep 2023 15:30:13 +0200 Subject: [PATCH 32/42] add chronix --- chronix.config.js | 9 + package.json | 8 +- src/metrics/metrics.py | 1 + tests/fixtures/provider.py | 27 +- yarn.lock | 5648 +++++++++++++++++++++++++++++++++++- 5 files changed, 5620 insertions(+), 73 deletions(-) create mode 100644 chronix.config.js diff --git a/chronix.config.js b/chronix.config.js new file mode 100644 index 00000000..fd7088af --- /dev/null +++ b/chronix.config.js @@ -0,0 +1,9 @@ +module.exports = { + engine: { + port: 8080, + }, + commands: { + test: 'poetry run pytest tests -m integration', + }, + plugins: ['simple-dvt-v1'], +}; diff --git a/package.json b/package.json index 798f8707..de692d7c 100644 --- a/package.json +++ b/package.json @@ -1,5 +1,11 @@ { "devDependencies": { - "hardhat": "^2.17.3" + "chronix": "0.0.2-beta-plugin-v10", + "dotenv": "^16.3.1", + "hardhat": "^2.17.3", + "simple-dvt-v1": "0.0.5" + }, + "scripts": { + "postinstall": "chronix compile" } } diff --git a/src/metrics/metrics.py b/src/metrics/metrics.py index 183947a4..5552d0bc 100644 --- a/src/metrics/metrics.py +++ b/src/metrics/metrics.py @@ -55,6 +55,7 @@ ['module_id'], namespace=PREFIX, ) + POSSIBLE_DEPOSITS_AMOUNT = Gauge( 'possible_deposits_amount', 'Possible deposits amount.', diff --git a/tests/fixtures/provider.py b/tests/fixtures/provider.py index 8c28a36b..7b44dffd 100644 --- a/tests/fixtures/provider.py +++ b/tests/fixtures/provider.py @@ -1,6 +1,7 @@ from unittest.mock import Mock import pytest +import requests from web3 import Web3 from web3_multi_provider import FallbackProvider @@ -17,14 +18,36 @@ def web3_lido_unit(): web3.attach_modules({ 'transaction': TransactionUtils, }) - + yield web3 # -- Integration fixtures -- @pytest.fixture def web3_provider_integration(): - yield Web3(FallbackProvider(variables.WEB3_RPC_ENDPOINTS)) + chronix_url = 'http://0.0.0.0:8080/' + hardhat_path = 'v1/env/hardhat/' + + response = requests.put( + chronix_url + hardhat_path, + json={ + 'chainId': 1, + 'fork': variables.WEB3_RPC_ENDPOINTS[0], + 'mining': { + 'auto': True, + 'interval': 12000 + } + }, + headers={ + 'Content-Type': 'application/json' + }, + ) + + port = response.json()['data']['port'] + + yield Web3(FallbackProvider([f'http://0.0.0.0:{port}/'])) + + requests.delete(chronix_url + hardhat_path, json={'port': port}) @pytest.fixture diff --git a/yarn.lock b/yarn.lock index 84099851..80d7b108 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,6 +2,176 @@ # yarn lockfile v1 +"@aragon/apps-agent@^2.1.0": + version "2.1.0" + resolved "https://registry.yarnpkg.com/@aragon/apps-agent/-/apps-agent-2.1.0.tgz#eab53abd9f0e99755a6d2bd1891f0ffaa6d6581e" + integrity sha512-N8D1RaHkfOYUVrs6o26epGCo/xRgXQfgNVETD6SPEt5JQqjR3XxgeOqMJ0xmdqWGJ+78BoghPavrOH2RuMKkiQ== + dependencies: + "@aragon/apps-vault" "4.1.0" + "@aragon/os" "4.2.0" + eth-provider "^0.2.5" + +"@aragon/apps-finance@^3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@aragon/apps-finance/-/apps-finance-3.0.0.tgz#db8177fd6a0ca820c99c9dc117c0eb1da77238e7" + integrity sha512-6wzsyVEQ2rQpvZyEXtUNUodtJYcB504SsxH6EL36wdf8jcjfAgLId2pA3IrYseUUYTegL0baQWykbzKAcKm59w== + dependencies: + "@aragon/apps-vault" "^4.0.0" + "@aragon/os" "4.2.0" + +"@aragon/apps-lido@lidofinance/aragon-apps#master": + version "1.0.0" + resolved "https://codeload.github.com/lidofinance/aragon-apps/tar.gz/b09834d29c0db211ddd50f50905cbeff257fc8e0" + +"@aragon/apps-vault@4.1.0", "@aragon/apps-vault@^4.0.0", "@aragon/apps-vault@^4.1.0": + version "4.1.0" + resolved "https://registry.yarnpkg.com/@aragon/apps-vault/-/apps-vault-4.1.0.tgz#8a755a1205807fa3c85c528613d07a3427980b39" + integrity sha512-TwCeCjMcTBNa0DOX6050wk5JMQbFAaFiwJDmROO4rsobq29p1JdEgf+/laPxS8ogKf4DMwADe9tf4L3sfCegQw== + dependencies: + "@aragon/os" "4.2.0" + +"@aragon/contract-helpers-test@^0.1.0": + version "0.1.0" + resolved "https://registry.yarnpkg.com/@aragon/contract-helpers-test/-/contract-helpers-test-0.1.0.tgz#5c5f09739a0b33ab66843bc4849cb2b997d88af0" + integrity sha512-xP2CqqP0Jw/6Jdo1mRg4OxL+3gmsCYV3EJRy7xN8xUrhQIqkOyRptC44X951O7Cr+VeqXJq22rpZSr01TJZhNg== + dependencies: + web3-eth-abi "1.2.5" + web3-utils "1.2.5" + +"@aragon/hardhat-aragon@^1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@aragon/hardhat-aragon/-/hardhat-aragon-1.0.0.tgz#f1f0e8fc8d0d3a22e821e1ccb3c8da7d27b31542" + integrity sha512-DQ3Ce0N+Cf9i48mvvbHCiaKicSNnVc2HPSD+N21N6YsBgrrXdaEjjLrFkkNF02y+7sscJFHzWphdPArrTmnZvw== + dependencies: + "@solidity-parser/parser" "^0.12.2" + chalk "^4.1.1" + execa "^5.0.0" + fs-extra "^8.1.0" + ipfs-http-client "^50.0.0" + node-fetch "^2.6.1" + +"@aragon/id@^2.1.1": + version "2.1.1" + resolved "https://registry.yarnpkg.com/@aragon/id/-/id-2.1.1.tgz#279ffd2b131013aed8f662a33e211d6327d9a256" + integrity sha512-4mPt6+4uMuW2t8qZUvtR6xJJS7ufIudMbEC3dad78JwnUY6DG9MCnEI5VviK0QW/iUv3+TEV0I/JDcb3eS40hA== + dependencies: + "@aragon/os" "^4.0.0" + +"@aragon/minime@^1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@aragon/minime/-/minime-1.0.0.tgz#994284b38e2ca36b5ae923f090928948041c928f" + integrity sha512-FU6xQXkkRfaxo0n6HEnlsizSA12Te2bghozqW9XLdDbzpC84yDeqUOQAxmrHo5yQPIezRfz7IrNzpLVL6ZBORA== + +"@aragon/os@4.2.0": + version "4.2.0" + resolved "https://registry.yarnpkg.com/@aragon/os/-/os-4.2.0.tgz#7758daa2dd6e2f1ad4c306aaa80ca6ebb0b6946c" + integrity sha512-p0CGev++Ku0oxv+6vvViaPxHYwCVSJxleqJNzf06b9L8VaiWAs0zTwVspebD3mMQqtGJgO7A63Y0LhvsHFw5IA== + dependencies: + homedir "^0.6.0" + mkdirp "^0.5.1" + truffle-flattener "^1.2.9" + truffle-hdwallet-provider "0.0.3" + truffle-hdwallet-provider-privkey "0.3.0" + +"@aragon/os@^4.0.0", "@aragon/os@^4.4.0": + version "4.4.0" + resolved "https://registry.yarnpkg.com/@aragon/os/-/os-4.4.0.tgz#af3e80b11f71209f86dba8b2b3f37a4b025aff7b" + integrity sha512-EYyMj5pX0Qxu7axHAPe4hqwwDINDn+6ZZ4DqJP0tAKYKDmTxHcW8m/7DDctIM3uRqXr8HlYrNOGd6zE/hhHetQ== + dependencies: + "@aragon/truffle-config-v4" "^1.0.1" + homedir "^0.6.0" + mkdirp "^0.5.1" + truffle-flattener "^1.2.9" + +"@aragon/truffle-config-v4@^1.0.1": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@aragon/truffle-config-v4/-/truffle-config-v4-1.2.0.tgz#0c9036c78bdd270367861b336f9fc8ce7989f64d" + integrity sha512-eXxUpHr9D/VYLVsHzaPL4FTz4bCESGvnnHqsP2BB74B4ZlopoIVwdur9flxHIxw4ROoh6xGyrEnScw4zVD2ifw== + dependencies: + "@truffle/hdwallet-provider" "^1.0.0" + +"@babel/compat-data@^7.22.6", "@babel/compat-data@^7.22.9": + version "7.22.20" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.22.20.tgz#8df6e96661209623f1975d66c35ffca66f3306d0" + integrity sha512-BQYjKbpXjoXwFW5jGqiizJQQT/aC7pFm9Ok1OWssonuguICi264lbgMzRp2ZMmRSlfkX6DsWDDcsrctK8Rwfiw== + +"@babel/helper-compilation-targets@^7.22.6": + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.15.tgz#0698fc44551a26cf29f18d4662d5bf545a6cfc52" + integrity sha512-y6EEzULok0Qvz8yyLkCvVX+02ic+By2UdOhylwUOvOn9dvYc9mKICJuuU1n1XBI02YWsNsnrY1kc6DVbjcXbtw== + dependencies: + "@babel/compat-data" "^7.22.9" + "@babel/helper-validator-option" "^7.22.15" + browserslist "^4.21.9" + lru-cache "^5.1.1" + semver "^6.3.1" + +"@babel/helper-define-polyfill-provider@^0.4.2": + version "0.4.2" + resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.4.2.tgz#82c825cadeeeee7aad237618ebbe8fa1710015d7" + integrity sha512-k0qnnOqHn5dK9pZpfD5XXZ9SojAITdCKRn2Lp6rnDGzIbaP0rHyMPk/4wsSxVBVz4RfN0q6VpXWP2pDGIoQ7hw== + dependencies: + "@babel/helper-compilation-targets" "^7.22.6" + "@babel/helper-plugin-utils" "^7.22.5" + debug "^4.1.1" + lodash.debounce "^4.0.8" + resolve "^1.14.2" + +"@babel/helper-module-imports@^7.22.15": + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz#16146307acdc40cc00c3b2c647713076464bdbf0" + integrity sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w== + dependencies: + "@babel/types" "^7.22.15" + +"@babel/helper-plugin-utils@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz#dd7ee3735e8a313b9f7b05a773d892e88e6d7295" + integrity sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg== + +"@babel/helper-string-parser@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz#533f36457a25814cf1df6488523ad547d784a99f" + integrity sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw== + +"@babel/helper-validator-identifier@^7.22.20": + version "7.22.20" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz#c4ae002c61d2879e724581d96665583dbc1dc0e0" + integrity sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A== + +"@babel/helper-validator-option@^7.22.15": + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.22.15.tgz#694c30dfa1d09a6534cdfcafbe56789d36aba040" + integrity sha512-bMn7RmyFjY/mdECUbgn9eoSY4vqvacUnS9i9vGAGttgFWesO6B4CYWA7XlpbWgBt71iv/hfbPlynohStqnu5hA== + +"@babel/plugin-transform-runtime@^7.5.5": + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.22.15.tgz#3a625c4c05a39e932d7d34f5d4895cdd0172fdc9" + integrity sha512-tEVLhk8NRZSmwQ0DJtxxhTrCht1HVo8VaMzYT4w6lwyKBuHsgoioAUA7/6eT2fRfc5/23fuGdlwIxXhRVgWr4g== + dependencies: + "@babel/helper-module-imports" "^7.22.15" + "@babel/helper-plugin-utils" "^7.22.5" + babel-plugin-polyfill-corejs2 "^0.4.5" + babel-plugin-polyfill-corejs3 "^0.8.3" + babel-plugin-polyfill-regenerator "^0.5.2" + semver "^6.3.1" + +"@babel/runtime@^7.5.5": + version "7.23.1" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.23.1.tgz#72741dc4d413338a91dcb044a86f3c0bc402646d" + integrity sha512-hC2v6p8ZSI/W0HUzh3V8C5g+NwSKzKPtJwSpTjwl0o297GP9+ZLQSkdvHz46CM3LqyoXxq+5G9komY+eSqSO0g== + dependencies: + regenerator-runtime "^0.14.0" + +"@babel/types@^7.22.15": + version "7.23.0" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.23.0.tgz#8c1f020c9df0e737e4e247c0619f58c68458aaeb" + integrity sha512-0oIyUfKoI3mSqMvsxBdclDwxXKXAUA8v/apZbc+iSyARYou1o8ZGDxbUYyLFoW2arqS2jDGqJuZvv1d/io1axg== + dependencies: + "@babel/helper-string-parser" "^7.22.5" + "@babel/helper-validator-identifier" "^7.22.20" + to-fast-properties "^2.0.0" + "@chainsafe/as-sha256@^0.3.1": version "0.3.1" resolved "https://registry.yarnpkg.com/@chainsafe/as-sha256/-/as-sha256-0.3.1.tgz#3639df0e1435cab03f4d9870cc3ac079e57a6fc9" @@ -38,6 +208,43 @@ "@chainsafe/persistent-merkle-tree" "^0.4.2" case "^1.6.3" +"@colors/colors@1.5.0": + version "1.5.0" + resolved "https://registry.yarnpkg.com/@colors/colors/-/colors-1.5.0.tgz#bb504579c1cae923e6576a4f5da43d25f97bdbd9" + integrity sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ== + +"@cspotcode/source-map-support@^0.8.0": + version "0.8.1" + resolved "https://registry.yarnpkg.com/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz#00629c35a688e05a88b1cda684fb9d5e73f000a1" + integrity sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw== + dependencies: + "@jridgewell/trace-mapping" "0.3.9" + +"@dabh/diagnostics@^2.0.2": + version "2.0.3" + resolved "https://registry.yarnpkg.com/@dabh/diagnostics/-/diagnostics-2.0.3.tgz#7f7e97ee9a725dffc7808d93668cc984e1dc477a" + integrity sha512-hrlQOIi7hAfzsMqlGSFyVucrx38O+j6wiGOf//H2ecvIEqYN4ADBSS2iLMh5UFyDunCNniUIPk/q3riFv45xRA== + dependencies: + colorspace "1.1.x" + enabled "2.0.x" + kuler "^2.0.0" + +"@ethereumjs/common@^2.4.0", "@ethereumjs/common@^2.6.4": + version "2.6.5" + resolved "https://registry.yarnpkg.com/@ethereumjs/common/-/common-2.6.5.tgz#0a75a22a046272579d91919cb12d84f2756e8d30" + integrity sha512-lRyVQOeCDaIVtgfbowla32pzeDv2Obr8oR8Put5RdUBNRGr1VGPGQNGP6elWIpgK3YdpzqTOh4GyUGOureVeeA== + dependencies: + crc-32 "^1.2.0" + ethereumjs-util "^7.1.5" + +"@ethereumjs/tx@^3.3.0": + version "3.5.2" + resolved "https://registry.yarnpkg.com/@ethereumjs/tx/-/tx-3.5.2.tgz#197b9b6299582ad84f9527ca961466fce2296c1c" + integrity sha512-gQDNJWKrSDGu2w7w0PzVXVBNMzb7wwdDOmOqczmhNjqFxFuIbhVJDwiGEnxFNC2/b8ifcZzY7MLcluizohRzNw== + dependencies: + "@ethereumjs/common" "^2.6.4" + ethereumjs-util "^7.1.5" + "@ethersproject/abi@5.7.0", "@ethersproject/abi@^5.1.2", "@ethersproject/abi@^5.7.0": version "5.7.0" resolved "https://registry.yarnpkg.com/@ethersproject/abi/-/abi-5.7.0.tgz#b3f3e045bbbeed1af3947335c247ad625a44e449" @@ -380,6 +587,36 @@ "@ethersproject/properties" "^5.7.0" "@ethersproject/strings" "^5.7.0" +"@jridgewell/resolve-uri@^3.0.3": + version "3.1.1" + resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz#c08679063f279615a3326583ba3a90d1d82cc721" + integrity sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA== + +"@jridgewell/sourcemap-codec@^1.4.10": + version "1.4.15" + resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32" + integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== + +"@jridgewell/trace-mapping@0.3.9": + version "0.3.9" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz#6534fd5933a53ba7cbf3a17615e273a0d1273ff9" + integrity sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ== + dependencies: + "@jridgewell/resolve-uri" "^3.0.3" + "@jridgewell/sourcemap-codec" "^1.4.10" + +"@ljharb/resumer@~0.0.1": + version "0.0.1" + resolved "https://registry.yarnpkg.com/@ljharb/resumer/-/resumer-0.0.1.tgz#8a940a9192dd31f6a1df17564bbd26dc6ad3e68d" + integrity sha512-skQiAOrCfO7vRTq53cxznMpks7wS1va95UCidALlOVWqvBAzwPVErwizDwoMqNVMEn1mDq0utxZd02eIrvF1lw== + dependencies: + "@ljharb/through" "^2.3.9" + +"@ljharb/through@^2.3.9", "@ljharb/through@~2.3.9": + version "2.3.9" + resolved "https://registry.yarnpkg.com/@ljharb/through/-/through-2.3.9.tgz#85f221eb82f9d555e180e87d6e50fb154af85408" + integrity sha512-yN599ZBuMPPK4tdoToLlvgJB4CLK8fGl7ntfy0Wn7U6ttNvHYurd81bfUiK/6sMkiIwm65R6ck4L6+Y3DfVbNQ== + "@metamask/eth-sig-util@^4.0.0": version "4.0.1" resolved "https://registry.yarnpkg.com/@metamask/eth-sig-util/-/eth-sig-util-4.0.1.tgz#3ad61f6ea9ad73ba5b19db780d40d9aae5157088" @@ -391,11 +628,33 @@ tweetnacl "^1.0.3" tweetnacl-util "^0.15.1" +"@multiformats/base-x@^4.0.1": + version "4.0.1" + resolved "https://registry.yarnpkg.com/@multiformats/base-x/-/base-x-4.0.1.tgz#95ff0fa58711789d53aefb2590a8b7a4e715d121" + integrity sha512-eMk0b9ReBbV23xXU693TAIrLyeO5iTgBZGSJfpqriG8UkYvr/hC9u9pyMlAakDNHWmbhMZCDs6KQO0jzKD8OTw== + +"@noble/curves@1.1.0", "@noble/curves@~1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@noble/curves/-/curves-1.1.0.tgz#f13fc667c89184bc04cccb9b11e8e7bae27d8c3d" + integrity sha512-091oBExgENk/kGj3AZmtBDMpxQPDtxQABR2B9lb1JbVTs6ytdzZNwvhxQ4MWasRNEzlbEH8jCWFCwhF/Obj5AA== + dependencies: + "@noble/hashes" "1.3.1" + "@noble/hashes@1.2.0", "@noble/hashes@~1.2.0": version "1.2.0" resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.2.0.tgz#a3150eeb09cc7ab207ebf6d7b9ad311a9bdbed12" integrity sha512-FZfhjEDbT5GRswV3C6uvLPHMiVD6lQBmpoX5+eSiPaMTXte/IKqI5dykDxzZB/WBeK/CDuQRBWarPdi3FNY2zQ== +"@noble/hashes@1.3.1": + version "1.3.1" + resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.3.1.tgz#8831ef002114670c603c458ab8b11328406953a9" + integrity sha512-EbqwksQwz9xDRGfDST86whPBgM65E0OH/pCgqW0GBVzO22bNE+NuIbeTb714+IfSjU3aRk47EUvXIb5bTsenKA== + +"@noble/hashes@~1.3.0", "@noble/hashes@~1.3.1": + version "1.3.2" + resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.3.2.tgz#6f26dbc8fbc7205873ce3cee2f690eba0d421b39" + integrity sha512-MVC8EAQp7MvEcm30KWENFjgR+Mkmf+D189XJTkFIlwohU5hcBbn1ZkKq7KVTi2Hme3PMGF390DaL52beVrIihQ== + "@noble/secp256k1@1.7.1", "@noble/secp256k1@~1.7.0": version "1.7.1" resolved "https://registry.yarnpkg.com/@noble/secp256k1/-/secp256k1-1.7.1.tgz#b251c70f824ce3ca7f8dc3df08d58f005cc0507c" @@ -601,6 +860,103 @@ "@nomicfoundation/solidity-analyzer-win32-ia32-msvc" "0.1.1" "@nomicfoundation/solidity-analyzer-win32-x64-msvc" "0.1.1" +"@nomiclabs/hardhat-ethers@^2.2.3": + version "2.2.3" + resolved "https://registry.yarnpkg.com/@nomiclabs/hardhat-ethers/-/hardhat-ethers-2.2.3.tgz#b41053e360c31a32c2640c9a45ee981a7e603fe0" + integrity sha512-YhzPdzb612X591FOe68q+qXVXGG2ANZRvDo0RRUtimev85rCrAlv/TLMEZw5c+kq9AbzocLTVX/h2jVIFPL9Xg== + +"@openzeppelin/contracts-v4.4@npm:@openzeppelin/contracts@4.4.1": + version "4.4.1" + resolved "https://registry.yarnpkg.com/@openzeppelin/contracts/-/contracts-4.4.1.tgz#3382db2cd83ab565ed9626765e7da92944b45de8" + integrity sha512-o+pHCf/yMLSlV5MkDQEzEQL402i6SoRnktru+0rdSxVEFZcTzzGhZCAtZjUFyKGazMSv1TilzMg+RbED1N8XHQ== + +"@protobufjs/aspromise@^1.1.1", "@protobufjs/aspromise@^1.1.2": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@protobufjs/aspromise/-/aspromise-1.1.2.tgz#9b8b0cc663d669a7d8f6f5d0893a14d348f30fbf" + integrity sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ== + +"@protobufjs/base64@^1.1.2": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@protobufjs/base64/-/base64-1.1.2.tgz#4c85730e59b9a1f1f349047dbf24296034bb2735" + integrity sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg== + +"@protobufjs/codegen@^2.0.4": + version "2.0.4" + resolved "https://registry.yarnpkg.com/@protobufjs/codegen/-/codegen-2.0.4.tgz#7ef37f0d010fb028ad1ad59722e506d9262815cb" + integrity sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg== + +"@protobufjs/eventemitter@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz#355cbc98bafad5978f9ed095f397621f1d066b70" + integrity sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q== + +"@protobufjs/fetch@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@protobufjs/fetch/-/fetch-1.1.0.tgz#ba99fb598614af65700c1619ff06d454b0d84c45" + integrity sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ== + dependencies: + "@protobufjs/aspromise" "^1.1.1" + "@protobufjs/inquire" "^1.1.0" + +"@protobufjs/float@^1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@protobufjs/float/-/float-1.0.2.tgz#5e9e1abdcb73fc0a7cb8b291df78c8cbd97b87d1" + integrity sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ== + +"@protobufjs/inquire@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@protobufjs/inquire/-/inquire-1.1.0.tgz#ff200e3e7cf2429e2dcafc1140828e8cc638f089" + integrity sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q== + +"@protobufjs/path@^1.1.2": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@protobufjs/path/-/path-1.1.2.tgz#6cc2b20c5c9ad6ad0dccfd21ca7673d8d7fbf68d" + integrity sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA== + +"@protobufjs/pool@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@protobufjs/pool/-/pool-1.1.0.tgz#09fd15f2d6d3abfa9b65bc366506d6ad7846ff54" + integrity sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw== + +"@protobufjs/utf8@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@protobufjs/utf8/-/utf8-1.1.0.tgz#a777360b5b39a1a2e5106f8e858f2fd2d060c570" + integrity sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw== + +"@resolver-engine/core@^0.2.1": + version "0.2.1" + resolved "https://registry.yarnpkg.com/@resolver-engine/core/-/core-0.2.1.tgz#0d71803f6d3b8cb2e9ed481a1bf0ca5f5256d0c0" + integrity sha512-nsLQHmPJ77QuifqsIvqjaF5B9aHnDzJjp73Q1z6apY3e9nqYrx4Dtowhpsf7Jwftg/XzVDEMQC+OzUBNTS+S1A== + dependencies: + debug "^3.1.0" + request "^2.85.0" + +"@resolver-engine/fs@^0.2.1": + version "0.2.1" + resolved "https://registry.yarnpkg.com/@resolver-engine/fs/-/fs-0.2.1.tgz#f98a308d77568cc02651d03636f46536b941b241" + integrity sha512-7kJInM1Qo2LJcKyDhuYzh9ZWd+mal/fynfL9BNjWOiTcOpX+jNfqb/UmGUqros5pceBITlWGqS4lU709yHFUbg== + dependencies: + "@resolver-engine/core" "^0.2.1" + debug "^3.1.0" + +"@resolver-engine/imports-fs@^0.2.2": + version "0.2.2" + resolved "https://registry.yarnpkg.com/@resolver-engine/imports-fs/-/imports-fs-0.2.2.tgz#5a81ef3285dbf0411ab3b15205080a1ad7622d9e" + integrity sha512-gFCgMvCwyppjwq0UzIjde/WI+yDs3oatJhozG9xdjJdewwtd7LiF0T5i9lrHAUtqrQbqoFE4E+ZMRVHWpWHpKQ== + dependencies: + "@resolver-engine/fs" "^0.2.1" + "@resolver-engine/imports" "^0.2.2" + debug "^3.1.0" + +"@resolver-engine/imports@^0.2.2": + version "0.2.2" + resolved "https://registry.yarnpkg.com/@resolver-engine/imports/-/imports-0.2.2.tgz#d3de55a1bb5f3beb7703fdde743298f321175843" + integrity sha512-u5/HUkvo8q34AA+hnxxqqXGfby5swnH0Myw91o3Sm2TETJlNKXibFGSKBavAH+wvWdBi4Z5gS2Odu0PowgVOUg== + dependencies: + "@resolver-engine/core" "^0.2.1" + debug "^3.1.0" + hosted-git-info "^2.6.0" + "@scure/base@~1.1.0": version "1.1.3" resolved "https://registry.yarnpkg.com/@scure/base/-/base-1.1.3.tgz#8584115565228290a6c6c4961973e0903bb3df2f" @@ -615,6 +971,15 @@ "@noble/secp256k1" "~1.7.0" "@scure/base" "~1.1.0" +"@scure/bip32@1.3.1": + version "1.3.1" + resolved "https://registry.yarnpkg.com/@scure/bip32/-/bip32-1.3.1.tgz#7248aea723667f98160f593d621c47e208ccbb10" + integrity sha512-osvveYtyzdEVbt3OfwwXFr4P2iVBL5u1Q3q4ONBfDY/UpOuXmOlbgwc1xECEboY8wIays8Yt6onaWMUdUbfl0A== + dependencies: + "@noble/curves" "~1.1.0" + "@noble/hashes" "~1.3.1" + "@scure/base" "~1.1.0" + "@scure/bip39@1.1.1": version "1.1.1" resolved "https://registry.yarnpkg.com/@scure/bip39/-/bip39-1.1.1.tgz#b54557b2e86214319405db819c4b6a370cf340c5" @@ -623,6 +988,14 @@ "@noble/hashes" "~1.2.0" "@scure/base" "~1.1.0" +"@scure/bip39@1.2.1": + version "1.2.1" + resolved "https://registry.yarnpkg.com/@scure/bip39/-/bip39-1.2.1.tgz#5cee8978656b272a917b7871c981e0541ad6ac2a" + integrity sha512-Z3/Fsz1yr904dduJD0NpiyRHhRYHdcnyh73FZWiV+/qhWi83wNJ3NWolYqCEN+ZWsUz2TWwajJggcRE9r1zUYg== + dependencies: + "@noble/hashes" "~1.3.0" + "@scure/base" "~1.1.0" + "@sentry/core@5.30.0": version "5.30.0" resolved "https://registry.yarnpkg.com/@sentry/core/-/core-5.30.0.tgz#6b203664f69e75106ee8b5a2fe1d717379b331f3" @@ -691,6 +1064,150 @@ "@sentry/types" "5.30.0" tslib "^1.9.3" +"@solidity-parser/parser@^0.12.2": + version "0.12.2" + resolved "https://registry.yarnpkg.com/@solidity-parser/parser/-/parser-0.12.2.tgz#1afad367cb29a2ed8cdd4a3a62701c2821fb578f" + integrity sha512-d7VS7PxgMosm5NyaiyDJRNID5pK4AWj1l64Dbz0147hJgy5k2C0/ZiKK/9u5c5K+HRUVHmp+RMvGEjGh84oA5Q== + +"@solidity-parser/parser@^0.14.1": + version "0.14.5" + resolved "https://registry.yarnpkg.com/@solidity-parser/parser/-/parser-0.14.5.tgz#87bc3cc7b068e08195c219c91cd8ddff5ef1a804" + integrity sha512-6dKnHZn7fg/iQATVEzqyUOyEidbn05q7YA2mQ9hC0MMXhhV3/JrsxmFSYZAcr7j1yUP700LLhTruvJ3MiQmjJg== + dependencies: + antlr4ts "^0.5.0-alpha.4" + +"@sovpro/delimited-stream@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@sovpro/delimited-stream/-/delimited-stream-1.1.0.tgz#4334bba7ee241036e580fdd99c019377630d26b4" + integrity sha512-kQpk267uxB19X3X2T1mvNMjyvIEonpNSHrMlK5ZaBU6aZxw7wPbpgKJOjHN3+/GPVpXgAV9soVT2oyHpLkLtyw== + +"@truffle/hdwallet-provider@^1.0.0": + version "1.7.0" + resolved "https://registry.yarnpkg.com/@truffle/hdwallet-provider/-/hdwallet-provider-1.7.0.tgz#5cfa8bc67c2a30b3943d3dab78f74c6a191cde02" + integrity sha512-nT7BPJJ2jPCLJc5uZdVtRnRMny5he5d3kO9Hi80ZSqe5xlnK905grBptM/+CwOfbeqHKQirI1btwm6r3wIBM8A== + dependencies: + "@ethereumjs/common" "^2.4.0" + "@ethereumjs/tx" "^3.3.0" + "@trufflesuite/web3-provider-engine" "15.0.14" + eth-sig-util "^3.0.1" + ethereum-cryptography "^0.1.3" + ethereum-protocol "^1.0.1" + ethereumjs-util "^6.1.0" + ethereumjs-wallet "^1.0.1" + +"@trufflesuite/eth-json-rpc-filters@^4.1.2-1": + version "4.1.2-1" + resolved "https://registry.yarnpkg.com/@trufflesuite/eth-json-rpc-filters/-/eth-json-rpc-filters-4.1.2-1.tgz#61ab78c52e98a883e5cf086925b34a30297b1824" + integrity sha512-/MChvC5dw2ck9NU1cZmdovCz2VKbOeIyR4tcxDvA5sT+NaL0rA2/R5U0yI7zsbo1zD+pgqav77rQHTzpUdDNJQ== + dependencies: + "@trufflesuite/eth-json-rpc-middleware" "^4.4.2-0" + await-semaphore "^0.1.3" + eth-query "^2.1.2" + json-rpc-engine "^5.1.3" + lodash.flatmap "^4.5.0" + safe-event-emitter "^1.0.1" + +"@trufflesuite/eth-json-rpc-infura@^4.0.3-0": + version "4.0.3-0" + resolved "https://registry.yarnpkg.com/@trufflesuite/eth-json-rpc-infura/-/eth-json-rpc-infura-4.0.3-0.tgz#6d22122937cf60ec9d21a02351c101fdc608c4fe" + integrity sha512-xaUanOmo0YLqRsL0SfXpFienhdw5bpQ1WEXxMTRi57az4lwpZBv4tFUDvcerdwJrxX9wQqNmgUgd1BrR01dumw== + dependencies: + "@trufflesuite/eth-json-rpc-middleware" "^4.4.2-1" + cross-fetch "^2.1.1" + eth-json-rpc-errors "^1.0.1" + json-rpc-engine "^5.1.3" + +"@trufflesuite/eth-json-rpc-middleware@^4.4.2-0", "@trufflesuite/eth-json-rpc-middleware@^4.4.2-1": + version "4.4.2-1" + resolved "https://registry.yarnpkg.com/@trufflesuite/eth-json-rpc-middleware/-/eth-json-rpc-middleware-4.4.2-1.tgz#8c3638ed8a7ed89a1e5e71407de068a65bef0df2" + integrity sha512-iEy9H8ja7/8aYES5HfrepGBKU9n/Y4OabBJEklVd/zIBlhCCBAWBqkIZgXt11nBXO/rYAeKwYuE3puH3ByYnLA== + dependencies: + "@trufflesuite/eth-sig-util" "^1.4.2" + btoa "^1.2.1" + clone "^2.1.1" + eth-json-rpc-errors "^1.0.1" + eth-query "^2.1.2" + ethereumjs-block "^1.6.0" + ethereumjs-tx "^1.3.7" + ethereumjs-util "^5.1.2" + ethereumjs-vm "^2.6.0" + fetch-ponyfill "^4.0.0" + json-rpc-engine "^5.1.3" + json-stable-stringify "^1.0.1" + pify "^3.0.0" + safe-event-emitter "^1.0.1" + +"@trufflesuite/eth-sig-util@^1.4.2": + version "1.4.2" + resolved "https://registry.yarnpkg.com/@trufflesuite/eth-sig-util/-/eth-sig-util-1.4.2.tgz#b529e2f38ac08e652116f48981132a26242a4f08" + integrity sha512-+GyfN6b0LNW77hbQlH3ufZ/1eCON7mMrGym6tdYf7xiNw9Vv3jBO72bmmos1EId2NgBvPMhmYYm6DSLQFTmzrA== + dependencies: + ethereumjs-abi "^0.6.8" + ethereumjs-util "^5.1.1" + +"@trufflesuite/web3-provider-engine@15.0.14": + version "15.0.14" + resolved "https://registry.yarnpkg.com/@trufflesuite/web3-provider-engine/-/web3-provider-engine-15.0.14.tgz#8f9696f434585cc0ab2e57c312090c1f138bc471" + integrity sha512-6/LoWvNMxYf0oaYzJldK2a9AdnkAdIeJhHW4nuUBAeO29eK9xezEaEYQ0ph1QRTaICxGxvn+1Azp4u8bQ8NEZw== + dependencies: + "@ethereumjs/tx" "^3.3.0" + "@trufflesuite/eth-json-rpc-filters" "^4.1.2-1" + "@trufflesuite/eth-json-rpc-infura" "^4.0.3-0" + "@trufflesuite/eth-json-rpc-middleware" "^4.4.2-1" + "@trufflesuite/eth-sig-util" "^1.4.2" + async "^2.5.0" + backoff "^2.5.0" + clone "^2.0.0" + cross-fetch "^2.1.0" + eth-block-tracker "^4.4.2" + eth-json-rpc-errors "^2.0.2" + ethereumjs-block "^1.2.2" + ethereumjs-util "^5.1.5" + ethereumjs-vm "^2.3.4" + json-stable-stringify "^1.0.1" + promise-to-callback "^1.0.0" + readable-stream "^2.2.9" + request "^2.85.0" + semaphore "^1.0.3" + ws "^5.1.1" + xhr "^2.2.0" + xtend "^4.0.1" + +"@tsconfig/node10@^1.0.7": + version "1.0.9" + resolved "https://registry.yarnpkg.com/@tsconfig/node10/-/node10-1.0.9.tgz#df4907fc07a886922637b15e02d4cebc4c0021b2" + integrity sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA== + +"@tsconfig/node12@^1.0.7": + version "1.0.11" + resolved "https://registry.yarnpkg.com/@tsconfig/node12/-/node12-1.0.11.tgz#ee3def1f27d9ed66dac6e46a295cffb0152e058d" + integrity sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag== + +"@tsconfig/node14@^1.0.0": + version "1.0.3" + resolved "https://registry.yarnpkg.com/@tsconfig/node14/-/node14-1.0.3.tgz#e4386316284f00b98435bf40f72f75a09dabf6c1" + integrity sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow== + +"@tsconfig/node16@^1.0.2": + version "1.0.4" + resolved "https://registry.yarnpkg.com/@tsconfig/node16/-/node16-1.0.4.tgz#0b92dcc0cc1c81f6f306a381f28e31b1a56536e9" + integrity sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA== + +"@typechain/ethers-v5@^11.1.1": + version "11.1.1" + resolved "https://registry.yarnpkg.com/@typechain/ethers-v5/-/ethers-v5-11.1.1.tgz#23a358135a302140cf89a186592464dd6bbf1f98" + integrity sha512-D9WyUrCJ4Z5Gg8T00HWLpuqn1CqSDXlCiUOOpLaWoCbnZrE2jSIOUwR9blBZNo6LE5058e3niVu6xk205Et7tg== + dependencies: + lodash "^4.17.15" + ts-essentials "^7.0.1" + +"@typechain/hardhat@^8.0.3": + version "8.0.3" + resolved "https://registry.yarnpkg.com/@typechain/hardhat/-/hardhat-8.0.3.tgz#a114825f130405bbb8e535314003733b7ce3f91c" + integrity sha512-MytSmJJn+gs7Mqrpt/gWkTCOpOQ6ZDfRrRT2gtZL0rfGe4QrU4x9ZdW15fFbVM/XTa+5EsKiOMYXhRABibNeng== + dependencies: + fs-extra "^9.1.0" + "@types/bn.js@^4.11.3": version "4.11.6" resolved "https://registry.yarnpkg.com/@types/bn.js/-/bn.js-4.11.6.tgz#c306c70d9358aaea33cd4eda092a742b9505967c" @@ -705,16 +1222,123 @@ dependencies: "@types/node" "*" +"@types/body-parser@*": + version "1.19.3" + resolved "https://registry.yarnpkg.com/@types/body-parser/-/body-parser-1.19.3.tgz#fb558014374f7d9e56c8f34bab2042a3a07d25cd" + integrity sha512-oyl4jvAfTGX9Bt6Or4H9ni1Z447/tQuxnZsytsCaExKlmJiU8sFgnIBRzJUpKwB5eWn9HuBYlUlVA74q/yN0eQ== + dependencies: + "@types/connect" "*" + "@types/node" "*" + +"@types/busboy@*": + version "1.5.1" + resolved "https://registry.yarnpkg.com/@types/busboy/-/busboy-1.5.1.tgz#c8112818cfde780c2d4df384ba59744d2faae2c7" + integrity sha512-JAymE2skNionWnBUwby3MatzPUw4D/6/7FX1qxBXLzmRnFxmqU0luIof7om0I8R3B/rSr9FKUnFCqxZ/NeGbrw== + dependencies: + "@types/node" "*" + +"@types/compression@^1.7.2": + version "1.7.3" + resolved "https://registry.yarnpkg.com/@types/compression/-/compression-1.7.3.tgz#2dd34648fc3b71c95aacd63b3098b2192da33929" + integrity sha512-rKquEGjebqizyHNMOpaE/4FdYR5VQiWFeesqYfvJU0seSEyB4625UGhNOO/qIkH10S3wftiV7oefc8WdLZ/gCQ== + dependencies: + "@types/express" "*" + +"@types/connect@*": + version "3.4.36" + resolved "https://registry.yarnpkg.com/@types/connect/-/connect-3.4.36.tgz#e511558c15a39cb29bd5357eebb57bd1459cd1ab" + integrity sha512-P63Zd/JUGq+PdrM1lv0Wv5SBYeA2+CORvbrXbngriYY0jzLUWfQMQQxOhjONEz/wlHOAxOdY7CY65rgQdTjq2w== + dependencies: + "@types/node" "*" + +"@types/express-fileupload@^1.2.2": + version "1.4.2" + resolved "https://registry.yarnpkg.com/@types/express-fileupload/-/express-fileupload-1.4.2.tgz#42ff388e71facfbd348c220f917803db3088abf3" + integrity sha512-m7j9veuCI02m0eyMfmZI7jrVU2CzH43U6EbAuzvCoBdhliXdIndb32cukcRTG4AOQONbe0MBmEcWvXAmQh9IMg== + dependencies: + "@types/busboy" "*" + "@types/express" "*" + +"@types/express-serve-static-core@^4.17.33": + version "4.17.37" + resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.17.37.tgz#7e4b7b59da9142138a2aaa7621f5abedce8c7320" + integrity sha512-ZohaCYTgGFcOP7u6aJOhY9uIZQgZ2vxC2yWoArY+FeDXlqeH66ZVBjgvg+RLVAS/DWNq4Ap9ZXu1+SUQiiWYMg== + dependencies: + "@types/node" "*" + "@types/qs" "*" + "@types/range-parser" "*" + "@types/send" "*" + +"@types/express@*": + version "4.17.18" + resolved "https://registry.yarnpkg.com/@types/express/-/express-4.17.18.tgz#efabf5c4495c1880df1bdffee604b143b29c4a95" + integrity sha512-Sxv8BSLLgsBYmcnGdGjjEjqET2U+AKAdCRODmMiq02FgjwuV75Ut85DRpvFjyw/Mk0vgUOliGRU0UUmuuZHByQ== + dependencies: + "@types/body-parser" "*" + "@types/express-serve-static-core" "^4.17.33" + "@types/qs" "*" + "@types/serve-static" "*" + +"@types/http-errors@*", "@types/http-errors@^2.0.0": + version "2.0.2" + resolved "https://registry.yarnpkg.com/@types/http-errors/-/http-errors-2.0.2.tgz#a86e00bbde8950364f8e7846687259ffcd96e8c2" + integrity sha512-lPG6KlZs88gef6aD85z3HNkztpj7w2R7HmR3gygjfXCQmsLloWNARFkMuzKiiY8FGdh1XDpgBdrSf4aKDiA7Kg== + +"@types/long@^4.0.1": + version "4.0.2" + resolved "https://registry.yarnpkg.com/@types/long/-/long-4.0.2.tgz#b74129719fc8d11c01868010082d483b7545591a" + integrity sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA== + "@types/lru-cache@^5.1.0": version "5.1.1" resolved "https://registry.yarnpkg.com/@types/lru-cache/-/lru-cache-5.1.1.tgz#c48c2e27b65d2a153b19bfc1a317e30872e01eef" integrity sha512-ssE3Vlrys7sdIzs5LOxCzTVMsU7i9oa/IaW92wF32JFb3CVczqOkru2xspuKczHEbG3nvmPY7IFqVmGGHdNbYw== +"@types/mime@*": + version "3.0.1" + resolved "https://registry.yarnpkg.com/@types/mime/-/mime-3.0.1.tgz#5f8f2bca0a5863cb69bc0b0acd88c96cb1d4ae10" + integrity sha512-Y4XFY5VJAuw0FgAqPNd6NNoV44jbq9Bz2L7Rh/J6jLTiHBSBJa9fxqQIvkIld4GsoDOcCbvzOUAbLPsSKKg+uA== + +"@types/mime@^1": + version "1.3.2" + resolved "https://registry.yarnpkg.com/@types/mime/-/mime-1.3.2.tgz#93e25bf9ee75fe0fd80b594bc4feb0e862111b5a" + integrity sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw== + +"@types/minimatch@^3.0.4": + version "3.0.5" + resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.5.tgz#1001cc5e6a3704b83c236027e77f2f58ea010f40" + integrity sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ== + +"@types/mkdirp@^0.5.2": + version "0.5.2" + resolved "https://registry.yarnpkg.com/@types/mkdirp/-/mkdirp-0.5.2.tgz#503aacfe5cc2703d5484326b1b27efa67a339c1f" + integrity sha512-U5icWpv7YnZYGsN4/cmh3WD2onMY0aJIiTE6+51TwJCttdHvtCYmkBNOobHlXwrJRL0nkH9jH4kD+1FAdMN4Tg== + dependencies: + "@types/node" "*" + +"@types/node-fetch@^2.6.4": + version "2.6.6" + resolved "https://registry.yarnpkg.com/@types/node-fetch/-/node-fetch-2.6.6.tgz#b72f3f4bc0c0afee1c0bc9cff68e041d01e3e779" + integrity sha512-95X8guJYhfqiuVVhRFxVQcf4hW/2bCuoPwDasMf/531STFoNoWTT7YDnWdXHEZKqAGUigmpG31r2FE70LwnzJw== + dependencies: + "@types/node" "*" + form-data "^4.0.0" + "@types/node@*": version "20.6.0" resolved "https://registry.yarnpkg.com/@types/node/-/node-20.6.0.tgz#9d7daa855d33d4efec8aea88cd66db1c2f0ebe16" integrity sha512-najjVq5KN2vsH2U/xyh2opaSEz6cZMR2SetLIlxlj08nOcmPOemJmUK2o4kUzfLqfrWE0PIrNeE16XhYDd3nqg== +"@types/node@>=13.7.0": + version "20.6.5" + resolved "https://registry.yarnpkg.com/@types/node/-/node-20.6.5.tgz#4c6a79adf59a8e8193ac87a0e522605b16587258" + integrity sha512-2qGq5LAOTh9izcc0+F+dToFigBWiK1phKPt7rNhOqJSr35y8rlIBjDwGtFSgAI6MGIhjwOVNSQZVdJsZJ2uR1w== + +"@types/node@^10.3.2": + version "10.17.60" + resolved "https://registry.yarnpkg.com/@types/node/-/node-10.17.60.tgz#35f3d6213daed95da7f0f73e75bcc6980e90597b" + integrity sha512-F0KIgDJfy2nA3zMLmWGKxcH2ZVEtCZXHHdOQs2gSaQ27+lNeEfGxzkIw90aXswATX7AZ33tahPbzy6KAfUreVw== + "@types/pbkdf2@^3.0.0": version "3.1.0" resolved "https://registry.yarnpkg.com/@types/pbkdf2/-/pbkdf2-3.1.0.tgz#039a0e9b67da0cdc4ee5dab865caa6b267bb66b1" @@ -722,6 +1346,28 @@ dependencies: "@types/node" "*" +"@types/prettier@^2.1.1": + version "2.7.3" + resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.7.3.tgz#3e51a17e291d01d17d3fc61422015a933af7a08f" + integrity sha512-+68kP9yzs4LMp7VNh8gdzMSPZFL44MLGqiHWvttYJe+6qnuVr4Ek9wSBQoveqY/r+LwjCcU29kNVkidwim+kYA== + +"@types/qs@*": + version "6.9.8" + resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.8.tgz#f2a7de3c107b89b441e071d5472e6b726b4adf45" + integrity sha512-u95svzDlTysU5xecFNTgfFG5RUWu1A9P0VzgpcIiGZA9iraHOdSzcxMxQ55DyeRaGCSxQi7LxXDI4rzq/MYfdg== + +"@types/ramda@^0.29.3": + version "0.29.4" + resolved "https://registry.yarnpkg.com/@types/ramda/-/ramda-0.29.4.tgz#4bfe4729586290089d613d1becf8da4cf4054df5" + integrity sha512-bd3nyfkZd5EVxuBf1kW6wvFz61SvAEfXXISIEIePJOj2XRjCHyro1ikvDXTXIlpRtuC6lwTMfYdkXCD+oiXQfw== + dependencies: + types-ramda "^0.29.4" + +"@types/range-parser@*": + version "1.2.4" + resolved "https://registry.yarnpkg.com/@types/range-parser/-/range-parser-1.2.4.tgz#cd667bcfdd025213aafb7ca5915a932590acdcdc" + integrity sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw== + "@types/readable-stream@^2.3.13": version "2.3.15" resolved "https://registry.yarnpkg.com/@types/readable-stream/-/readable-stream-2.3.15.tgz#3d79c9ceb1b6a57d5f6e6976f489b9b5384321ae" @@ -730,6 +1376,13 @@ "@types/node" "*" safe-buffer "~5.1.1" +"@types/resolve@^0.0.8": + version "0.0.8" + resolved "https://registry.yarnpkg.com/@types/resolve/-/resolve-0.0.8.tgz#f26074d238e02659e323ce1a13d041eee280e194" + integrity sha512-auApPaJf3NPfe18hSoJkp8EbZzer2ISk7o8mCC3M9he/a04+gbMF97NkpD2S8riMGvm4BMRI59/SZQSaLTKpsQ== + dependencies: + "@types/node" "*" + "@types/secp256k1@^4.0.1": version "4.0.3" resolved "https://registry.yarnpkg.com/@types/secp256k1/-/secp256k1-4.0.3.tgz#1b8e55d8e00f08ee7220b4d59a6abe89c37a901c" @@ -737,6 +1390,43 @@ dependencies: "@types/node" "*" +"@types/send@*": + version "0.17.1" + resolved "https://registry.yarnpkg.com/@types/send/-/send-0.17.1.tgz#ed4932b8a2a805f1fe362a70f4e62d0ac994e301" + integrity sha512-Cwo8LE/0rnvX7kIIa3QHCkcuF21c05Ayb0ZfxPiv0W8VRiZiNW/WuRupHKpqqGVGf7SUA44QSOUKaEd9lIrd/Q== + dependencies: + "@types/mime" "^1" + "@types/node" "*" + +"@types/serve-static@*": + version "1.15.2" + resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.15.2.tgz#3e5419ecd1e40e7405d34093f10befb43f63381a" + integrity sha512-J2LqtvFYCzaj8pVYKw8klQXrLLk7TBZmQ4ShlcdkELFKGwGMfevMLneMMRkMgZxotOD9wg497LpC7O8PcvAmfw== + dependencies: + "@types/http-errors" "*" + "@types/mime" "*" + "@types/node" "*" + +"@types/swagger-ui-express@^4.1.3": + version "4.1.3" + resolved "https://registry.yarnpkg.com/@types/swagger-ui-express/-/swagger-ui-express-4.1.3.tgz#7adbbbf5343b45869debef1e9ff39c9ba73e380f" + integrity sha512-jqCjGU/tGEaqIplPy3WyQg+Nrp6y80DCFnDEAvVKWkJyv0VivSSDCChkppHRHAablvInZe6pijDFMnavtN0vqA== + dependencies: + "@types/express" "*" + "@types/serve-static" "*" + +"@types/triple-beam@^1.3.2": + version "1.3.3" + resolved "https://registry.yarnpkg.com/@types/triple-beam/-/triple-beam-1.3.3.tgz#726ae98a5f6418c8f24f9b0f2a9f81a8664876ae" + integrity sha512-6tOUG+nVHn0cJbVp25JFayS5UE6+xlbcNF9Lo9mU7U0zk3zeUShZied4YEQZjy1JBF043FSkdXw8YkUJuVtB5g== + +abort-controller@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/abort-controller/-/abort-controller-3.0.0.tgz#eaf54d53b62bae4138e809ca225c8439a6efb392" + integrity sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg== + dependencies: + event-target-shim "^5.0.0" + abstract-level@^1.0.0, abstract-level@^1.0.2, abstract-level@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/abstract-level/-/abstract-level-1.0.3.tgz#78a67d3d84da55ee15201486ab44c09560070741" @@ -750,6 +1440,38 @@ abstract-level@^1.0.0, abstract-level@^1.0.2, abstract-level@^1.0.3: module-error "^1.0.1" queue-microtask "^1.2.3" +abstract-leveldown@~2.6.0: + version "2.6.3" + resolved "https://registry.yarnpkg.com/abstract-leveldown/-/abstract-leveldown-2.6.3.tgz#1c5e8c6a5ef965ae8c35dfb3a8770c476b82c4b8" + integrity sha512-2++wDf/DYqkPR3o5tbfdhF96EfMApo1GpPfzOsR/ZYXdkSmELlvOOEAl9iKkRsktMPHdGjO4rtkBpf2I7TiTeA== + dependencies: + xtend "~4.0.0" + +abstract-leveldown@~2.7.1: + version "2.7.2" + resolved "https://registry.yarnpkg.com/abstract-leveldown/-/abstract-leveldown-2.7.2.tgz#87a44d7ebebc341d59665204834c8b7e0932cc93" + integrity sha512-+OVvxH2rHVEhWLdbudP6p0+dNMXu8JA1CbhP19T8paTYAcX7oJ4OVjT+ZUVpv7mITxXHqDMej+GdqXBmXkw09w== + dependencies: + xtend "~4.0.0" + +accepts@~1.3.5, accepts@~1.3.8: + version "1.3.8" + resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.8.tgz#0bf0be125b67014adcb0b0921e62db7bffe16b2e" + integrity sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw== + dependencies: + mime-types "~2.1.34" + negotiator "0.6.3" + +acorn-walk@^8.1.1: + version "8.2.0" + resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.2.0.tgz#741210f2e2426454508853a2f44d0ab83b7f69c1" + integrity sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA== + +acorn@^8.4.1: + version "8.10.0" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.10.0.tgz#8be5b3907a67221a81ab23c7889c4c5526b62ec5" + integrity sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw== + adm-zip@^0.4.16: version "0.4.16" resolved "https://registry.yarnpkg.com/adm-zip/-/adm-zip-0.4.16.tgz#cf4c508fdffab02c269cbc7f471a875f05570365" @@ -760,6 +1482,11 @@ aes-js@3.0.0: resolved "https://registry.yarnpkg.com/aes-js/-/aes-js-3.0.0.tgz#e21df10ad6c2053295bcbb8dab40b09dbea87e4d" integrity sha512-H7wUZRn8WpTq9jocdxQ2c8x2sKo9ZVmzfRE13GiNJXfp7NcKYEdvl3vspKjXox6RIG2VtaRe4JFvxG4rqp2Zuw== +aes-js@^3.1.1, aes-js@^3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/aes-js/-/aes-js-3.1.2.tgz#db9aabde85d5caabbfc0d4f2a4446960f627146a" + integrity sha512-e5pEa2kBnBOgR4Y/p20pskXI74UEz7de8ZGVo58asOtvSVG5YAbJeELPZxOmt+Bnz3rX753YKhfIn4X4l1PPRQ== + agent-base@6: version "6.0.2" resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77" @@ -775,6 +1502,16 @@ aggregate-error@^3.0.0: clean-stack "^2.0.0" indent-string "^4.0.0" +ajv@^6.12.3: + version "6.12.6" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" + integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== + dependencies: + fast-deep-equal "^3.1.1" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.4.1" + uri-js "^4.2.2" + ansi-colors@4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348" @@ -792,11 +1529,21 @@ ansi-escapes@^4.3.0: dependencies: type-fest "^0.21.3" +ansi-regex@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" + integrity sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA== + ansi-regex@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== +ansi-styles@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" + integrity sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA== + ansi-styles@^3.2.1: version "3.2.1" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" @@ -811,6 +1558,19 @@ ansi-styles@^4.0.0, ansi-styles@^4.1.0: dependencies: color-convert "^2.0.1" +antlr4ts@^0.5.0-alpha.4: + version "0.5.0-alpha.4" + resolved "https://registry.yarnpkg.com/antlr4ts/-/antlr4ts-0.5.0-alpha.4.tgz#71702865a87478ed0b40c0709f422cf14d51652a" + integrity sha512-WPQDt1B74OfPv/IMS2ekXAKkTZIHl88uMetg6q3OTqgFxZ/dxDXI0EWLyZid/1Pe6hTftyg5N7gel5wNAGxXyQ== + +any-signal@^2.1.0, any-signal@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/any-signal/-/any-signal-2.1.2.tgz#8d48270de0605f8b218cf9abe8e9c6a0e7418102" + integrity sha512-B+rDnWasMi/eWcajPcCWSlYc7muXOrcYrqgyzcdKisl2H/WTlQ0gip1KyQfr0ZlxJdsuWCj/LWwQm7fhyhRfIQ== + dependencies: + abort-controller "^3.0.0" + native-abort-controller "^1.0.3" + anymatch@~3.1.2: version "3.1.3" resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e" @@ -819,11 +1579,679 @@ anymatch@~3.1.2: normalize-path "^3.0.0" picomatch "^2.0.4" +arg@^4.1.0: + version "4.1.3" + resolved "https://registry.yarnpkg.com/arg/-/arg-4.1.3.tgz#269fc7ad5b8e42cb63c896d5666017261c144089" + integrity sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA== + argparse@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== +array-back@^3.0.1, array-back@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/array-back/-/array-back-3.1.0.tgz#b8859d7a508871c9a7b2cf42f99428f65e96bfb0" + integrity sha512-TkuxA4UCOvxuDK6NZYXCalszEzj+TLszyASooky+i742l9TqsOdYCMJJupxRic61hwquNtppB3hgcuq9SVSH1Q== + +array-back@^4.0.1, array-back@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/array-back/-/array-back-4.0.2.tgz#8004e999a6274586beeb27342168652fdb89fa1e" + integrity sha512-NbdMezxqf94cnNfWLL7V/im0Ub+Anbb0IoZhvzie8+4HJ4nMQuzHuy49FkGYCJK2yAloZ3meiB6AVMClbrI1vg== + +array-buffer-byte-length@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz#fabe8bc193fea865f317fe7807085ee0dee5aead" + integrity sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A== + dependencies: + call-bind "^1.0.2" + is-array-buffer "^3.0.1" + +array-flatten@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" + integrity sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg== + +arraybuffer.prototype.slice@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.2.tgz#98bd561953e3e74bb34938e77647179dfe6e9f12" + integrity sha512-yMBKppFur/fbHu9/6USUe03bZ4knMYiwFBcyiaXB8Go0qNehwX6inYPzK9U0NeQvGxKthcmHcaR8P5MStSRBAw== + dependencies: + array-buffer-byte-length "^1.0.0" + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + get-intrinsic "^1.2.1" + is-array-buffer "^3.0.2" + is-shared-array-buffer "^1.0.2" + +asn1@~0.2.3: + version "0.2.6" + resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.6.tgz#0d3a7bb6e64e02a90c0303b31f292868ea09a08d" + integrity sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ== + dependencies: + safer-buffer "~2.1.0" + +assert-plus@1.0.0, assert-plus@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" + integrity sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw== + +async-eventemitter@^0.2.2: + version "0.2.4" + resolved "https://registry.yarnpkg.com/async-eventemitter/-/async-eventemitter-0.2.4.tgz#f5e7c8ca7d3e46aab9ec40a292baf686a0bafaca" + integrity sha512-pd20BwL7Yt1zwDFy+8MX8F1+WCT8aQeKj0kQnTrH9WaeRETlRamVhD0JtRPmrV4GfOJ2F9CvdQkZeZhnh2TuHw== + dependencies: + async "^2.4.0" + +async-eventemitter@ahultgren/async-eventemitter#fa06e39e56786ba541c180061dbf2c0a5bbf951c: + version "0.2.3" + resolved "https://codeload.github.com/ahultgren/async-eventemitter/tar.gz/fa06e39e56786ba541c180061dbf2c0a5bbf951c" + dependencies: + async "^2.4.0" + +async-limiter@^1.0.0, async-limiter@~1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.1.tgz#dd379e94f0db8310b08291f9d64c3209766617fd" + integrity sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ== + +async@^1.4.2: + version "1.5.2" + resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" + integrity sha512-nSVgobk4rv61R9PUSDtYt7mPVB2olxNR5RWJcAsH676/ef11bUZwvu7+RGYrYauVdDPcO519v68wRhXQtxsV9w== + +async@^2.0.1, async@^2.1.2, async@^2.4.0, async@^2.5.0: + version "2.6.4" + resolved "https://registry.yarnpkg.com/async/-/async-2.6.4.tgz#706b7ff6084664cd7eae713f6f965433b5504221" + integrity sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA== + dependencies: + lodash "^4.17.14" + +async@^3.2.3: + version "3.2.4" + resolved "https://registry.yarnpkg.com/async/-/async-3.2.4.tgz#2d22e00f8cddeb5fde5dd33522b56d1cf569a81c" + integrity sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ== + +asynckit@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" + integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== + +at-least-node@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/at-least-node/-/at-least-node-1.0.0.tgz#602cd4b46e844ad4effc92a8011a3c46e0238dc2" + integrity sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg== + +available-typed-arrays@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz#92f95616501069d07d10edb2fc37d3e1c65123b7" + integrity sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw== + +await-semaphore@^0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/await-semaphore/-/await-semaphore-0.1.3.tgz#2b88018cc8c28e06167ae1cdff02504f1f9688d3" + integrity sha512-d1W2aNSYcz/sxYO4pMGX9vq65qOTu0P800epMud+6cYYX0QcT7zyqcxec3VWzpgvdXo57UWmVbZpLMjX2m1I7Q== + +aws-sign2@~0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" + integrity sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA== + +aws4@^1.8.0: + version "1.12.0" + resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.12.0.tgz#ce1c9d143389679e253b314241ea9aa5cec980d3" + integrity sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg== + +babel-code-frame@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.26.0.tgz#63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b" + integrity sha512-XqYMR2dfdGMW+hd0IUZ2PwK+fGeFkOxZJ0wY+JaQAHzt1Zx8LcvpiZD2NiGkEG8qx0CfkAOr5xt76d1e8vG90g== + dependencies: + chalk "^1.1.3" + esutils "^2.0.2" + js-tokens "^3.0.2" + +babel-core@^6.0.14, babel-core@^6.26.0: + version "6.26.3" + resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-6.26.3.tgz#b2e2f09e342d0f0c88e2f02e067794125e75c207" + integrity sha512-6jyFLuDmeidKmUEb3NM+/yawG0M2bDZ9Z1qbZP59cyHLz8kYGKYwpJP0UwUKKUiTRNvxfLesJnTedqczP7cTDA== + dependencies: + babel-code-frame "^6.26.0" + babel-generator "^6.26.0" + babel-helpers "^6.24.1" + babel-messages "^6.23.0" + babel-register "^6.26.0" + babel-runtime "^6.26.0" + babel-template "^6.26.0" + babel-traverse "^6.26.0" + babel-types "^6.26.0" + babylon "^6.18.0" + convert-source-map "^1.5.1" + debug "^2.6.9" + json5 "^0.5.1" + lodash "^4.17.4" + minimatch "^3.0.4" + path-is-absolute "^1.0.1" + private "^0.1.8" + slash "^1.0.0" + source-map "^0.5.7" + +babel-generator@^6.26.0: + version "6.26.1" + resolved "https://registry.yarnpkg.com/babel-generator/-/babel-generator-6.26.1.tgz#1844408d3b8f0d35a404ea7ac180f087a601bd90" + integrity sha512-HyfwY6ApZj7BYTcJURpM5tznulaBvyio7/0d4zFOeMPUmfxkCjHocCuoLa2SAGzBI8AREcH3eP3758F672DppA== + dependencies: + babel-messages "^6.23.0" + babel-runtime "^6.26.0" + babel-types "^6.26.0" + detect-indent "^4.0.0" + jsesc "^1.3.0" + lodash "^4.17.4" + source-map "^0.5.7" + trim-right "^1.0.1" + +babel-helper-builder-binary-assignment-operator-visitor@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-builder-binary-assignment-operator-visitor/-/babel-helper-builder-binary-assignment-operator-visitor-6.24.1.tgz#cce4517ada356f4220bcae8a02c2b346f9a56664" + integrity sha512-gCtfYORSG1fUMX4kKraymq607FWgMWg+j42IFPc18kFQEsmtaibP4UrqsXt8FlEJle25HUd4tsoDR7H2wDhe9Q== + dependencies: + babel-helper-explode-assignable-expression "^6.24.1" + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-helper-call-delegate@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-call-delegate/-/babel-helper-call-delegate-6.24.1.tgz#ece6aacddc76e41c3461f88bfc575bd0daa2df8d" + integrity sha512-RL8n2NiEj+kKztlrVJM9JT1cXzzAdvWFh76xh/H1I4nKwunzE4INBXn8ieCZ+wh4zWszZk7NBS1s/8HR5jDkzQ== + dependencies: + babel-helper-hoist-variables "^6.24.1" + babel-runtime "^6.22.0" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + +babel-helper-define-map@^6.24.1: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-helper-define-map/-/babel-helper-define-map-6.26.0.tgz#a5f56dab41a25f97ecb498c7ebaca9819f95be5f" + integrity sha512-bHkmjcC9lM1kmZcVpA5t2om2nzT/xiZpo6TJq7UlZ3wqKfzia4veeXbIhKvJXAMzhhEBd3cR1IElL5AenWEUpA== + dependencies: + babel-helper-function-name "^6.24.1" + babel-runtime "^6.26.0" + babel-types "^6.26.0" + lodash "^4.17.4" + +babel-helper-explode-assignable-expression@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-explode-assignable-expression/-/babel-helper-explode-assignable-expression-6.24.1.tgz#f25b82cf7dc10433c55f70592d5746400ac22caa" + integrity sha512-qe5csbhbvq6ccry9G7tkXbzNtcDiH4r51rrPUbwwoTzZ18AqxWYRZT6AOmxrpxKnQBW0pYlBI/8vh73Z//78nQ== + dependencies: + babel-runtime "^6.22.0" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + +babel-helper-function-name@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz#d3475b8c03ed98242a25b48351ab18399d3580a9" + integrity sha512-Oo6+e2iX+o9eVvJ9Y5eKL5iryeRdsIkwRYheCuhYdVHsdEQysbc2z2QkqCLIYnNxkT5Ss3ggrHdXiDI7Dhrn4Q== + dependencies: + babel-helper-get-function-arity "^6.24.1" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + +babel-helper-get-function-arity@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz#8f7782aa93407c41d3aa50908f89b031b1b6853d" + integrity sha512-WfgKFX6swFB1jS2vo+DwivRN4NB8XUdM3ij0Y1gnC21y1tdBoe6xjVnd7NSI6alv+gZXCtJqvrTeMW3fR/c0ng== + dependencies: + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-helper-hoist-variables@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.24.1.tgz#1ecb27689c9d25513eadbc9914a73f5408be7a76" + integrity sha512-zAYl3tqerLItvG5cKYw7f1SpvIxS9zi7ohyGHaI9cgDUjAT6YcY9jIEH5CstetP5wHIVSceXwNS7Z5BpJg+rOw== + dependencies: + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-helper-optimise-call-expression@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.24.1.tgz#f7a13427ba9f73f8f4fa993c54a97882d1244257" + integrity sha512-Op9IhEaxhbRT8MDXx2iNuMgciu2V8lDvYCNQbDGjdBNCjaMvyLf4wl4A3b8IgndCyQF8TwfgsQ8T3VD8aX1/pA== + dependencies: + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-helper-regex@^6.24.1: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-helper-regex/-/babel-helper-regex-6.26.0.tgz#325c59f902f82f24b74faceed0363954f6495e72" + integrity sha512-VlPiWmqmGJp0x0oK27Out1D+71nVVCTSdlbhIVoaBAj2lUgrNjBCRR9+llO4lTSb2O4r7PJg+RobRkhBrf6ofg== + dependencies: + babel-runtime "^6.26.0" + babel-types "^6.26.0" + lodash "^4.17.4" + +babel-helper-remap-async-to-generator@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-remap-async-to-generator/-/babel-helper-remap-async-to-generator-6.24.1.tgz#5ec581827ad723fecdd381f1c928390676e4551b" + integrity sha512-RYqaPD0mQyQIFRu7Ho5wE2yvA/5jxqCIj/Lv4BXNq23mHYu/vxikOy2JueLiBxQknwapwrJeNCesvY0ZcfnlHg== + dependencies: + babel-helper-function-name "^6.24.1" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + +babel-helper-replace-supers@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-replace-supers/-/babel-helper-replace-supers-6.24.1.tgz#bf6dbfe43938d17369a213ca8a8bf74b6a90ab1a" + integrity sha512-sLI+u7sXJh6+ToqDr57Bv973kCepItDhMou0xCP2YPVmR1jkHSCY+p1no8xErbV1Siz5QE8qKT1WIwybSWlqjw== + dependencies: + babel-helper-optimise-call-expression "^6.24.1" + babel-messages "^6.23.0" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + +babel-helpers@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helpers/-/babel-helpers-6.24.1.tgz#3471de9caec388e5c850e597e58a26ddf37602b2" + integrity sha512-n7pFrqQm44TCYvrCDb0MqabAF+JUBq+ijBvNMUxpkLjJaAu32faIexewMumrH5KLLJ1HDyT0PTEqRyAe/GwwuQ== + dependencies: + babel-runtime "^6.22.0" + babel-template "^6.24.1" + +babel-messages@^6.23.0: + version "6.23.0" + resolved "https://registry.yarnpkg.com/babel-messages/-/babel-messages-6.23.0.tgz#f3cdf4703858035b2a2951c6ec5edf6c62f2630e" + integrity sha512-Bl3ZiA+LjqaMtNYopA9TYE9HP1tQ+E5dLxE0XrAzcIJeK2UqF0/EaqXwBn9esd4UmTfEab+P+UYQ1GnioFIb/w== + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-check-es2015-constants@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz#35157b101426fd2ffd3da3f75c7d1e91835bbf8a" + integrity sha512-B1M5KBP29248dViEo1owyY32lk1ZSH2DaNNrXLGt8lyjjHm7pBqAdQ7VKUPR6EEDO323+OvT3MQXbCin8ooWdA== + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-polyfill-corejs2@^0.4.5: + version "0.4.5" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.5.tgz#8097b4cb4af5b64a1d11332b6fb72ef5e64a054c" + integrity sha512-19hwUH5FKl49JEsvyTcoHakh6BE0wgXLLptIyKZ3PijHc/Ci521wygORCUCCred+E/twuqRyAkE02BAWPmsHOg== + dependencies: + "@babel/compat-data" "^7.22.6" + "@babel/helper-define-polyfill-provider" "^0.4.2" + semver "^6.3.1" + +babel-plugin-polyfill-corejs3@^0.8.3: + version "0.8.4" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.8.4.tgz#1fac2b1dcef6274e72b3c72977ed8325cb330591" + integrity sha512-9l//BZZsPR+5XjyJMPtZSK4jv0BsTO1zDac2GC6ygx9WLGlcsnRd1Co0B2zT5fF5Ic6BZy+9m3HNZ3QcOeDKfg== + dependencies: + "@babel/helper-define-polyfill-provider" "^0.4.2" + core-js-compat "^3.32.2" + +babel-plugin-polyfill-regenerator@^0.5.2: + version "0.5.2" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.2.tgz#80d0f3e1098c080c8b5a65f41e9427af692dc326" + integrity sha512-tAlOptU0Xj34V1Y2PNTL4Y0FOJMDB6bZmoW39FeCQIhigGLkqu3Fj6uiXpxIf6Ij274ENdYx64y6Au+ZKlb1IA== + dependencies: + "@babel/helper-define-polyfill-provider" "^0.4.2" + +babel-plugin-syntax-async-functions@^6.8.0: + version "6.13.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz#cad9cad1191b5ad634bf30ae0872391e0647be95" + integrity sha512-4Zp4unmHgw30A1eWI5EpACji2qMocisdXhAftfhXoSV9j0Tvj6nRFE3tOmRY912E0FMRm/L5xWE7MGVT2FoLnw== + +babel-plugin-syntax-exponentiation-operator@^6.8.0: + version "6.13.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-exponentiation-operator/-/babel-plugin-syntax-exponentiation-operator-6.13.0.tgz#9ee7e8337290da95288201a6a57f4170317830de" + integrity sha512-Z/flU+T9ta0aIEKl1tGEmN/pZiI1uXmCiGFRegKacQfEJzp7iNsKloZmyJlQr+75FCJtiFfGIK03SiCvCt9cPQ== + +babel-plugin-syntax-trailing-function-commas@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-6.22.0.tgz#ba0360937f8d06e40180a43fe0d5616fff532cf3" + integrity sha512-Gx9CH3Q/3GKbhs07Bszw5fPTlU+ygrOGfAhEt7W2JICwufpC4SuO0mG0+4NykPBSYPMJhqvVlDBU17qB1D+hMQ== + +babel-plugin-transform-async-to-generator@^6.22.0: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-async-to-generator/-/babel-plugin-transform-async-to-generator-6.24.1.tgz#6536e378aff6cb1d5517ac0e40eb3e9fc8d08761" + integrity sha512-7BgYJujNCg0Ti3x0c/DL3tStvnKS6ktIYOmo9wginv/dfZOrbSZ+qG4IRRHMBOzZ5Awb1skTiAsQXg/+IWkZYw== + dependencies: + babel-helper-remap-async-to-generator "^6.24.1" + babel-plugin-syntax-async-functions "^6.8.0" + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-arrow-functions@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz#452692cb711d5f79dc7f85e440ce41b9f244d221" + integrity sha512-PCqwwzODXW7JMrzu+yZIaYbPQSKjDTAsNNlK2l5Gg9g4rz2VzLnZsStvp/3c46GfXpwkyufb3NCyG9+50FF1Vg== + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-block-scoped-functions@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-block-scoped-functions/-/babel-plugin-transform-es2015-block-scoped-functions-6.22.0.tgz#bbc51b49f964d70cb8d8e0b94e820246ce3a6141" + integrity sha512-2+ujAT2UMBzYFm7tidUsYh+ZoIutxJ3pN9IYrF1/H6dCKtECfhmB8UkHVpyxDwkj0CYbQG35ykoz925TUnBc3A== + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-block-scoping@^6.23.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.26.0.tgz#d70f5299c1308d05c12f463813b0a09e73b1895f" + integrity sha512-YiN6sFAQ5lML8JjCmr7uerS5Yc/EMbgg9G8ZNmk2E3nYX4ckHR01wrkeeMijEf5WHNK5TW0Sl0Uu3pv3EdOJWw== + dependencies: + babel-runtime "^6.26.0" + babel-template "^6.26.0" + babel-traverse "^6.26.0" + babel-types "^6.26.0" + lodash "^4.17.4" + +babel-plugin-transform-es2015-classes@^6.23.0: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.24.1.tgz#5a4c58a50c9c9461e564b4b2a3bfabc97a2584db" + integrity sha512-5Dy7ZbRinGrNtmWpquZKZ3EGY8sDgIVB4CU8Om8q8tnMLrD/m94cKglVcHps0BCTdZ0TJeeAWOq2TK9MIY6cag== + dependencies: + babel-helper-define-map "^6.24.1" + babel-helper-function-name "^6.24.1" + babel-helper-optimise-call-expression "^6.24.1" + babel-helper-replace-supers "^6.24.1" + babel-messages "^6.23.0" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + +babel-plugin-transform-es2015-computed-properties@^6.22.0: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.24.1.tgz#6fe2a8d16895d5634f4cd999b6d3480a308159b3" + integrity sha512-C/uAv4ktFP/Hmh01gMTvYvICrKze0XVX9f2PdIXuriCSvUmV9j+u+BB9f5fJK3+878yMK6dkdcq+Ymr9mrcLzw== + dependencies: + babel-runtime "^6.22.0" + babel-template "^6.24.1" + +babel-plugin-transform-es2015-destructuring@^6.23.0: + version "6.23.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz#997bb1f1ab967f682d2b0876fe358d60e765c56d" + integrity sha512-aNv/GDAW0j/f4Uy1OEPZn1mqD+Nfy9viFGBfQ5bZyT35YqOiqx7/tXdyfZkJ1sC21NyEsBdfDY6PYmLHF4r5iA== + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-duplicate-keys@^6.22.0: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.24.1.tgz#73eb3d310ca969e3ef9ec91c53741a6f1576423e" + integrity sha512-ossocTuPOssfxO2h+Z3/Ea1Vo1wWx31Uqy9vIiJusOP4TbF7tPs9U0sJ9pX9OJPf4lXRGj5+6Gkl/HHKiAP5ug== + dependencies: + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-plugin-transform-es2015-for-of@^6.23.0: + version "6.23.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.23.0.tgz#f47c95b2b613df1d3ecc2fdb7573623c75248691" + integrity sha512-DLuRwoygCoXx+YfxHLkVx5/NpeSbVwfoTeBykpJK7JhYWlL/O8hgAK/reforUnZDlxasOrVPPJVI/guE3dCwkw== + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-function-name@^6.22.0: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz#834c89853bc36b1af0f3a4c5dbaa94fd8eacaa8b" + integrity sha512-iFp5KIcorf11iBqu/y/a7DK3MN5di3pNCzto61FqCNnUX4qeBwcV1SLqe10oXNnCaxBUImX3SckX2/o1nsrTcg== + dependencies: + babel-helper-function-name "^6.24.1" + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-plugin-transform-es2015-literals@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-literals/-/babel-plugin-transform-es2015-literals-6.22.0.tgz#4f54a02d6cd66cf915280019a31d31925377ca2e" + integrity sha512-tjFl0cwMPpDYyoqYA9li1/7mGFit39XiNX5DKC/uCNjBctMxyL1/PT/l4rSlbvBG1pOKI88STRdUsWXB3/Q9hQ== + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-modules-amd@^6.22.0, babel-plugin-transform-es2015-modules-amd@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-6.24.1.tgz#3b3e54017239842d6d19c3011c4bd2f00a00d154" + integrity sha512-LnIIdGWIKdw7zwckqx+eGjcS8/cl8D74A3BpJbGjKTFFNJSMrjN4bIh22HY1AlkUbeLG6X6OZj56BDvWD+OeFA== + dependencies: + babel-plugin-transform-es2015-modules-commonjs "^6.24.1" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + +babel-plugin-transform-es2015-modules-commonjs@^6.23.0, babel-plugin-transform-es2015-modules-commonjs@^6.24.1: + version "6.26.2" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.2.tgz#58a793863a9e7ca870bdc5a881117ffac27db6f3" + integrity sha512-CV9ROOHEdrjcwhIaJNBGMBCodN+1cfkwtM1SbUHmvyy35KGT7fohbpOxkE2uLz1o6odKK2Ck/tz47z+VqQfi9Q== + dependencies: + babel-plugin-transform-strict-mode "^6.24.1" + babel-runtime "^6.26.0" + babel-template "^6.26.0" + babel-types "^6.26.0" + +babel-plugin-transform-es2015-modules-systemjs@^6.23.0: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.24.1.tgz#ff89a142b9119a906195f5f106ecf305d9407d23" + integrity sha512-ONFIPsq8y4bls5PPsAWYXH/21Hqv64TBxdje0FvU3MhIV6QM2j5YS7KvAzg/nTIVLot2D2fmFQrFWCbgHlFEjg== + dependencies: + babel-helper-hoist-variables "^6.24.1" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + +babel-plugin-transform-es2015-modules-umd@^6.23.0: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-6.24.1.tgz#ac997e6285cd18ed6176adb607d602344ad38468" + integrity sha512-LpVbiT9CLsuAIp3IG0tfbVo81QIhn6pE8xBJ7XSeCtFlMltuar5VuBV6y6Q45tpui9QWcy5i0vLQfCfrnF7Kiw== + dependencies: + babel-plugin-transform-es2015-modules-amd "^6.24.1" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + +babel-plugin-transform-es2015-object-super@^6.22.0: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.24.1.tgz#24cef69ae21cb83a7f8603dad021f572eb278f8d" + integrity sha512-8G5hpZMecb53vpD3mjs64NhI1au24TAmokQ4B+TBFBjN9cVoGoOvotdrMMRmHvVZUEvqGUPWL514woru1ChZMA== + dependencies: + babel-helper-replace-supers "^6.24.1" + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-parameters@^6.23.0: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz#57ac351ab49caf14a97cd13b09f66fdf0a625f2b" + integrity sha512-8HxlW+BB5HqniD+nLkQ4xSAVq3bR/pcYW9IigY+2y0dI+Y7INFeTbfAQr+63T3E4UDsZGjyb+l9txUnABWxlOQ== + dependencies: + babel-helper-call-delegate "^6.24.1" + babel-helper-get-function-arity "^6.24.1" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + +babel-plugin-transform-es2015-shorthand-properties@^6.22.0: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.24.1.tgz#24f875d6721c87661bbd99a4622e51f14de38aa0" + integrity sha512-mDdocSfUVm1/7Jw/FIRNw9vPrBQNePy6wZJlR8HAUBLybNp1w/6lr6zZ2pjMShee65t/ybR5pT8ulkLzD1xwiw== + dependencies: + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-plugin-transform-es2015-spread@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz#d6d68a99f89aedc4536c81a542e8dd9f1746f8d1" + integrity sha512-3Ghhi26r4l3d0Js933E5+IhHwk0A1yiutj9gwvzmFbVV0sPMYk2lekhOufHBswX7NCoSeF4Xrl3sCIuSIa+zOg== + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-sticky-regex@^6.22.0: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz#00c1cdb1aca71112cdf0cf6126c2ed6b457ccdbc" + integrity sha512-CYP359ADryTo3pCsH0oxRo/0yn6UsEZLqYohHmvLQdfS9xkf+MbCzE3/Kolw9OYIY4ZMilH25z/5CbQbwDD+lQ== + dependencies: + babel-helper-regex "^6.24.1" + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-plugin-transform-es2015-template-literals@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-template-literals/-/babel-plugin-transform-es2015-template-literals-6.22.0.tgz#a84b3450f7e9f8f1f6839d6d687da84bb1236d8d" + integrity sha512-x8b9W0ngnKzDMHimVtTfn5ryimars1ByTqsfBDwAqLibmuuQY6pgBQi5z1ErIsUOWBdw1bW9FSz5RZUojM4apg== + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-typeof-symbol@^6.23.0: + version "6.23.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-typeof-symbol/-/babel-plugin-transform-es2015-typeof-symbol-6.23.0.tgz#dec09f1cddff94b52ac73d505c84df59dcceb372" + integrity sha512-fz6J2Sf4gYN6gWgRZaoFXmq93X+Li/8vf+fb0sGDVtdeWvxC9y5/bTD7bvfWMEq6zetGEHpWjtzRGSugt5kNqw== + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-unicode-regex@^6.22.0: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz#d38b12f42ea7323f729387f18a7c5ae1faeb35e9" + integrity sha512-v61Dbbihf5XxnYjtBN04B/JBvsScY37R1cZT5r9permN1cp+b70DY3Ib3fIkgn1DI9U3tGgBJZVD8p/mE/4JbQ== + dependencies: + babel-helper-regex "^6.24.1" + babel-runtime "^6.22.0" + regexpu-core "^2.0.0" + +babel-plugin-transform-exponentiation-operator@^6.22.0: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-exponentiation-operator/-/babel-plugin-transform-exponentiation-operator-6.24.1.tgz#2ab0c9c7f3098fa48907772bb813fe41e8de3a0e" + integrity sha512-LzXDmbMkklvNhprr20//RStKVcT8Cu+SQtX18eMHLhjHf2yFzwtQ0S2f0jQ+89rokoNdmwoSqYzAhq86FxlLSQ== + dependencies: + babel-helper-builder-binary-assignment-operator-visitor "^6.24.1" + babel-plugin-syntax-exponentiation-operator "^6.8.0" + babel-runtime "^6.22.0" + +babel-plugin-transform-regenerator@^6.22.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.26.0.tgz#e0703696fbde27f0a3efcacf8b4dca2f7b3a8f2f" + integrity sha512-LS+dBkUGlNR15/5WHKe/8Neawx663qttS6AGqoOUhICc9d1KciBvtrQSuc0PI+CxQ2Q/S1aKuJ+u64GtLdcEZg== + dependencies: + regenerator-transform "^0.10.0" + +babel-plugin-transform-strict-mode@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz#d5faf7aa578a65bbe591cf5edae04a0c67020758" + integrity sha512-j3KtSpjyLSJxNoCDrhwiJad8kw0gJ9REGj8/CqL0HeRyLnvUNYV9zcqluL6QJSXh3nfsLEmSLvwRfGzrgR96Pw== + dependencies: + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-preset-env@^1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/babel-preset-env/-/babel-preset-env-1.7.0.tgz#dea79fa4ebeb883cd35dab07e260c1c9c04df77a" + integrity sha512-9OR2afuKDneX2/q2EurSftUYM0xGu4O2D9adAhVfADDhrYDaxXV0rBbevVYoY9n6nyX1PmQW/0jtpJvUNr9CHg== + dependencies: + babel-plugin-check-es2015-constants "^6.22.0" + babel-plugin-syntax-trailing-function-commas "^6.22.0" + babel-plugin-transform-async-to-generator "^6.22.0" + babel-plugin-transform-es2015-arrow-functions "^6.22.0" + babel-plugin-transform-es2015-block-scoped-functions "^6.22.0" + babel-plugin-transform-es2015-block-scoping "^6.23.0" + babel-plugin-transform-es2015-classes "^6.23.0" + babel-plugin-transform-es2015-computed-properties "^6.22.0" + babel-plugin-transform-es2015-destructuring "^6.23.0" + babel-plugin-transform-es2015-duplicate-keys "^6.22.0" + babel-plugin-transform-es2015-for-of "^6.23.0" + babel-plugin-transform-es2015-function-name "^6.22.0" + babel-plugin-transform-es2015-literals "^6.22.0" + babel-plugin-transform-es2015-modules-amd "^6.22.0" + babel-plugin-transform-es2015-modules-commonjs "^6.23.0" + babel-plugin-transform-es2015-modules-systemjs "^6.23.0" + babel-plugin-transform-es2015-modules-umd "^6.23.0" + babel-plugin-transform-es2015-object-super "^6.22.0" + babel-plugin-transform-es2015-parameters "^6.23.0" + babel-plugin-transform-es2015-shorthand-properties "^6.22.0" + babel-plugin-transform-es2015-spread "^6.22.0" + babel-plugin-transform-es2015-sticky-regex "^6.22.0" + babel-plugin-transform-es2015-template-literals "^6.22.0" + babel-plugin-transform-es2015-typeof-symbol "^6.23.0" + babel-plugin-transform-es2015-unicode-regex "^6.22.0" + babel-plugin-transform-exponentiation-operator "^6.22.0" + babel-plugin-transform-regenerator "^6.22.0" + browserslist "^3.2.6" + invariant "^2.2.2" + semver "^5.3.0" + +babel-register@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-register/-/babel-register-6.26.0.tgz#6ed021173e2fcb486d7acb45c6009a856f647071" + integrity sha512-veliHlHX06wjaeY8xNITbveXSiI+ASFnOqvne/LaIJIqOWi2Ogmj91KOugEz/hoh/fwMhXNBJPCv8Xaz5CyM4A== + dependencies: + babel-core "^6.26.0" + babel-runtime "^6.26.0" + core-js "^2.5.0" + home-or-tmp "^2.0.0" + lodash "^4.17.4" + mkdirp "^0.5.1" + source-map-support "^0.4.15" + +babel-runtime@^6.18.0, babel-runtime@^6.22.0, babel-runtime@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe" + integrity sha512-ITKNuq2wKlW1fJg9sSW52eepoYgZBggvOAHC0u/CYu/qxQ9EVzThCgR69BnSXLHjy2f7SY5zaQ4yt7H9ZVxY2g== + dependencies: + core-js "^2.4.0" + regenerator-runtime "^0.11.0" + +babel-template@^6.24.1, babel-template@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-template/-/babel-template-6.26.0.tgz#de03e2d16396b069f46dd9fff8521fb1a0e35e02" + integrity sha512-PCOcLFW7/eazGUKIoqH97sO9A2UYMahsn/yRQ7uOk37iutwjq7ODtcTNF+iFDSHNfkctqsLRjLP7URnOx0T1fg== + dependencies: + babel-runtime "^6.26.0" + babel-traverse "^6.26.0" + babel-types "^6.26.0" + babylon "^6.18.0" + lodash "^4.17.4" + +babel-traverse@^6.24.1, babel-traverse@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-traverse/-/babel-traverse-6.26.0.tgz#46a9cbd7edcc62c8e5c064e2d2d8d0f4035766ee" + integrity sha512-iSxeXx7apsjCHe9c7n8VtRXGzI2Bk1rBSOJgCCjfyXb6v1aCqE1KSEpq/8SXuVN8Ka/Rh1WDTF0MDzkvTA4MIA== + dependencies: + babel-code-frame "^6.26.0" + babel-messages "^6.23.0" + babel-runtime "^6.26.0" + babel-types "^6.26.0" + babylon "^6.18.0" + debug "^2.6.8" + globals "^9.18.0" + invariant "^2.2.2" + lodash "^4.17.4" + +babel-types@^6.19.0, babel-types@^6.24.1, babel-types@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.26.0.tgz#a3b073f94ab49eb6fa55cd65227a334380632497" + integrity sha512-zhe3V/26rCWsEZK8kZN+HaQj5yQ1CilTObixFzKW1UWjqG7618Twz6YEsCnjfg5gBcJh02DrpCkS9h98ZqDY+g== + dependencies: + babel-runtime "^6.26.0" + esutils "^2.0.2" + lodash "^4.17.4" + to-fast-properties "^1.0.3" + +babelify@^7.3.0: + version "7.3.0" + resolved "https://registry.yarnpkg.com/babelify/-/babelify-7.3.0.tgz#aa56aede7067fd7bd549666ee16dc285087e88e5" + integrity sha512-vID8Fz6pPN5pJMdlUnNFSfrlcx5MUule4k9aKs/zbZPyXxMTcRrB0M4Tarw22L8afr8eYSWxDPYCob3TdrqtlA== + dependencies: + babel-core "^6.0.14" + object-assign "^4.0.0" + +babylon@^6.18.0: + version "6.18.0" + resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.18.0.tgz#af2f3b88fa6f5c1e4c634d1a0f8eac4f55b395e3" + integrity sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ== + +backoff@^2.5.0: + version "2.5.0" + resolved "https://registry.yarnpkg.com/backoff/-/backoff-2.5.0.tgz#f616eda9d3e4b66b8ca7fca79f695722c5f8e26f" + integrity sha512-wC5ihrnUXmR2douXmXLCe5O3zg3GKIyvRi/hi58a/XyRxVI+3/yM0PYueQOZXPXQ9pxBislYkw+sF9b7C/RuMA== + dependencies: + precond "0.2" + balanced-match@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" @@ -841,6 +2269,13 @@ base64-js@^1.3.1: resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== +bcrypt-pbkdf@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e" + integrity sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w== + dependencies: + tweetnacl "^0.14.3" + bech32@1.1.4: version "1.1.4" resolved "https://registry.yarnpkg.com/bech32/-/bech32-1.1.4.tgz#e38c9f37bf179b8eb16ae3a772b40c356d4832e9" @@ -851,35 +2286,120 @@ bigint-crypto-utils@^3.0.23: resolved "https://registry.yarnpkg.com/bigint-crypto-utils/-/bigint-crypto-utils-3.3.0.tgz#72ad00ae91062cf07f2b1def9594006c279c1d77" integrity sha512-jOTSb+drvEDxEq6OuUybOAv/xxoh3cuYRUIPyu8sSHQNKM303UQ2R1DAo45o1AkcIXw6fzbaFI1+xGGdaXs2lg== +bignumber.js@^9.0.0: + version "9.1.2" + resolved "https://registry.yarnpkg.com/bignumber.js/-/bignumber.js-9.1.2.tgz#b7c4242259c008903b13707983b5f4bbd31eda0c" + integrity sha512-2/mKyZH9K85bzOEfhXDBFZTGd1CTs+5IHpeFQo9luiBG7hghdC851Pj2WAhb6E3R6b9tZj/XKhbg4fum+Kepug== + +"bignumber.js@git+https://github.com/debris/bignumber.js#master": + version "2.0.7" + resolved "git+https://github.com/debris/bignumber.js#c7a38de919ed75e6fb6ba38051986e294b328df9" + +"bignumber.js@git+https://github.com/debris/bignumber.js.git#94d7146671b9719e00a09c29b01a691bc85048c2": + version "2.0.7" + resolved "git+https://github.com/debris/bignumber.js.git#94d7146671b9719e00a09c29b01a691bc85048c2" + +"bignumber.js@git+https://github.com/frozeman/bignumber.js-nolookahead.git": + version "2.0.7" + resolved "git+https://github.com/frozeman/bignumber.js-nolookahead.git#57692b3ecfc98bbdd6b3a516cb2353652ea49934" + binary-extensions@^2.0.0: version "2.2.0" resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== +bip39@^2.2.0: + version "2.6.0" + resolved "https://registry.yarnpkg.com/bip39/-/bip39-2.6.0.tgz#9e3a720b42ec8b3fbe4038f1e445317b6a99321c" + integrity sha512-RrnQRG2EgEoqO24ea+Q/fftuPUZLmrEM3qNhhGsA3PbaXaCW791LTzPuVyx/VprXQcTbPJ3K3UeTna8ZnVl2sg== + dependencies: + create-hash "^1.1.0" + pbkdf2 "^3.0.9" + randombytes "^2.0.1" + safe-buffer "^5.0.1" + unorm "^1.3.3" + +bl@^5.0.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/bl/-/bl-5.1.0.tgz#183715f678c7188ecef9fe475d90209400624273" + integrity sha512-tv1ZJHLfTDnXE6tMHv73YgSJaWR2AFuPwMntBe7XL/GBFHnT0CLnsHMogfk5+GzCDC5ZWarSCYaIGATZt9dNsQ== + dependencies: + buffer "^6.0.3" + inherits "^2.0.4" + readable-stream "^3.4.0" + blakejs@^1.1.0: version "1.2.1" resolved "https://registry.yarnpkg.com/blakejs/-/blakejs-1.2.1.tgz#5057e4206eadb4a97f7c0b6e197a505042fc3814" integrity sha512-QXUSXI3QVc/gJME0dBpXrag1kbzOqCjCX8/b54ntNyW6sjtoqxqRk3LTmXzaJoh71zMsDCjM+47jS7XiwN/+fQ== -bn.js@^4.11.0, bn.js@^4.11.8, bn.js@^4.11.9: +blob-to-it@^1.0.1: + version "1.0.4" + resolved "https://registry.yarnpkg.com/blob-to-it/-/blob-to-it-1.0.4.tgz#f6caf7a4e90b7bb9215fa6a318ed6bd8ad9898cb" + integrity sha512-iCmk0W4NdbrWgRRuxOriU8aM5ijeVLI61Zulsmg/lUHNr7pYjoj+U77opLefNagevtrrbMt3JQ5Qip7ar178kA== + dependencies: + browser-readablestream-to-it "^1.0.3" + +bn.js@4.11.6: + version "4.11.6" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.6.tgz#53344adb14617a13f6e8dd2ce28905d1c0ba3215" + integrity sha512-XWwnNNFCuuSQ0m3r3C4LE3EiORltHd9M05pq6FOlVeiophzRbMo50Sbz1ehl8K3Z+jw9+vmgnXefY1hz8X+2wA== + +bn.js@4.11.8: + version "4.11.8" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.8.tgz#2cde09eb5ee341f484746bb0309b3253b1b1442f" + integrity sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA== + +bn.js@^4.11.0, bn.js@^4.11.6, bn.js@^4.11.8, bn.js@^4.11.9, bn.js@^4.4.0: version "4.12.0" resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.12.0.tgz#775b3f278efbb9718eec7361f483fb36fbbfea88" integrity sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA== -bn.js@^5.2.0, bn.js@^5.2.1: +bn.js@^5.1.2, bn.js@^5.2.0, bn.js@^5.2.1: version "5.2.1" resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.2.1.tgz#0bc527a6a0d18d0aa8d5b0538ce4a77dccfa7b70" integrity sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ== -brace-expansion@^1.1.7: - version "1.1.11" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" - integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== +body-parser@1.20.1: + version "1.20.1" + resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.1.tgz#b1812a8912c195cd371a3ee5e66faa2338a5c668" + integrity sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw== dependencies: - balanced-match "^1.0.0" - concat-map "0.0.1" - -brace-expansion@^2.0.1: + bytes "3.1.2" + content-type "~1.0.4" + debug "2.6.9" + depd "2.0.0" + destroy "1.2.0" + http-errors "2.0.0" + iconv-lite "0.4.24" + on-finished "2.4.1" + qs "6.11.0" + raw-body "2.5.1" + type-is "~1.6.18" + unpipe "1.0.0" + +borc@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/borc/-/borc-3.0.0.tgz#49ada1be84de86f57bb1bb89789f34c186dfa4fe" + integrity sha512-ec4JmVC46kE0+layfnwM3l15O70MlFiEbmQHY/vpqIKiUtPVntv4BY4NVnz3N4vb21edV3mY97XVckFvYHWF9g== + dependencies: + bignumber.js "^9.0.0" + buffer "^6.0.3" + commander "^2.15.0" + ieee754 "^1.1.13" + iso-url "^1.1.5" + json-text-sequence "~0.3.0" + readable-stream "^3.6.0" + +brace-expansion@^1.1.7: + version "1.1.11" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" + integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== + dependencies: + balanced-match "^1.0.0" + concat-map "0.0.1" + +brace-expansion@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae" integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA== @@ -893,7 +2413,7 @@ braces@~3.0.2: dependencies: fill-range "^7.0.1" -brorand@^1.1.0: +brorand@^1.0.1, brorand@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" integrity sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w== @@ -908,6 +2428,11 @@ browser-level@^1.0.1: module-error "^1.0.2" run-parallel-limit "^1.1.0" +browser-readablestream-to-it@^1.0.1, browser-readablestream-to-it@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/browser-readablestream-to-it/-/browser-readablestream-to-it-1.0.3.tgz#ac3e406c7ee6cdf0a502dd55db33bab97f7fba76" + integrity sha512-+12sHB+Br8HIh6VAMVEG5r3UXCyESIgDW7kzk3BjIXa43DVqVwL7GC5TW3jeh+72dtcH99pPVpw0X8i0jt+/kw== + browser-stdout@1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.1.tgz#baa559ee14ced73452229bad7326467c61fabd60" @@ -925,6 +2450,24 @@ browserify-aes@^1.2.0: inherits "^2.0.1" safe-buffer "^5.0.1" +browserslist@^3.2.6: + version "3.2.8" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-3.2.8.tgz#b0005361d6471f0f5952797a76fc985f1f978fc6" + integrity sha512-WHVocJYavUwVgVViC0ORikPHQquXwVh939TaelZ4WDqpWgTX/FsGhl/+P4qBUAGcRvtOgDgC+xftNWWp2RUTAQ== + dependencies: + caniuse-lite "^1.0.30000844" + electron-to-chromium "^1.3.47" + +browserslist@^4.21.10, browserslist@^4.21.9: + version "4.21.11" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.21.11.tgz#35f74a3e51adc4d193dcd76ea13858de7b8fecb8" + integrity sha512-xn1UXOKUz7DjdGlg9RrUr0GGiWzI97UQJnugHtH0OLDfJB7jMgoIkYvRIEO1l9EeEERVqeqLYOcFBW9ldjypbQ== + dependencies: + caniuse-lite "^1.0.30001538" + electron-to-chromium "^1.4.526" + node-releases "^2.0.13" + update-browserslist-db "^1.0.13" + bs58@^4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/bs58/-/bs58-4.0.1.tgz#be161e76c354f6f788ae4071f63f34e8c4f0a42a" @@ -941,17 +2484,27 @@ bs58check@^2.1.2: create-hash "^1.1.0" safe-buffer "^5.1.2" +btoa@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/btoa/-/btoa-1.2.1.tgz#01a9909f8b2c93f6bf680ba26131eb30f7fa3d73" + integrity sha512-SB4/MIGlsiVkMcHmT+pSmIPoNDoHg+7cMzmt3Uxt628MTz2487DKSqK/fuhFBrkuqrYv5UCEnACpF4dTFNKc/g== + buffer-from@^1.0.0: version "1.1.2" resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== +buffer-to-arraybuffer@^0.0.5: + version "0.0.5" + resolved "https://registry.yarnpkg.com/buffer-to-arraybuffer/-/buffer-to-arraybuffer-0.0.5.tgz#6064a40fa76eb43c723aba9ef8f6e1216d10511a" + integrity sha512-3dthu5CYiVB1DEJp61FtApNnNndTckcqe4pFcLdvHtrpG+kcyekCJKg4MRiDcFW7A6AODnXB9U4dwQiCW5kzJQ== + buffer-xor@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" integrity sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ== -buffer@^6.0.3: +buffer@^6.0.1, buffer@^6.0.3: version "6.0.3" resolved "https://registry.yarnpkg.com/buffer/-/buffer-6.0.3.tgz#2ace578459cc8fbe2a70aaa8f52ee63b6a74c6c6" integrity sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA== @@ -966,27 +2519,66 @@ busboy@^1.6.0: dependencies: streamsearch "^1.1.0" +bytes@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" + integrity sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw== + bytes@3.1.2: version "3.1.2" resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5" integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg== +call-bind@^1.0.0, call-bind@^1.0.2, call-bind@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" + integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== + dependencies: + function-bind "^1.1.1" + get-intrinsic "^1.0.2" + +camelcase@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-3.0.0.tgz#32fc4b9fcdaf845fcdf7e73bb97cac2261f0ab0a" + integrity sha512-4nhGqUkc4BqbBBB4Q6zLuD7lzzrHYrjKGeYaEji/3tFR5VdJu9v+LilhGIVe8wxEJPPOeWo7eg8dwY13TZ1BNg== + camelcase@^6.0.0: version "6.3.0" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== +caniuse-lite@^1.0.30000844, caniuse-lite@^1.0.30001538: + version "1.0.30001539" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001539.tgz#325a387ab1ed236df2c12dc6cd43a4fff9903a44" + integrity sha512-hfS5tE8bnNiNvEOEkm8HElUHroYwlqMMENEzELymy77+tJ6m+gA2krtHl5hxJaj71OlpC2cHZbdSMX1/YEqEkA== + case@^1.6.3: version "1.6.3" resolved "https://registry.yarnpkg.com/case/-/case-1.6.3.tgz#0a4386e3e9825351ca2e6216c60467ff5f1ea1c9" integrity sha512-mzDSXIPaFwVDvZAHqZ9VlbyF4yyXRuX6IvB06WvPYkqJVO24kX1PPhv9bfpKNFZyxYFmmgo03HUiD8iklmJYRQ== +caseless@~0.12.0: + version "0.12.0" + resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" + integrity sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw== + catering@^2.1.0, catering@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/catering/-/catering-2.1.1.tgz#66acba06ed5ee28d5286133982a927de9a04b510" integrity sha512-K7Qy8O9p76sL3/3m7/zLKbRkyOlSZAgzEaLhyj2mXS8PsCud2Eo4hAb8aLtZqHh0QGqLcb9dlJSu6lHRVENm1w== -chalk@^2.4.2: +chalk@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" + integrity sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A== + dependencies: + ansi-styles "^2.2.1" + escape-string-regexp "^1.0.2" + has-ansi "^2.0.0" + strip-ansi "^3.0.0" + supports-color "^2.0.0" + +chalk@^2.4.1, chalk@^2.4.2: version "2.4.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== @@ -995,7 +2587,7 @@ chalk@^2.4.2: escape-string-regexp "^1.0.5" supports-color "^5.3.0" -chalk@^4.1.0: +chalk@^4.1.0, chalk@^4.1.1: version "4.1.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== @@ -1003,6 +2595,13 @@ chalk@^4.1.0: ansi-styles "^4.1.0" supports-color "^7.1.0" +checkpoint-store@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/checkpoint-store/-/checkpoint-store-1.1.0.tgz#04e4cb516b91433893581e6d4601a78e9552ea06" + integrity sha512-J/NdY2WvIx654cc6LWSq/IYFFCUf75fFTgwzFnmbqyORH4MwgiQCgswLLKBGzmsyTI5V7i5bp/So6sMbDWhedg== + dependencies: + functional-red-black-tree "^1.0.1" + chokidar@3.5.3, chokidar@^3.4.0: version "3.5.3" resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd" @@ -1018,11 +2617,57 @@ chokidar@3.5.3, chokidar@^3.4.0: optionalDependencies: fsevents "~2.3.2" +chronix@0.0.2-beta-plugin-v10: + version "0.0.2-beta-plugin-v10" + resolved "https://registry.yarnpkg.com/chronix/-/chronix-0.0.2-beta-plugin-v10.tgz#772ff79cb3c609df8c7db98c2bcd903a03b4d164" + integrity sha512-pUXQH9C0YZJ0EdryNCW6zDfhjzxjHRXtkVfQGyLLWq6lb0F/pPJTn4LxlN8keAqPv6yBX8nX4LytswEgC8xoew== + dependencies: + "@aragon/os" "^4.4.0" + "@nomiclabs/hardhat-ethers" "^2.2.3" + "@openzeppelin/contracts-v4.4" "npm:@openzeppelin/contracts@4.4.1" + "@typechain/ethers-v5" "^11.1.1" + "@typechain/hardhat" "^8.0.3" + "@types/compression" "^1.7.2" + "@types/express-fileupload" "^1.2.2" + "@types/http-errors" "^2.0.0" + "@types/node-fetch" "^2.6.4" + "@types/ramda" "^0.29.3" + "@types/swagger-ui-express" "^4.1.3" + commander "^11.0.0" + compression "1.7.4" + ethers "5.7.2" + express "^4.18.2" + express-fileupload "1.4.0" + hardhat "^2.17.1" + http-errors "2.0.0" + mime "3.0.0" + node-fetch "2.6.7" + openapi3-ts "^4.1.2" + ramda "0.29.0" + swagger-ui-express "^5.0.0" + triple-beam "1.4.1" + ts-generator "^0.1.1" + ts-node "^10.9.1" + typechain "^8.3.1" + typescript "^5.1.6" + winston "3.10.0" + zod "^3.22.0" + ci-info@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== +cids@^1.0.0, cids@^1.1.6: + version "1.1.9" + resolved "https://registry.yarnpkg.com/cids/-/cids-1.1.9.tgz#402c26db5c07059377bcd6fb82f2a24e7f2f4a4f" + integrity sha512-l11hWRfugIcbGuTZwAM5PwpjPPjyb6UZOGwlHSnOBV5o07XhQ4gNpBN67FbODvpjyHtd+0Xs6KNvUcGBiDRsdg== + dependencies: + multibase "^4.0.1" + multicodec "^3.0.1" + multihashes "^4.0.1" + uint8arrays "^3.0.0" + cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: version "1.0.4" resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de" @@ -1047,6 +2692,15 @@ clean-stack@^2.0.0: resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b" integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A== +cliui@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-3.2.0.tgz#120601537a916d29940f934da3b48d585a39213d" + integrity sha512-0yayqDxWQbqk3ojkYqUKqaAQ6AfNKeKWRNA8kR0WXzAsdHpP4BIaOmMAG87JGuO6qcobyW4GjxHd9PmhEd+T9w== + dependencies: + string-width "^1.0.1" + strip-ansi "^3.0.1" + wrap-ansi "^2.0.0" + cliui@^7.0.2: version "7.0.4" resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f" @@ -1056,7 +2710,17 @@ cliui@^7.0.2: strip-ansi "^6.0.0" wrap-ansi "^7.0.0" -color-convert@^1.9.0: +clone@^2.0.0, clone@^2.1.1: + version "2.1.2" + resolved "https://registry.yarnpkg.com/clone/-/clone-2.1.2.tgz#1b7f4b9f591f1e8f83670401600345a02887435f" + integrity sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w== + +code-point-at@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" + integrity sha512-RpAVKQA5T63xEj6/giIbUEtZwJ4UFIc3ZtvEkiaUERylqe8xb5IvqcgOurZLahv93CLKfxcw5YI+DZcUBRyLXA== + +color-convert@^1.9.0, color-convert@^1.9.3: version "1.9.3" resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== @@ -1075,31 +2739,166 @@ color-name@1.1.3: resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== -color-name@~1.1.4: +color-name@^1.0.0, color-name@~1.1.4: version "1.1.4" resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== +color-string@^1.6.0: + version "1.9.1" + resolved "https://registry.yarnpkg.com/color-string/-/color-string-1.9.1.tgz#4467f9146f036f855b764dfb5bf8582bf342c7a4" + integrity sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg== + dependencies: + color-name "^1.0.0" + simple-swizzle "^0.2.2" + +color@^3.1.3: + version "3.2.1" + resolved "https://registry.yarnpkg.com/color/-/color-3.2.1.tgz#3544dc198caf4490c3ecc9a790b54fe9ff45e164" + integrity sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA== + dependencies: + color-convert "^1.9.3" + color-string "^1.6.0" + +colorspace@1.1.x: + version "1.1.4" + resolved "https://registry.yarnpkg.com/colorspace/-/colorspace-1.1.4.tgz#8d442d1186152f60453bf8070cd66eb364e59243" + integrity sha512-BgvKJiuVu1igBUF2kEjRCZXol6wiiGbY5ipL/oVPwm0BL9sIpMIzM8IK7vwuxIIzOXMV3Ey5w+vxhm0rR/TN8w== + dependencies: + color "^3.1.3" + text-hex "1.0.x" + +combined-stream@^1.0.6, combined-stream@^1.0.8, combined-stream@~1.0.6: + version "1.0.8" + resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" + integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== + dependencies: + delayed-stream "~1.0.0" + command-exists@^1.2.8: version "1.2.9" resolved "https://registry.yarnpkg.com/command-exists/-/command-exists-1.2.9.tgz#c50725af3808c8ab0260fd60b01fbfa25b954f69" integrity sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w== +command-line-args@^5.1.1: + version "5.2.1" + resolved "https://registry.yarnpkg.com/command-line-args/-/command-line-args-5.2.1.tgz#c44c32e437a57d7c51157696893c5909e9cec42e" + integrity sha512-H4UfQhZyakIjC74I9d34fGYDwk3XpSr17QhEd0Q3I9Xq1CETHo4Hcuo87WyWHpAF1aSLjLRf5lD9ZGX2qStUvg== + dependencies: + array-back "^3.1.0" + find-replace "^3.0.0" + lodash.camelcase "^4.3.0" + typical "^4.0.0" + +command-line-usage@^6.1.0: + version "6.1.3" + resolved "https://registry.yarnpkg.com/command-line-usage/-/command-line-usage-6.1.3.tgz#428fa5acde6a838779dfa30e44686f4b6761d957" + integrity sha512-sH5ZSPr+7UStsloltmDh7Ce5fb8XPlHyoPzTpyyMuYCtervL65+ubVZ6Q61cFtFl62UyJlc8/JwERRbAFPUqgw== + dependencies: + array-back "^4.0.2" + chalk "^2.4.2" + table-layout "^1.0.2" + typical "^5.2.0" + commander@3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/commander/-/commander-3.0.2.tgz#6837c3fb677ad9933d1cfba42dd14d5117d6b39e" integrity sha512-Gar0ASD4BDyKC4hl4DwHqDrmvjoxWKZigVnAbn5H1owvm4CxCPdb0HQDehwNYMJpla5+M2tPmPARzhtYuwpHow== +commander@^11.0.0: + version "11.0.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-11.0.0.tgz#43e19c25dbedc8256203538e8d7e9346877a6f67" + integrity sha512-9HMlXtt/BNoYr8ooyjjNRdIilOTkVJXB+GhxMTtOKwk0R4j4lS4NpjuqmRxroBfnfTSHQIHQB7wryHhXarNjmQ== + +commander@^2.15.0: + version "2.20.3" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" + integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== + +compressible@~2.0.16: + version "2.0.18" + resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.18.tgz#af53cca6b070d4c3c0750fbd77286a6d7cc46fba" + integrity sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg== + dependencies: + mime-db ">= 1.43.0 < 2" + +compression@1.7.4: + version "1.7.4" + resolved "https://registry.yarnpkg.com/compression/-/compression-1.7.4.tgz#95523eff170ca57c29a0ca41e6fe131f41e5bb8f" + integrity sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ== + dependencies: + accepts "~1.3.5" + bytes "3.0.0" + compressible "~2.0.16" + debug "2.6.9" + on-headers "~1.0.2" + safe-buffer "5.1.2" + vary "~1.1.2" + concat-map@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== +content-disposition@0.5.4: + version "0.5.4" + resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.4.tgz#8b82b4efac82512a02bb0b1dcec9d2c5e8eb5bfe" + integrity sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ== + dependencies: + safe-buffer "5.2.1" + +content-type@~1.0.4: + version "1.0.5" + resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.5.tgz#8b773162656d1d1086784c8f23a54ce6d73d7918" + integrity sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA== + +convert-source-map@^1.5.1: + version "1.9.0" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.9.0.tgz#7faae62353fb4213366d0ca98358d22e8368b05f" + integrity sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A== + +cookie-signature@1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" + integrity sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ== + +cookie@0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.5.0.tgz#d1f5d71adec6558c58f389987c366aa47e994f8b" + integrity sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw== + cookie@^0.4.1: version "0.4.2" resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.2.tgz#0e41f24de5ecf317947c82fc789e06a884824432" integrity sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA== +cookiejar@^2.1.1: + version "2.1.4" + resolved "https://registry.yarnpkg.com/cookiejar/-/cookiejar-2.1.4.tgz#ee669c1fea2cf42dc31585469d193fef0d65771b" + integrity sha512-LDx6oHrK+PhzLKJU9j5S7/Y3jM/mUHvD/DeI1WQmJn652iPC5Y4TBzC9l+5OMOXlyTTA+SmVUPm0HQUwpD5Jqw== + +core-js-compat@^3.32.2: + version "3.32.2" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.32.2.tgz#8047d1a8b3ac4e639f0d4f66d4431aa3b16e004c" + integrity sha512-+GjlguTDINOijtVRUxrQOv3kfu9rl+qPNdX2LTbJ/ZyVTuxK+ksVSAGX1nHstu4hrv1En/uPTtWgq2gI5wt4AQ== + dependencies: + browserslist "^4.21.10" + +core-js@^2.4.0, core-js@^2.5.0: + version "2.6.12" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.12.tgz#d9333dfa7b065e347cc5682219d6f690859cc2ec" + integrity sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ== + +core-util-is@1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" + integrity sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ== + +core-util-is@~1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85" + integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== + crc-32@^1.2.0: version "1.2.2" resolved "https://registry.yarnpkg.com/crc-32/-/crc-32-1.2.2.tgz#3cad35a934b8bf71f25ca524b6da51fb7eace2ff" @@ -1128,29 +2927,224 @@ create-hmac@^1.1.4, create-hmac@^1.1.7: safe-buffer "^5.0.1" sha.js "^2.4.8" -debug@4, debug@4.3.4, debug@^4.1.1, debug@^4.3.3: +create-require@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333" + integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ== + +cross-fetch@^2.1.0, cross-fetch@^2.1.1: + version "2.2.6" + resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-2.2.6.tgz#2ef0bb39a24ac034787965c457368a28730e220a" + integrity sha512-9JZz+vXCmfKUZ68zAptS7k4Nu8e2qcibe7WVZYps7sAgk5R8GYTc+T1WR0v1rlP9HxgARmOX1UTIJZFytajpNA== + dependencies: + node-fetch "^2.6.7" + whatwg-fetch "^2.0.4" + +cross-spawn@^7.0.3: + version "7.0.3" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" + integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== + dependencies: + path-key "^3.1.0" + shebang-command "^2.0.0" + which "^2.0.1" + +crypto-js@^3.1.4: + version "3.3.0" + resolved "https://registry.yarnpkg.com/crypto-js/-/crypto-js-3.3.0.tgz#846dd1cce2f68aacfa156c8578f926a609b7976b" + integrity sha512-DIT51nX0dCfKltpRiXV+/TVZq+Qq2NgF4644+K7Ttnla7zEzqc+kjJyiB96BHNyUTBxyjzRcZYpUdZa+QAqi6Q== + +dashdash@^1.12.0: + version "1.14.1" + resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" + integrity sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g== + dependencies: + assert-plus "^1.0.0" + +debug@2.6.9, debug@^2.6.8, debug@^2.6.9: + version "2.6.9" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" + integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== + dependencies: + ms "2.0.0" + +debug@4, debug@4.3.4, debug@^4.1.1, debug@^4.3.1, debug@^4.3.3: version "4.3.4" resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== dependencies: ms "2.1.2" +debug@^3.1.0: + version "3.2.7" + resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" + integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== + dependencies: + ms "^2.1.1" + +decamelize@^1.1.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" + integrity sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA== + decamelize@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-4.0.0.tgz#aa472d7bf660eb15f3494efd531cab7f2a709837" integrity sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ== +decode-uri-component@^0.2.0: + version "0.2.2" + resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.2.tgz#e69dbe25d37941171dd540e024c444cd5188e1e9" + integrity sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ== + +decompress-response@^3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-3.3.0.tgz#80a4dd323748384bfa248083622aedec982adff3" + integrity sha512-BzRPQuY1ip+qDonAOz42gRm/pg9F768C+npV/4JOsxRC2sq+Rlk+Q4ZCAsOhnIaMrgarILY+RMUIvMmmX1qAEA== + dependencies: + mimic-response "^1.0.0" + +deep-equal@~1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.1.1.tgz#b5c98c942ceffaf7cb051e24e1434a25a2e6076a" + integrity sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g== + dependencies: + is-arguments "^1.0.4" + is-date-object "^1.0.1" + is-regex "^1.0.4" + object-is "^1.0.1" + object-keys "^1.1.1" + regexp.prototype.flags "^1.2.0" + +deep-extend@~0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" + integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== + +deferred-leveldown@~1.2.1: + version "1.2.2" + resolved "https://registry.yarnpkg.com/deferred-leveldown/-/deferred-leveldown-1.2.2.tgz#3acd2e0b75d1669924bc0a4b642851131173e1eb" + integrity sha512-uukrWD2bguRtXilKt6cAWKyoXrTSMo5m7crUdLfWQmu8kIm88w3QZoUL+6nhpfKVmhHANER6Re3sKoNoZ3IKMA== + dependencies: + abstract-leveldown "~2.6.0" + +define-data-property@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/define-data-property/-/define-data-property-1.1.0.tgz#0db13540704e1d8d479a0656cf781267531b9451" + integrity sha512-UzGwzcjyv3OtAvolTj1GoyNYzfFR+iqbGjcnBEENZVCpM4/Ng1yhGNvS3lR/xDS74Tb2wGG9WzNSNIOS9UVb2g== + dependencies: + get-intrinsic "^1.2.1" + gopd "^1.0.1" + has-property-descriptors "^1.0.0" + +define-properties@^1.1.3, define-properties@^1.1.4, define-properties@^1.2.0: + version "1.2.1" + resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.2.1.tgz#10781cc616eb951a80a034bafcaa7377f6af2b6c" + integrity sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg== + dependencies: + define-data-property "^1.0.1" + has-property-descriptors "^1.0.0" + object-keys "^1.1.1" + +defined@~1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/defined/-/defined-1.0.1.tgz#c0b9db27bfaffd95d6f61399419b893df0f91ebf" + integrity sha512-hsBd2qSVCRE+5PmNdHt1uzyrFu5d3RwmFDKzyNZMFq/EwDNJF7Ee5+D5oEKF0hU6LhtoUF1macFvOe4AskQC1Q== + +delayed-stream@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" + integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== + depd@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df" integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== +destroy@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.2.0.tgz#4803735509ad8be552934c67df614f94e66fa015" + integrity sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg== + +detect-indent@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-4.0.0.tgz#f76d064352cdf43a1cb6ce619c4ee3a9475de208" + integrity sha512-BDKtmHlOzwI7iRuEkhzsnPoi5ypEhWAJB5RvHWe1kMr06js3uK5B3734i3ui5Yd+wOJV1cpE4JnivPD283GU/A== + dependencies: + repeating "^2.0.0" + diff@5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/diff/-/diff-5.0.0.tgz#7ed6ad76d859d030787ec35855f5b1daf31d852b" integrity sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w== -elliptic@6.5.4, elliptic@^6.5.2, elliptic@^6.5.4: +diff@^4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d" + integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== + +dns-over-http-resolver@^1.0.0: + version "1.2.3" + resolved "https://registry.yarnpkg.com/dns-over-http-resolver/-/dns-over-http-resolver-1.2.3.tgz#194d5e140a42153f55bb79ac5a64dd2768c36af9" + integrity sha512-miDiVSI6KSNbi4SVifzO/reD8rMnxgrlnkrlkugOLQpWQTe2qMdHsZp5DmfKjxNE+/T3VAAYLQUZMv9SMr6+AA== + dependencies: + debug "^4.3.1" + native-fetch "^3.0.0" + receptacle "^1.3.2" + +dom-walk@^0.1.0: + version "0.1.2" + resolved "https://registry.yarnpkg.com/dom-walk/-/dom-walk-0.1.2.tgz#0c548bef048f4d1f2a97249002236060daa3fd84" + integrity sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w== + +dotenv@^16.3.1: + version "16.3.1" + resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.3.1.tgz#369034de7d7e5b120972693352a3bf112172cc3e" + integrity sha512-IPzF4w4/Rd94bA9imS68tZBaYyBWSCE47V1RGuMrB94iyTOIEwRmVL2x/4An+6mETpLrKJ5hQkB8W4kFAadeIQ== + +dotignore@~0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/dotignore/-/dotignore-0.1.2.tgz#f942f2200d28c3a76fbdd6f0ee9f3257c8a2e905" + integrity sha512-UGGGWfSauusaVJC+8fgV+NVvBXkCTmVv7sk6nojDZZvuOUNGUy0Zk4UpHQD6EDjS0jpBwcACvH4eofvyzBcRDw== + dependencies: + minimatch "^3.0.4" + +ecc-jsbn@~0.1.1: + version "0.1.2" + resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" + integrity sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw== + dependencies: + jsbn "~0.1.0" + safer-buffer "^2.1.0" + +ee-first@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" + integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== + +electron-fetch@^1.7.2: + version "1.9.1" + resolved "https://registry.yarnpkg.com/electron-fetch/-/electron-fetch-1.9.1.tgz#e28bfe78d467de3f2dec884b1d72b8b05322f30f" + integrity sha512-M9qw6oUILGVrcENMSRRefE1MbHPIz0h79EKIeJWK9v563aT9Qkh8aEHPO1H5vi970wPirNY+jO9OpFoLiMsMGA== + dependencies: + encoding "^0.1.13" + +electron-to-chromium@^1.3.47, electron-to-chromium@^1.4.526: + version "1.4.528" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.528.tgz#7c900fd73d9d2e8bb0dab0e301f25f0f4776ef2c" + integrity sha512-UdREXMXzLkREF4jA8t89FQjA8WHI6ssP38PMY4/4KhXFQbtImnghh4GkCgrtiZwLKUKVD2iTVXvDVQjfomEQuA== + +elliptic@6.3.3: + version "6.3.3" + resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.3.3.tgz#5482d9646d54bcb89fd7d994fc9e2e9568876e3f" + integrity sha512-cIky9SO2H8W2eU1NOLySnhOYJnuEWCq9ZJeHvHd/lXzEL9vyraIMfilZSn57X3aVX+wkfYmqkch2LvmTzkjFpA== + dependencies: + bn.js "^4.4.0" + brorand "^1.0.1" + hash.js "^1.0.0" + inherits "^2.0.1" + +elliptic@6.5.4, elliptic@^6.4.0, elliptic@^6.5.2, elliptic@^6.5.4: version "6.5.4" resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.4.tgz#da37cebd31e79a1367e941b592ed1fbebd58abbb" integrity sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ== @@ -1168,6 +3162,23 @@ emoji-regex@^8.0.0: resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== +enabled@2.0.x: + version "2.0.0" + resolved "https://registry.yarnpkg.com/enabled/-/enabled-2.0.0.tgz#f9dd92ec2d6f4bbc0d5d1e64e21d61cd4665e7c2" + integrity sha512-AKrN98kuwOzMIdAizXGI86UFBoo26CL21UM763y1h/GMSJ4/OHU9k2YlsmBpyScFo/wbLzWQJBMCW4+IO3/+OQ== + +encodeurl@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" + integrity sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w== + +encoding@^0.1.11, encoding@^0.1.13: + version "0.1.13" + resolved "https://registry.yarnpkg.com/encoding/-/encoding-0.1.13.tgz#56574afdd791f54a8e9b2785c0582a2d26210fa9" + integrity sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A== + dependencies: + iconv-lite "^0.6.2" + enquirer@^2.3.0: version "2.4.1" resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.4.1.tgz#93334b3fbd74fc7097b224ab4a8fb7e40bf4ae56" @@ -1181,21 +3192,236 @@ env-paths@^2.2.0: resolved "https://registry.yarnpkg.com/env-paths/-/env-paths-2.2.1.tgz#420399d416ce1fbe9bc0a07c62fa68d67fd0f8f2" integrity sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A== +err-code@^3.0.0, err-code@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/err-code/-/err-code-3.0.1.tgz#a444c7b992705f2b120ee320b09972eef331c920" + integrity sha512-GiaH0KJUewYok+eeY05IIgjtAe4Yltygk9Wqp1V5yVWLdhf0hYZchRjNIT9bb0mSwRcIusT3cx7PJUf3zEIfUA== + +errno@~0.1.1: + version "0.1.8" + resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.8.tgz#8bb3e9c7d463be4976ff888f76b4809ebc2e811f" + integrity sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A== + dependencies: + prr "~1.0.1" + +error-ex@^1.2.0: + version "1.3.2" + resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" + integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== + dependencies: + is-arrayish "^0.2.1" + +es-abstract@^1.22.1: + version "1.22.2" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.22.2.tgz#90f7282d91d0ad577f505e423e52d4c1d93c1b8a" + integrity sha512-YoxfFcDmhjOgWPWsV13+2RNjq1F6UQnfs+8TftwNqtzlmFzEXvlUwdrNrYeaizfjQzRMxkZ6ElWMOJIFKdVqwA== + dependencies: + array-buffer-byte-length "^1.0.0" + arraybuffer.prototype.slice "^1.0.2" + available-typed-arrays "^1.0.5" + call-bind "^1.0.2" + es-set-tostringtag "^2.0.1" + es-to-primitive "^1.2.1" + function.prototype.name "^1.1.6" + get-intrinsic "^1.2.1" + get-symbol-description "^1.0.0" + globalthis "^1.0.3" + gopd "^1.0.1" + has "^1.0.3" + has-property-descriptors "^1.0.0" + has-proto "^1.0.1" + has-symbols "^1.0.3" + internal-slot "^1.0.5" + is-array-buffer "^3.0.2" + is-callable "^1.2.7" + is-negative-zero "^2.0.2" + is-regex "^1.1.4" + is-shared-array-buffer "^1.0.2" + is-string "^1.0.7" + is-typed-array "^1.1.12" + is-weakref "^1.0.2" + object-inspect "^1.12.3" + object-keys "^1.1.1" + object.assign "^4.1.4" + regexp.prototype.flags "^1.5.1" + safe-array-concat "^1.0.1" + safe-regex-test "^1.0.0" + string.prototype.trim "^1.2.8" + string.prototype.trimend "^1.0.7" + string.prototype.trimstart "^1.0.7" + typed-array-buffer "^1.0.0" + typed-array-byte-length "^1.0.0" + typed-array-byte-offset "^1.0.0" + typed-array-length "^1.0.4" + unbox-primitive "^1.0.2" + which-typed-array "^1.1.11" + +es-set-tostringtag@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz#338d502f6f674301d710b80c8592de8a15f09cd8" + integrity sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg== + dependencies: + get-intrinsic "^1.1.3" + has "^1.0.3" + has-tostringtag "^1.0.0" + +es-to-primitive@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" + integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== + dependencies: + is-callable "^1.1.4" + is-date-object "^1.0.1" + is-symbol "^1.0.2" + escalade@^3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== +escape-html@~1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" + integrity sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow== + escape-string-regexp@4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== -escape-string-regexp@^1.0.5: +escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== +esutils@^2.0.2: + version "2.0.3" + resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" + integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== + +etag@~1.8.1: + version "1.8.1" + resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" + integrity sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg== + +eth-block-tracker@^2.2.2: + version "2.3.1" + resolved "https://registry.yarnpkg.com/eth-block-tracker/-/eth-block-tracker-2.3.1.tgz#ab6d177e5b50128fa06d7ae9e0489c7484bac95e" + integrity sha512-NamWuMBIl8kmkJFVj8WzGatySTzQPQag4Xr677yFxdVtIxACFbL/dQowk0MzEqIKk93U1TwY3MjVU6mOcwZnKA== + dependencies: + async-eventemitter ahultgren/async-eventemitter#fa06e39e56786ba541c180061dbf2c0a5bbf951c + eth-query "^2.1.0" + ethereumjs-tx "^1.3.3" + ethereumjs-util "^5.1.3" + ethjs-util "^0.1.3" + json-rpc-engine "^3.6.0" + pify "^2.3.0" + tape "^4.6.3" + +eth-block-tracker@^4.4.2: + version "4.4.3" + resolved "https://registry.yarnpkg.com/eth-block-tracker/-/eth-block-tracker-4.4.3.tgz#766a0a0eb4a52c867a28328e9ae21353812cf626" + integrity sha512-A8tG4Z4iNg4mw5tP1Vung9N9IjgMNqpiMoJ/FouSFwNCGHv2X0mmOYwtQOJzki6XN7r7Tyo01S29p7b224I4jw== + dependencies: + "@babel/plugin-transform-runtime" "^7.5.5" + "@babel/runtime" "^7.5.5" + eth-query "^2.1.0" + json-rpc-random-id "^1.0.1" + pify "^3.0.0" + safe-event-emitter "^1.0.1" + +eth-ens-namehash@^2.0.8: + version "2.0.8" + resolved "https://registry.yarnpkg.com/eth-ens-namehash/-/eth-ens-namehash-2.0.8.tgz#229ac46eca86d52e0c991e7cb2aef83ff0f68bcf" + integrity sha512-VWEI1+KJfz4Km//dadyvBBoBeSQ0MHTXPvr8UIXiLW6IanxvAV+DmlZAijZwAyggqGUfwQBeHf7tc9wzc1piSw== + dependencies: + idna-uts46-hx "^2.3.1" + js-sha3 "^0.5.7" + +eth-json-rpc-errors@^1.0.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/eth-json-rpc-errors/-/eth-json-rpc-errors-1.1.1.tgz#148377ef55155585981c21ff574a8937f9d6991f" + integrity sha512-WT5shJ5KfNqHi9jOZD+ID8I1kuYWNrigtZat7GOQkvwo99f8SzAVaEcWhJUv656WiZOAg3P1RiJQANtUmDmbIg== + dependencies: + fast-safe-stringify "^2.0.6" + +eth-json-rpc-errors@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/eth-json-rpc-errors/-/eth-json-rpc-errors-2.0.2.tgz#c1965de0301fe941c058e928bebaba2e1285e3c4" + integrity sha512-uBCRM2w2ewusRHGxN8JhcuOb2RN3ueAOYH/0BhqdFmQkZx5lj5+fLKTz0mIVOzd4FG5/kUksCzCD7eTEim6gaA== + dependencies: + fast-safe-stringify "^2.0.6" + +eth-lib@0.2.7: + version "0.2.7" + resolved "https://registry.yarnpkg.com/eth-lib/-/eth-lib-0.2.7.tgz#2f93f17b1e23aec3759cd4a3fe20c1286a3fc1ca" + integrity sha512-VqEBQKH92jNsaE8lG9CTq8M/bc12gdAfb5MY8Ro1hVyXkh7rOtY3m5tRHK3Hus5HqIAAwU2ivcUjTLVwsvf/kw== + dependencies: + bn.js "^4.11.6" + elliptic "^6.4.0" + xhr-request-promise "^0.1.2" + +eth-provider@^0.2.5: + version "0.2.5" + resolved "https://registry.yarnpkg.com/eth-provider/-/eth-provider-0.2.5.tgz#2c06b8c190bb76c83f0f5002773a7d516a9aac68" + integrity sha512-brZFNAYY5Js8yBeyk/ukOJQpClvOXrWFI2A+4HJrBu7rPuUIGHiQ7zmbyhYaRg5Xvkkyi9vw5Fvlt/8I6xvHDQ== + dependencies: + ethereum-provider "0.0.6" + oboe "2.1.4" + uuid "3.3.2" + ws "7.1.2" + xhr2-cookies "1.1.0" + +eth-query@^2.1.0, eth-query@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/eth-query/-/eth-query-2.1.2.tgz#d6741d9000106b51510c72db92d6365456a6da5e" + integrity sha512-srES0ZcvwkR/wd5OQBRA1bIJMww1skfGS0s8wlwK3/oNP4+wnds60krvu5R1QbpRQjMmpG5OMIWro5s7gvDPsA== + dependencies: + json-rpc-random-id "^1.0.0" + xtend "^4.0.1" + +eth-rpc-errors@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/eth-rpc-errors/-/eth-rpc-errors-3.0.0.tgz#d7b22653c70dbf9defd4ef490fd08fe70608ca10" + integrity sha512-iPPNHPrLwUlR9xCSYm7HHQjWBasor3+KZfRvwEWxMz3ca0yqnlBeJrnyphkGIXZ4J7AMAaOLmwy4AWhnxOiLxg== + dependencies: + fast-safe-stringify "^2.0.6" + +eth-sig-util@^1.4.2: + version "1.4.2" + resolved "https://registry.yarnpkg.com/eth-sig-util/-/eth-sig-util-1.4.2.tgz#8d958202c7edbaae839707fba6f09ff327606210" + integrity sha512-iNZ576iTOGcfllftB73cPB5AN+XUQAT/T8xzsILsghXC1o8gJUqe3RHlcDqagu+biFpYQ61KQrZZJza8eRSYqw== + dependencies: + ethereumjs-abi "git+https://github.com/ethereumjs/ethereumjs-abi.git" + ethereumjs-util "^5.1.1" + +eth-sig-util@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/eth-sig-util/-/eth-sig-util-3.0.1.tgz#8753297c83a3f58346bd13547b59c4b2cd110c96" + integrity sha512-0Us50HiGGvZgjtWTyAI/+qTzYPMLy5Q451D0Xy68bxq1QMWdoOddDwGvsqcFT27uohKgalM9z/yxplyt+mY2iQ== + dependencies: + ethereumjs-abi "^0.6.8" + ethereumjs-util "^5.1.1" + tweetnacl "^1.0.3" + tweetnacl-util "^0.15.0" + +ethereum-bloom-filters@^1.0.6: + version "1.0.10" + resolved "https://registry.yarnpkg.com/ethereum-bloom-filters/-/ethereum-bloom-filters-1.0.10.tgz#3ca07f4aed698e75bd134584850260246a5fed8a" + integrity sha512-rxJ5OFN3RwjQxDcFP2Z5+Q9ho4eIdEmSc2ht0fCu8Se9nbXjZ7/031uXoUYJ87KHCOdVeiUuwSnoS7hmYAGVHA== + dependencies: + js-sha3 "^0.8.0" + +ethereum-common@0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/ethereum-common/-/ethereum-common-0.2.0.tgz#13bf966131cce1eeade62a1b434249bb4cb120ca" + integrity sha512-XOnAR/3rntJgbCdGhqdaLIxDLWKLmsZOGhHdBKadEr6gEnJLH52k93Ou+TUdFaPN3hJc3isBZBal3U/XZ15abA== + +ethereum-common@^0.0.18: + version "0.0.18" + resolved "https://registry.yarnpkg.com/ethereum-common/-/ethereum-common-0.0.18.tgz#2fdc3576f232903358976eb39da783213ff9523f" + integrity sha512-EoltVQTRNg2Uy4o84qpa2aXymXDJhxm7eos/ACOg0DG4baAbMjhbdAEsx9GeE8sC3XCxnYvrrzZDH8D8MtA2iQ== + ethereum-cryptography@0.1.3, ethereum-cryptography@^0.1.3: version "0.1.3" resolved "https://registry.yarnpkg.com/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz#8d6143cfc3d74bf79bbd8edecdf29e4ae20dd191" @@ -1227,6 +3453,26 @@ ethereum-cryptography@^1.0.3: "@scure/bip32" "1.1.5" "@scure/bip39" "1.1.1" +ethereum-cryptography@^2.0.0: + version "2.1.2" + resolved "https://registry.yarnpkg.com/ethereum-cryptography/-/ethereum-cryptography-2.1.2.tgz#18fa7108622e56481157a5cb7c01c0c6a672eb67" + integrity sha512-Z5Ba0T0ImZ8fqXrJbpHcbpAvIswRte2wGNR/KePnu8GbbvgJ47lMxT/ZZPG6i9Jaht4azPDop4HaM00J0J59ug== + dependencies: + "@noble/curves" "1.1.0" + "@noble/hashes" "1.3.1" + "@scure/bip32" "1.3.1" + "@scure/bip39" "1.2.1" + +ethereum-protocol@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/ethereum-protocol/-/ethereum-protocol-1.0.1.tgz#b7d68142f4105e0ae7b5e178cf42f8d4dc4b93cf" + integrity sha512-3KLX1mHuEsBW0dKG+c6EOJS1NBNqdCICvZW9sInmZTt5aY0oxmHVggYRE0lJu1tcnMD1K+AKHdLi6U43Awm1Vg== + +ethereum-provider@0.0.6: + version "0.0.6" + resolved "https://registry.yarnpkg.com/ethereum-provider/-/ethereum-provider-0.0.6.tgz#6f5a0427c34872339667d9904a8692e8992e6bf5" + integrity sha512-DqtdXNHGi/QtOjEovNOegVVQTd8/NnH9rP27R5SU3j2LKECZbcLGIZ3Z9Ln1SDaeUC5YJGJFYQCUUjfIi7NNyQ== + ethereumjs-abi@^0.6.8: version "0.6.8" resolved "https://registry.yarnpkg.com/ethereumjs-abi/-/ethereumjs-abi-0.6.8.tgz#71bc152db099f70e62f108b7cdfca1b362c6fcae" @@ -1235,7 +3481,79 @@ ethereumjs-abi@^0.6.8: bn.js "^4.11.8" ethereumjs-util "^6.0.0" -ethereumjs-util@^6.0.0, ethereumjs-util@^6.2.1: +"ethereumjs-abi@git+https://github.com/ethereumjs/ethereumjs-abi.git": + version "0.6.8" + resolved "git+https://github.com/ethereumjs/ethereumjs-abi.git#ee3994657fa7a427238e6ba92a84d0b529bbcde0" + dependencies: + bn.js "^4.11.8" + ethereumjs-util "^6.0.0" + +ethereumjs-account@^2.0.3: + version "2.0.5" + resolved "https://registry.yarnpkg.com/ethereumjs-account/-/ethereumjs-account-2.0.5.tgz#eeafc62de544cb07b0ee44b10f572c9c49e00a84" + integrity sha512-bgDojnXGjhMwo6eXQC0bY6UK2liSFUSMwwylOmQvZbSl/D7NXQ3+vrGO46ZeOgjGfxXmgIeVNDIiHw7fNZM4VA== + dependencies: + ethereumjs-util "^5.0.0" + rlp "^2.0.0" + safe-buffer "^5.1.1" + +ethereumjs-block@^1.2.2, ethereumjs-block@^1.6.0: + version "1.7.1" + resolved "https://registry.yarnpkg.com/ethereumjs-block/-/ethereumjs-block-1.7.1.tgz#78b88e6cc56de29a6b4884ee75379b6860333c3f" + integrity sha512-B+sSdtqm78fmKkBq78/QLKJbu/4Ts4P2KFISdgcuZUPDm9x+N7qgBPIIFUGbaakQh8bzuquiRVbdmvPKqbILRg== + dependencies: + async "^2.0.1" + ethereum-common "0.2.0" + ethereumjs-tx "^1.2.2" + ethereumjs-util "^5.0.0" + merkle-patricia-tree "^2.1.2" + +ethereumjs-block@~2.2.0: + version "2.2.2" + resolved "https://registry.yarnpkg.com/ethereumjs-block/-/ethereumjs-block-2.2.2.tgz#c7654be7e22df489fda206139ecd63e2e9c04965" + integrity sha512-2p49ifhek3h2zeg/+da6XpdFR3GlqY3BIEiqxGF8j9aSRIgkb7M1Ky+yULBKJOu8PAZxfhsYA+HxUk2aCQp3vg== + dependencies: + async "^2.0.1" + ethereumjs-common "^1.5.0" + ethereumjs-tx "^2.1.1" + ethereumjs-util "^5.0.0" + merkle-patricia-tree "^2.1.2" + +ethereumjs-common@^1.1.0, ethereumjs-common@^1.5.0: + version "1.5.2" + resolved "https://registry.yarnpkg.com/ethereumjs-common/-/ethereumjs-common-1.5.2.tgz#2065dbe9214e850f2e955a80e650cb6999066979" + integrity sha512-hTfZjwGX52GS2jcVO6E2sx4YuFnf0Fhp5ylo4pEPhEffNln7vS59Hr5sLnp3/QCazFLluuBZ+FZ6J5HTp0EqCA== + +ethereumjs-tx@^1.2.0, ethereumjs-tx@^1.2.2, ethereumjs-tx@^1.3.3, ethereumjs-tx@^1.3.4, ethereumjs-tx@^1.3.7: + version "1.3.7" + resolved "https://registry.yarnpkg.com/ethereumjs-tx/-/ethereumjs-tx-1.3.7.tgz#88323a2d875b10549b8347e09f4862b546f3d89a" + integrity sha512-wvLMxzt1RPhAQ9Yi3/HKZTn0FZYpnsmQdbKYfUUpi4j1SEIcbkd9tndVjcPrufY3V7j2IebOpC00Zp2P/Ay2kA== + dependencies: + ethereum-common "^0.0.18" + ethereumjs-util "^5.0.0" + +ethereumjs-tx@^2.1.1: + version "2.1.2" + resolved "https://registry.yarnpkg.com/ethereumjs-tx/-/ethereumjs-tx-2.1.2.tgz#5dfe7688bf177b45c9a23f86cf9104d47ea35fed" + integrity sha512-zZEK1onCeiORb0wyCXUvg94Ve5It/K6GD1K+26KfFKodiBiS6d9lfCXlUKGBBdQ+bv7Day+JK0tj1K+BeNFRAw== + dependencies: + ethereumjs-common "^1.5.0" + ethereumjs-util "^6.0.0" + +ethereumjs-util@^5.0.0, ethereumjs-util@^5.0.1, ethereumjs-util@^5.1.1, ethereumjs-util@^5.1.2, ethereumjs-util@^5.1.3, ethereumjs-util@^5.1.5: + version "5.2.1" + resolved "https://registry.yarnpkg.com/ethereumjs-util/-/ethereumjs-util-5.2.1.tgz#a833f0e5fca7e5b361384dc76301a721f537bf65" + integrity sha512-v3kT+7zdyCm1HIqWlLNrHGqHGLpGYIhjeHxQjnDXjLT2FyGJDsd3LWMYUo7pAFRrk86CR3nUJfhC81CCoJNNGQ== + dependencies: + bn.js "^4.11.0" + create-hash "^1.1.2" + elliptic "^6.5.2" + ethereum-cryptography "^0.1.3" + ethjs-util "^0.1.3" + rlp "^2.0.0" + safe-buffer "^5.1.1" + +ethereumjs-util@^6.0.0, ethereumjs-util@^6.1.0, ethereumjs-util@^6.2.1: version "6.2.1" resolved "https://registry.yarnpkg.com/ethereumjs-util/-/ethereumjs-util-6.2.1.tgz#fcb4e4dd5ceacb9d2305426ab1a5cd93e3163b69" integrity sha512-W2Ktez4L01Vexijrm5EB6w7dg4n/TgpoYU4avuT5T3Vmnw/eCRtiBrJfQYS/DCSvDIOLn2k57GcHdeBcgVxAqw== @@ -1248,24 +3566,97 @@ ethereumjs-util@^6.0.0, ethereumjs-util@^6.2.1: ethjs-util "0.1.6" rlp "^2.2.3" -ethers@^5.7.1: - version "5.7.2" - resolved "https://registry.yarnpkg.com/ethers/-/ethers-5.7.2.tgz#3a7deeabbb8c030d4126b24f84e525466145872e" - integrity sha512-wswUsmWo1aOK8rR7DIKiWSw9DbLWe6x98Jrn8wcTflTVvaXhAMaB5zGAXy0GYQEQp9iO1iSHWVyARQm11zUtyg== +ethereumjs-util@^7.1.2, ethereumjs-util@^7.1.5: + version "7.1.5" + resolved "https://registry.yarnpkg.com/ethereumjs-util/-/ethereumjs-util-7.1.5.tgz#9ecf04861e4fbbeed7465ece5f23317ad1129181" + integrity sha512-SDl5kKrQAudFBUe5OJM9Ac6WmMyYmXX/6sTmLZ3ffG2eY6ZIGBes3pEDxNN6V72WyOw4CPD5RomKdsa8DAAwLg== dependencies: - "@ethersproject/abi" "5.7.0" - "@ethersproject/abstract-provider" "5.7.0" - "@ethersproject/abstract-signer" "5.7.0" - "@ethersproject/address" "5.7.0" - "@ethersproject/base64" "5.7.0" - "@ethersproject/basex" "5.7.0" - "@ethersproject/bignumber" "5.7.0" - "@ethersproject/bytes" "5.7.0" - "@ethersproject/constants" "5.7.0" - "@ethersproject/contracts" "5.7.0" - "@ethersproject/hash" "5.7.0" - "@ethersproject/hdnode" "5.7.0" - "@ethersproject/json-wallets" "5.7.0" + "@types/bn.js" "^5.1.0" + bn.js "^5.1.2" + create-hash "^1.1.2" + ethereum-cryptography "^0.1.3" + rlp "^2.2.4" + +ethereumjs-vm@^2.0.2, ethereumjs-vm@^2.3.4, ethereumjs-vm@^2.6.0: + version "2.6.0" + resolved "https://registry.yarnpkg.com/ethereumjs-vm/-/ethereumjs-vm-2.6.0.tgz#76243ed8de031b408793ac33907fb3407fe400c6" + integrity sha512-r/XIUik/ynGbxS3y+mvGnbOKnuLo40V5Mj1J25+HEO63aWYREIqvWeRO/hnROlMBE5WoniQmPmhiaN0ctiHaXw== + dependencies: + async "^2.1.2" + async-eventemitter "^0.2.2" + ethereumjs-account "^2.0.3" + ethereumjs-block "~2.2.0" + ethereumjs-common "^1.1.0" + ethereumjs-util "^6.0.0" + fake-merkle-patricia-tree "^1.0.1" + functional-red-black-tree "^1.0.1" + merkle-patricia-tree "^2.3.2" + rustbn.js "~0.2.0" + safe-buffer "^5.1.1" + +ethereumjs-wallet@^0.6.0: + version "0.6.5" + resolved "https://registry.yarnpkg.com/ethereumjs-wallet/-/ethereumjs-wallet-0.6.5.tgz#685e9091645cee230ad125c007658833991ed474" + integrity sha512-MDwjwB9VQVnpp/Dc1XzA6J1a3wgHQ4hSvA1uWNatdpOrtCbPVuQSKSyRnjLvS0a+KKMw2pvQ9Ybqpb3+eW8oNA== + dependencies: + aes-js "^3.1.1" + bs58check "^2.1.2" + ethereum-cryptography "^0.1.3" + ethereumjs-util "^6.0.0" + randombytes "^2.0.6" + safe-buffer "^5.1.2" + scryptsy "^1.2.1" + utf8 "^3.0.0" + uuid "^3.3.2" + +ethereumjs-wallet@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/ethereumjs-wallet/-/ethereumjs-wallet-1.0.2.tgz#2c000504b4c71e8f3782dabe1113d192522e99b6" + integrity sha512-CCWV4RESJgRdHIvFciVQFnCHfqyhXWchTPlkfp28Qc53ufs+doi5I/cV2+xeK9+qEo25XCWfP9MiL+WEPAZfdA== + dependencies: + aes-js "^3.1.2" + bs58check "^2.1.2" + ethereum-cryptography "^0.1.3" + ethereumjs-util "^7.1.2" + randombytes "^2.1.0" + scrypt-js "^3.0.1" + utf8 "^3.0.0" + uuid "^8.3.2" + +ethers@4.0.0-beta.3: + version "4.0.0-beta.3" + resolved "https://registry.yarnpkg.com/ethers/-/ethers-4.0.0-beta.3.tgz#15bef14e57e94ecbeb7f9b39dd0a4bd435bc9066" + integrity sha512-YYPogooSknTwvHg3+Mv71gM/3Wcrx+ZpCzarBj3mqs9njjRkrOo2/eufzhHloOCo3JSoNI4TQJJ6yU5ABm3Uog== + dependencies: + "@types/node" "^10.3.2" + aes-js "3.0.0" + bn.js "^4.4.0" + elliptic "6.3.3" + hash.js "1.1.3" + js-sha3 "0.5.7" + scrypt-js "2.0.3" + setimmediate "1.0.4" + uuid "2.0.1" + xmlhttprequest "1.8.0" + +ethers@5.7.2, ethers@^5.7.1: + version "5.7.2" + resolved "https://registry.yarnpkg.com/ethers/-/ethers-5.7.2.tgz#3a7deeabbb8c030d4126b24f84e525466145872e" + integrity sha512-wswUsmWo1aOK8rR7DIKiWSw9DbLWe6x98Jrn8wcTflTVvaXhAMaB5zGAXy0GYQEQp9iO1iSHWVyARQm11zUtyg== + dependencies: + "@ethersproject/abi" "5.7.0" + "@ethersproject/abstract-provider" "5.7.0" + "@ethersproject/abstract-signer" "5.7.0" + "@ethersproject/address" "5.7.0" + "@ethersproject/base64" "5.7.0" + "@ethersproject/basex" "5.7.0" + "@ethersproject/bignumber" "5.7.0" + "@ethersproject/bytes" "5.7.0" + "@ethersproject/constants" "5.7.0" + "@ethersproject/contracts" "5.7.0" + "@ethersproject/hash" "5.7.0" + "@ethersproject/hdnode" "5.7.0" + "@ethersproject/json-wallets" "5.7.0" "@ethersproject/keccak256" "5.7.0" "@ethersproject/logger" "5.7.0" "@ethersproject/networks" "5.7.1" @@ -1284,7 +3675,15 @@ ethers@^5.7.1: "@ethersproject/web" "5.7.1" "@ethersproject/wordlists" "5.7.0" -ethjs-util@0.1.6, ethjs-util@^0.1.6: +ethjs-unit@0.1.6: + version "0.1.6" + resolved "https://registry.yarnpkg.com/ethjs-unit/-/ethjs-unit-0.1.6.tgz#c665921e476e87bce2a9d588a6fe0405b2c41699" + integrity sha512-/Sn9Y0oKl0uqQuvgFk/zQgR7aw1g36qX/jzSQ5lSwlO0GigPymk4eGQfeNTD03w1dPOqfz8V77Cy43jH56pagw== + dependencies: + bn.js "4.11.6" + number-to-bn "1.7.0" + +ethjs-util@0.1.6, ethjs-util@^0.1.3, ethjs-util@^0.1.6: version "0.1.6" resolved "https://registry.yarnpkg.com/ethjs-util/-/ethjs-util-0.1.6.tgz#f308b62f185f9fe6237132fb2a9818866a5cd536" integrity sha512-CUnVOQq7gSpDHZVVrQW8ExxUETWrnrvXYvYz55wOU8Uj4VCgw56XC2B/fVqQN+f7gmrnRHSLVnFAwsCuNwji8w== @@ -1292,6 +3691,16 @@ ethjs-util@0.1.6, ethjs-util@^0.1.6: is-hex-prefixed "1.0.0" strip-hex-prefix "1.0.0" +event-target-shim@^5.0.0: + version "5.0.1" + resolved "https://registry.yarnpkg.com/event-target-shim/-/event-target-shim-5.0.1.tgz#5d4d3ebdf9583d63a5333ce2deb7480ab2b05789" + integrity sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ== + +events@^3.0.0, events@^3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400" + integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== + evp_bytestokey@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz#7fcbdb198dc71959432efe13842684e0525acb02" @@ -1300,6 +3709,119 @@ evp_bytestokey@^1.0.3: md5.js "^1.3.4" safe-buffer "^5.1.1" +execa@^5.0.0: + version "5.1.1" + resolved "https://registry.yarnpkg.com/execa/-/execa-5.1.1.tgz#f80ad9cbf4298f7bd1d4c9555c21e93741c411dd" + integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg== + dependencies: + cross-spawn "^7.0.3" + get-stream "^6.0.0" + human-signals "^2.1.0" + is-stream "^2.0.0" + merge-stream "^2.0.0" + npm-run-path "^4.0.1" + onetime "^5.1.2" + signal-exit "^3.0.3" + strip-final-newline "^2.0.0" + +express-fileupload@1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/express-fileupload/-/express-fileupload-1.4.0.tgz#be9d70a881d6c2b1ce668df86e4f89ddbf238ec7" + integrity sha512-RjzLCHxkv3umDeZKeFeMg8w7qe0V09w3B7oGZprr/oO2H/ISCgNzuqzn7gV3HRWb37GjRk429CCpSLS2KNTqMQ== + dependencies: + busboy "^1.6.0" + +express@^4.18.2: + version "4.18.2" + resolved "https://registry.yarnpkg.com/express/-/express-4.18.2.tgz#3fabe08296e930c796c19e3c516979386ba9fd59" + integrity sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ== + dependencies: + accepts "~1.3.8" + array-flatten "1.1.1" + body-parser "1.20.1" + content-disposition "0.5.4" + content-type "~1.0.4" + cookie "0.5.0" + cookie-signature "1.0.6" + debug "2.6.9" + depd "2.0.0" + encodeurl "~1.0.2" + escape-html "~1.0.3" + etag "~1.8.1" + finalhandler "1.2.0" + fresh "0.5.2" + http-errors "2.0.0" + merge-descriptors "1.0.1" + methods "~1.1.2" + on-finished "2.4.1" + parseurl "~1.3.3" + path-to-regexp "0.1.7" + proxy-addr "~2.0.7" + qs "6.11.0" + range-parser "~1.2.1" + safe-buffer "5.2.1" + send "0.18.0" + serve-static "1.15.0" + setprototypeof "1.2.0" + statuses "2.0.1" + type-is "~1.6.18" + utils-merge "1.0.1" + vary "~1.1.2" + +extend@~3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" + integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== + +extsprintf@1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" + integrity sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g== + +extsprintf@^1.2.0: + version "1.4.1" + resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.1.tgz#8d172c064867f235c0c84a596806d279bf4bcc07" + integrity sha512-Wrk35e8ydCKDj/ArClo1VrPVmN8zph5V4AtHwIuHhvMXsKf73UT3BOD+azBIW+3wOJ4FhEH7zyaJCFvChjYvMA== + +fake-merkle-patricia-tree@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/fake-merkle-patricia-tree/-/fake-merkle-patricia-tree-1.0.1.tgz#4b8c3acfb520afadf9860b1f14cd8ce3402cddd3" + integrity sha512-Tgq37lkc9pUIgIKw5uitNUKcgcYL3R6JvXtKQbOf/ZSavXbidsksgp/pAY6p//uhw0I4yoMsvTSovvVIsk/qxA== + dependencies: + checkpoint-store "^1.1.0" + +fast-deep-equal@^3.1.1: + version "3.1.3" + resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" + integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== + +fast-fifo@^1.0.0: + version "1.3.2" + resolved "https://registry.yarnpkg.com/fast-fifo/-/fast-fifo-1.3.2.tgz#286e31de96eb96d38a97899815740ba2a4f3640c" + integrity sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ== + +fast-json-stable-stringify@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" + integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== + +fast-safe-stringify@^2.0.6: + version "2.1.1" + resolved "https://registry.yarnpkg.com/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz#c406a83b6e70d9e35ce3b30a81141df30aeba884" + integrity sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA== + +fecha@^4.2.0: + version "4.2.3" + resolved "https://registry.yarnpkg.com/fecha/-/fecha-4.2.3.tgz#4d9ccdbc61e8629b259fdca67e65891448d569fd" + integrity sha512-OP2IUU6HeYKJi3i0z4A19kHMQoLVs4Hc+DPqqxI2h/DPZHTm/vjsfC6P0b4jCMy14XizLBqvndQ+UilD7707Jw== + +fetch-ponyfill@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/fetch-ponyfill/-/fetch-ponyfill-4.1.0.tgz#ae3ce5f732c645eab87e4ae8793414709b239893" + integrity sha512-knK9sGskIg2T7OnYLdZ2hZXn0CtDrAIBxYQLpmEf0BqfdWnwmM1weccUl5+4EdA44tzNSFAuxITPbXtPehUB3g== + dependencies: + node-fetch "~1.7.1" + fill-range@^7.0.1: version "7.0.1" resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" @@ -1307,6 +3829,26 @@ fill-range@^7.0.1: dependencies: to-regex-range "^5.0.1" +finalhandler@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.2.0.tgz#7d23fe5731b207b4640e4fcd00aec1f9207a7b32" + integrity sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg== + dependencies: + debug "2.6.9" + encodeurl "~1.0.2" + escape-html "~1.0.3" + on-finished "2.4.1" + parseurl "~1.3.3" + statuses "2.0.1" + unpipe "~1.0.0" + +find-replace@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/find-replace/-/find-replace-3.0.0.tgz#3e7e23d3b05167a76f770c9fbd5258b0def68c38" + integrity sha512-6Tb2myMioCAgv5kfvP5/PkZZ/ntTpVK39fHY7WkWBgvbeE+VHd/tZuZ4mrC+bxh4cfOZeYKVPaJIZtZXV7GNCQ== + dependencies: + array-back "^3.0.1" + find-up@5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" @@ -1315,6 +3857,14 @@ find-up@5.0.0: locate-path "^6.0.0" path-exists "^4.0.0" +find-up@^1.0.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f" + integrity sha512-jvElSjyuo4EMQGoTwo1uJU5pQMwTW5lS1x05zzfJuTIyLR3zwO27LYrxNg+dlvKpGOuGy/MzBdXh80g0ve5+HA== + dependencies: + path-exists "^2.0.0" + pinkie-promise "^2.0.0" + find-up@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" @@ -1327,11 +3877,51 @@ flat@^5.0.2: resolved "https://registry.yarnpkg.com/flat/-/flat-5.0.2.tgz#8ca6fe332069ffa9d324c327198c598259ceb241" integrity sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ== +fn.name@1.x.x: + version "1.1.0" + resolved "https://registry.yarnpkg.com/fn.name/-/fn.name-1.1.0.tgz#26cad8017967aea8731bc42961d04a3d5988accc" + integrity sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw== + follow-redirects@^1.12.1: version "1.15.2" resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.2.tgz#b460864144ba63f2681096f274c4e57026da2c13" integrity sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA== +for-each@^0.3.3, for-each@~0.3.3: + version "0.3.3" + resolved "https://registry.yarnpkg.com/for-each/-/for-each-0.3.3.tgz#69b447e88a0a5d32c3e7084f3f1710034b21376e" + integrity sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw== + dependencies: + is-callable "^1.1.3" + +forever-agent@~0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" + integrity sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw== + +form-data@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.0.tgz#93919daeaf361ee529584b9b31664dc12c9fa452" + integrity sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww== + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.8" + mime-types "^2.1.12" + +form-data@~2.3.2: + version "2.3.3" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6" + integrity sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ== + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.6" + mime-types "^2.1.12" + +forwarded@0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.2.0.tgz#2269936428aad4c15c7ebe9779a84bf0b2a81811" + integrity sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow== + fp-ts@1.19.3: version "1.19.3" resolved "https://registry.yarnpkg.com/fp-ts/-/fp-ts-1.19.3.tgz#261a60d1088fbff01f91256f91d21d0caaaaa96f" @@ -1342,6 +3932,11 @@ fp-ts@^1.0.0: resolved "https://registry.yarnpkg.com/fp-ts/-/fp-ts-1.19.5.tgz#3da865e585dfa1fdfd51785417357ac50afc520a" integrity sha512-wDNqTimnzs8QqpldiId9OavWK2NptormjXnRJTQecNjzwfyp6P/8s/zG8e4h3ja3oqkKaY72UlTjQYt/1yXf9A== +fresh@0.5.2: + version "0.5.2" + resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" + integrity sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q== + fs-extra@^0.30.0: version "0.30.0" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-0.30.0.tgz#f233ffcc08d4da7d432daa449776989db1df93f0" @@ -1353,7 +3948,7 @@ fs-extra@^0.30.0: path-is-absolute "^1.0.0" rimraf "^2.2.8" -fs-extra@^7.0.1: +fs-extra@^7.0.0, fs-extra@^7.0.1: version "7.0.1" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-7.0.1.tgz#4f189c44aa123b895f722804f55ea23eadc348e9" integrity sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw== @@ -1362,6 +3957,25 @@ fs-extra@^7.0.1: jsonfile "^4.0.0" universalify "^0.1.0" +fs-extra@^8.1.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-8.1.0.tgz#49d43c45a88cd9677668cb7be1b46efdb8d2e1c0" + integrity sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g== + dependencies: + graceful-fs "^4.2.0" + jsonfile "^4.0.0" + universalify "^0.1.0" + +fs-extra@^9.1.0: + version "9.1.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.1.0.tgz#5954460c764a8da2094ba3554bf839e6b9a7c86d" + integrity sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ== + dependencies: + at-least-node "^1.0.0" + graceful-fs "^4.2.0" + jsonfile "^6.0.1" + universalify "^2.0.0" + fs.realpath@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" @@ -1372,16 +3986,76 @@ fsevents@~2.3.2: resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== +function-bind@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" + integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== + +function.prototype.name@^1.1.6: + version "1.1.6" + resolved "https://registry.yarnpkg.com/function.prototype.name/-/function.prototype.name-1.1.6.tgz#cdf315b7d90ee77a4c6ee216c3c3362da07533fd" + integrity sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + functions-have-names "^1.2.3" + functional-red-black-tree@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" integrity sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g== +functions-have-names@^1.2.2, functions-have-names@^1.2.3: + version "1.2.3" + resolved "https://registry.yarnpkg.com/functions-have-names/-/functions-have-names-1.2.3.tgz#0404fe4ee2ba2f607f0e0ec3c80bae994133b834" + integrity sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ== + +get-caller-file@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.3.tgz#f978fa4c90d1dfe7ff2d6beda2a515e713bdcf4a" + integrity sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w== + get-caller-file@^2.0.5: version "2.0.5" resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== +get-intrinsic@^1.0.2, get-intrinsic@^1.1.1, get-intrinsic@^1.1.3, get-intrinsic@^1.2.0, get-intrinsic@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.1.tgz#d295644fed4505fc9cde952c37ee12b477a83d82" + integrity sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw== + dependencies: + function-bind "^1.1.1" + has "^1.0.3" + has-proto "^1.0.1" + has-symbols "^1.0.3" + +get-iterator@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/get-iterator/-/get-iterator-1.0.2.tgz#cd747c02b4c084461fac14f48f6b45a80ed25c82" + integrity sha512-v+dm9bNVfOYsY1OrhaCrmyOcYoSeVvbt+hHZ0Au+T+p1y+0Uyj9aMaGIeUTT6xdpRbWzDeYKvfOslPhggQMcsg== + +get-stream@^6.0.0: + version "6.0.1" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" + integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== + +get-symbol-description@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/get-symbol-description/-/get-symbol-description-1.0.0.tgz#7fdb81c900101fbd564dd5f1a30af5aadc1e58d6" + integrity sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.1.1" + +getpass@^0.1.1: + version "0.1.7" + resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" + integrity sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng== + dependencies: + assert-plus "^1.0.0" + glob-parent@~5.1.2: version "5.1.2" resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" @@ -1389,6 +4063,18 @@ glob-parent@~5.1.2: dependencies: is-glob "^4.0.1" +glob@7.1.7: + version "7.1.7" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.7.tgz#3b193e9233f01d42d0b3f78294bbeeb418f94a90" + integrity sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.4" + once "^1.3.0" + path-is-absolute "^1.0.0" + glob@7.2.0: version "7.2.0" resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.0.tgz#d15535af7732e02e948f4c41628bd910293f6023" @@ -1401,7 +4087,7 @@ glob@7.2.0: once "^1.3.0" path-is-absolute "^1.0.0" -glob@^7.1.3: +glob@^7.1.2, glob@^7.1.3, glob@~7.2.3: version "7.2.3" resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== @@ -1413,12 +4099,52 @@ glob@^7.1.3: once "^1.3.0" path-is-absolute "^1.0.0" -graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.1.9: +global@~4.4.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/global/-/global-4.4.0.tgz#3e7b105179006a323ed71aafca3e9c57a5cc6406" + integrity sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w== + dependencies: + min-document "^2.19.0" + process "^0.11.10" + +globals@^9.18.0: + version "9.18.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-9.18.0.tgz#aa3896b3e69b487f17e31ed2143d69a8e30c2d8a" + integrity sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ== + +globalthis@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/globalthis/-/globalthis-1.0.3.tgz#5852882a52b80dc301b0660273e1ed082f0b6ccf" + integrity sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA== + dependencies: + define-properties "^1.1.3" + +gopd@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/gopd/-/gopd-1.0.1.tgz#29ff76de69dac7489b7c0918a5788e56477c332c" + integrity sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA== + dependencies: + get-intrinsic "^1.1.3" + +graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.1.9, graceful-fs@^4.2.0: version "4.2.11" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== -hardhat@^2.17.3: +har-schema@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" + integrity sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q== + +har-validator@~5.1.3: + version "5.1.5" + resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.5.tgz#1f0803b9f8cb20c0fa13822df1ecddb36bde1efd" + integrity sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w== + dependencies: + ajv "^6.12.3" + har-schema "^2.0.0" + +hardhat@^2.17.1, hardhat@^2.17.3: version "2.17.3" resolved "https://registry.yarnpkg.com/hardhat/-/hardhat-2.17.3.tgz#4cb15f2afdea5f108970ed72e5b81e6e53052cfb" integrity sha512-SFZoYVXW1bWJZrIIKXOA+IgcctfuKXDwENywiYNT2dM3YQc4fXNaTbuk/vpPzHIF50upByx4zW5EqczKYQubsA== @@ -1472,6 +4198,18 @@ hardhat@^2.17.3: uuid "^8.3.2" ws "^7.4.6" +has-ansi@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" + integrity sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg== + dependencies: + ansi-regex "^2.0.0" + +has-bigints@^1.0.1, has-bigints@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.2.tgz#0871bd3e3d51626f6ca0966668ba35d5602d6eaa" + integrity sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ== + has-flag@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" @@ -1482,6 +4220,37 @@ has-flag@^4.0.0: resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== +has-property-descriptors@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz#610708600606d36961ed04c196193b6a607fa861" + integrity sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ== + dependencies: + get-intrinsic "^1.1.1" + +has-proto@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/has-proto/-/has-proto-1.0.1.tgz#1885c1305538958aff469fef37937c22795408e0" + integrity sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg== + +has-symbols@^1.0.2, has-symbols@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8" + integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== + +has-tostringtag@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.0.tgz#7e133818a7d394734f941e73c3d3f9291e658b25" + integrity sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ== + dependencies: + has-symbols "^1.0.2" + +has@^1.0.3, has@~1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" + integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== + dependencies: + function-bind "^1.1.1" + hash-base@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.1.0.tgz#55c381d9e06e1d2997a883b4a3fddfe7f0d3af33" @@ -1491,6 +4260,14 @@ hash-base@^3.0.0: readable-stream "^3.6.0" safe-buffer "^5.2.0" +hash.js@1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.3.tgz#340dedbe6290187151c1ea1d777a3448935df846" + integrity sha512-/UETyP0W22QILqS+6HowevwhEFJ3MBJnwTf75Qob9Wz9t0DPuisL8kW8YZMK62dHAKE1c1p+gY1TtOLY+USEHA== + dependencies: + inherits "^2.0.3" + minimalistic-assert "^1.0.0" + hash.js@1.1.7, hash.js@^1.0.0, hash.js@^1.0.3, hash.js@^1.1.7: version "1.1.7" resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42" @@ -1513,6 +4290,24 @@ hmac-drbg@^1.0.1: minimalistic-assert "^1.0.0" minimalistic-crypto-utils "^1.0.1" +home-or-tmp@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/home-or-tmp/-/home-or-tmp-2.0.0.tgz#e36c3f2d2cae7d746a857e38d18d5f32a7882db8" + integrity sha512-ycURW7oUxE2sNiPVw1HVEFsW+ecOpJ5zaj7eC0RlwhibhRBod20muUN8qu/gzx956YrLolVvs1MTXwKgC2rVEg== + dependencies: + os-homedir "^1.0.0" + os-tmpdir "^1.0.1" + +homedir@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/homedir/-/homedir-0.6.0.tgz#2b21db66bf08a6db38249a3eff52d7d18706af1e" + integrity sha512-KZFBHenkVuyyG4uaqRSXqWJr3HTxcaPguM7rU1BlH/mtbDlzaXNSXTa9AhV+fXEjrNemHu9vtLRIaM8/8OW0xA== + +hosted-git-info@^2.1.4, hosted-git-info@^2.6.0: + version "2.8.9" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.9.tgz#dffc0bf9a21c02209090f2aa69429e1414daf3f9" + integrity sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw== + http-errors@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-2.0.0.tgz#b7774a1486ef73cf7667ac9ae0858c012c57b9d3" @@ -1524,6 +4319,20 @@ http-errors@2.0.0: statuses "2.0.1" toidentifier "1.0.1" +http-https@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/http-https/-/http-https-1.0.0.tgz#2f908dd5f1db4068c058cd6e6d4ce392c913389b" + integrity sha512-o0PWwVCSp3O0wS6FvNr6xfBCHgt0m1tvPLFOCc2iFDKTRAXhB7m8klDf7ErowFH8POa6dVdGatKU5I1YYwzUyg== + +http-signature@~1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" + integrity sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ== + dependencies: + assert-plus "^1.0.0" + jsprim "^1.2.2" + sshpk "^1.7.0" + https-proxy-agent@^5.0.0: version "5.0.1" resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz#c59ef224a04fe8b754f3db0063a25ea30d0005d6" @@ -1532,6 +4341,11 @@ https-proxy-agent@^5.0.0: agent-base "6" debug "4" +human-signals@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" + integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== + iconv-lite@0.4.24: version "0.4.24" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" @@ -1539,11 +4353,30 @@ iconv-lite@0.4.24: dependencies: safer-buffer ">= 2.1.2 < 3" -ieee754@^1.2.1: +iconv-lite@^0.6.2: + version "0.6.3" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.6.3.tgz#a52f80bf38da1952eb5c681790719871a1a72501" + integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw== + dependencies: + safer-buffer ">= 2.1.2 < 3.0.0" + +idna-uts46-hx@^2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/idna-uts46-hx/-/idna-uts46-hx-2.3.1.tgz#a1dc5c4df37eee522bf66d969cc980e00e8711f9" + integrity sha512-PWoF9Keq6laYdIRwwCdhTPl60xRqAloYNMQLiyUnG42VjT53oW07BXIRM+NK7eQjzXjAk2gUvX9caRxlnF9TAA== + dependencies: + punycode "2.1.0" + +ieee754@^1.1.13, ieee754@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== +immediate@^3.2.3: + version "3.3.0" + resolved "https://registry.yarnpkg.com/immediate/-/immediate-3.3.0.tgz#1aef225517836bcdf7f2a2de2600c79ff0269266" + integrity sha512-HR7EVodfFUdQCTIeySw+WDRFJlPcLOJbXfwwZ7Oom6tjsvZ3bOkCDJHehQC3nxJrv7+f9XecwazynjU8e4Vw3Q== + immutable@^4.0.0-rc.12: version "4.3.4" resolved "https://registry.yarnpkg.com/immutable/-/immutable-4.3.4.tgz#2e07b33837b4bb7662f288c244d1ced1ef65a78f" @@ -1562,11 +4395,62 @@ inflight@^1.0.4: once "^1.3.0" wrappy "1" -inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4: +inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.1, inherits@~2.0.3, inherits@~2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== +interface-datastore@^4.0.0: + version "4.0.2" + resolved "https://registry.yarnpkg.com/interface-datastore/-/interface-datastore-4.0.2.tgz#f084adb04d845fd61fb3c5eaae7cf1284f41b5fa" + integrity sha512-/XRmD7oagZMTaK25rV3WFrejLoUwxZcpgE+eNyZNYvb2jlB5P3MwJCIbetJSlVYK7yvaFmJi8s3f9VLcxJjdog== + dependencies: + err-code "^3.0.1" + interface-store "^0.0.2" + ipfs-utils "^8.1.2" + iso-random-stream "^2.0.0" + it-all "^1.0.2" + it-drain "^1.0.1" + it-filter "^1.0.2" + it-take "^1.0.1" + nanoid "^3.0.2" + uint8arrays "^2.1.5" + +interface-ipld-format@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/interface-ipld-format/-/interface-ipld-format-1.0.1.tgz#bee39c70c584a033e186ff057a2be89f215963e3" + integrity sha512-WV/ar+KQJVoQpqRDYdo7YPGYIUHJxCuOEhdvsRpzLqoOIVCqPKdMMYmsLL1nCRsF3yYNio+PAJbCKiv6drrEAg== + dependencies: + cids "^1.1.6" + multicodec "^3.0.1" + multihashes "^4.0.2" + +interface-store@^0.0.2: + version "0.0.2" + resolved "https://registry.yarnpkg.com/interface-store/-/interface-store-0.0.2.tgz#1d43b32f5b7604c374ea56f600c64efbe30e28b8" + integrity sha512-t4c9GKXH1Vi/WxmppGyIi6iedbGo92YmLneopHmbIEIp27ep7VnrYGA6lM/rLsFo5Tj6TJgIqr3FOk8mvPgIWQ== + +internal-slot@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.5.tgz#f2a2ee21f668f8627a4667f309dc0f4fb6674986" + integrity sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ== + dependencies: + get-intrinsic "^1.2.0" + has "^1.0.3" + side-channel "^1.0.4" + +invariant@^2.2.2: + version "2.2.4" + resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6" + integrity sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA== + dependencies: + loose-envify "^1.0.0" + +invert-kv@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6" + integrity sha512-xgs2NH9AE66ucSq4cNG1nhSFghr5l6tdL15Pk+jl46bmmBapgoaY/AacXyaDznAqmGL99TiLSQgO/XazFSKYeQ== + io-ts@1.10.4: version "1.10.4" resolved "https://registry.yarnpkg.com/io-ts/-/io-ts-1.10.4.tgz#cd5401b138de88e4f920adbcb7026e2d1967e6e2" @@ -1574,6 +4458,189 @@ io-ts@1.10.4: dependencies: fp-ts "^1.0.0" +ip-regex@^4.0.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-4.3.0.tgz#687275ab0f57fa76978ff8f4dddc8a23d5990db5" + integrity sha512-B9ZWJxHHOHUhUjCPrMpLD4xEq35bUTClHM1S6CBU5ixQnkZmwipwgc96vAd7AAGM9TGHvJR+Uss+/Ak6UphK+Q== + +ipaddr.js@1.9.1: + version "1.9.1" + resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" + integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== + +ipfs-core-types@^0.5.2: + version "0.5.2" + resolved "https://registry.yarnpkg.com/ipfs-core-types/-/ipfs-core-types-0.5.2.tgz#e1e026f32c9799e9fa5d6a2556d49558bd5b16d6" + integrity sha512-DOQeL+GFGYMTlnbdtMeBzvfVnyAalSgCfPr8XUCI+FVBZZWwzkt5jZZzGDmF87HVRrMR3FuVyBKZj772mcXKyQ== + dependencies: + cids "^1.1.6" + interface-datastore "^4.0.0" + ipld-block "^0.11.1" + multiaddr "^9.0.1" + multibase "^4.0.2" + +ipfs-core-utils@^0.8.3: + version "0.8.3" + resolved "https://registry.yarnpkg.com/ipfs-core-utils/-/ipfs-core-utils-0.8.3.tgz#7033266e17156600effb794c703a4164ecbd8387" + integrity sha512-PY7PkCgCtVYtNOe1C3ew1+5D9NqXqizb886R/lyGWe+KsmWtBQkQIk0ZIDwKyHGvG2KA2QQeIDzdOmzBQBJtHQ== + dependencies: + any-signal "^2.1.2" + blob-to-it "^1.0.1" + browser-readablestream-to-it "^1.0.1" + cids "^1.1.6" + err-code "^3.0.1" + ipfs-core-types "^0.5.2" + ipfs-unixfs "^4.0.3" + ipfs-utils "^8.1.2" + it-all "^1.0.4" + it-map "^1.0.4" + it-peekable "^1.0.1" + multiaddr "^9.0.1" + multiaddr-to-uri "^7.0.0" + parse-duration "^1.0.0" + timeout-abort-controller "^1.1.1" + uint8arrays "^2.1.3" + +ipfs-http-client@^50.0.0: + version "50.1.2" + resolved "https://registry.yarnpkg.com/ipfs-http-client/-/ipfs-http-client-50.1.2.tgz#31b60f4bd301b2addbc6fd1288f5f973d57afc2a" + integrity sha512-ZbJlED4wqwFXQFVB9FQDs20ygdq7O/zSq4AvO9KRAmkqUj2TsCWCteUz2fBMnGWLh2tExxeSl/rQbHbJptb8JQ== + dependencies: + abort-controller "^3.0.0" + any-signal "^2.1.2" + cids "^1.1.6" + debug "^4.1.1" + form-data "^4.0.0" + ipfs-core-types "^0.5.2" + ipfs-core-utils "^0.8.3" + ipfs-unixfs "^4.0.3" + ipfs-utils "^8.1.2" + ipld-block "^0.11.0" + ipld-dag-cbor "^1.0.0" + ipld-dag-pb "^0.22.1" + ipld-raw "^7.0.0" + it-last "^1.0.4" + it-map "^1.0.4" + it-tar "^3.0.0" + it-to-stream "^1.0.0" + merge-options "^3.0.4" + multiaddr "^9.0.1" + multibase "^4.0.2" + multicodec "^3.0.1" + multihashes "^4.0.2" + nanoid "^3.1.12" + native-abort-controller "^1.0.3" + parse-duration "^1.0.0" + stream-to-it "^0.2.2" + uint8arrays "^2.1.3" + +ipfs-unixfs@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/ipfs-unixfs/-/ipfs-unixfs-4.0.3.tgz#7c43e5726052ade4317245358ac541ef3d63d94e" + integrity sha512-hzJ3X4vlKT8FQ3Xc4M1szaFVjsc1ZydN+E4VQ91aXxfpjFn9G2wsMo1EFdAXNq/BUnN5dgqIOMP5zRYr3DTsAw== + dependencies: + err-code "^3.0.1" + protobufjs "^6.10.2" + +ipfs-utils@^8.1.2: + version "8.1.6" + resolved "https://registry.yarnpkg.com/ipfs-utils/-/ipfs-utils-8.1.6.tgz#431cb1711e3b666fbc7e4ff830c758e2527da308" + integrity sha512-V/cwb6113DrDhrjDTWImA6+zmJbpdbUkxdxmEQO7it8ykV76bBmzU1ZXSM0QR0qxGy9VW8dkUlPAC2K10VgSmw== + dependencies: + abort-controller "^3.0.0" + any-signal "^2.1.0" + buffer "^6.0.1" + electron-fetch "^1.7.2" + err-code "^3.0.1" + is-electron "^2.2.0" + iso-url "^1.1.5" + it-glob "~0.0.11" + it-to-stream "^1.0.0" + merge-options "^3.0.4" + nanoid "^3.1.20" + native-abort-controller "^1.0.3" + native-fetch "^3.0.0" + node-fetch "https://registry.npmjs.org/@achingbrain/node-fetch/-/node-fetch-2.6.7.tgz" + react-native-fetch-api "^2.0.0" + stream-to-it "^0.2.2" + +ipld-block@^0.11.0, ipld-block@^0.11.1: + version "0.11.1" + resolved "https://registry.yarnpkg.com/ipld-block/-/ipld-block-0.11.1.tgz#c3a7b41aee3244187bd87a73f980e3565d299b6e" + integrity sha512-sDqqLqD5qh4QzGq6ssxLHUCnH4emCf/8F8IwjQM2cjEEIEHMUj57XhNYgmGbemdYPznUhffxFGEHsruh5+HQRw== + dependencies: + cids "^1.0.0" + +ipld-dag-cbor@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/ipld-dag-cbor/-/ipld-dag-cbor-1.0.1.tgz#1e07cb289aec26e393508e99d2a51ff624d876a1" + integrity sha512-PZh8rHnRETX5bj60i73W2oq6BXoZnIvYCBDwIffYVJgxMr7BEVd5PycAARBiT6daORJ/4zbqEFR5CcrjeCtm/A== + dependencies: + borc "^3.0.0" + cids "^1.0.0" + interface-ipld-format "^1.0.0" + is-circular "^1.0.2" + multicodec "^3.0.1" + multihashing-async "^2.0.0" + uint8arrays "^2.1.3" + +ipld-dag-pb@^0.22.1: + version "0.22.3" + resolved "https://registry.yarnpkg.com/ipld-dag-pb/-/ipld-dag-pb-0.22.3.tgz#6d5af28b5752236a5cb0e0a1888c87dd733b55cd" + integrity sha512-dfG5C5OVAR4FEP7Al2CrHWvAyIM7UhAQrjnOYOIxXGQz5NlEj6wGX0XQf6Ru6or1na6upvV3NQfstapQG8X2rg== + dependencies: + cids "^1.0.0" + interface-ipld-format "^1.0.0" + multicodec "^3.0.1" + multihashing-async "^2.0.0" + protobufjs "^6.10.2" + stable "^0.1.8" + uint8arrays "^2.0.5" + +ipld-raw@^7.0.0: + version "7.0.1" + resolved "https://registry.yarnpkg.com/ipld-raw/-/ipld-raw-7.0.1.tgz#ec1684a218ec6aeb6e1825a7c77fcbc86e4c302c" + integrity sha512-oaiy0Ot23NCnoBA7sLvPL9qFRC6JDB0IsdZL6rUeZJxzxabQuBLNGYXcqjQ8jlF0UPLEUSO+h8OJh2DZPzL2aQ== + dependencies: + cids "^1.1.6" + interface-ipld-format "^1.0.0" + multicodec "^3.0.1" + multihashing-async "^2.1.2" + +is-arguments@^1.0.4: + version "1.1.1" + resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.1.1.tgz#15b3f88fda01f2a97fec84ca761a560f123efa9b" + integrity sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA== + dependencies: + call-bind "^1.0.2" + has-tostringtag "^1.0.0" + +is-array-buffer@^3.0.1, is-array-buffer@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/is-array-buffer/-/is-array-buffer-3.0.2.tgz#f2653ced8412081638ecb0ebbd0c41c6e0aecbbe" + integrity sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.2.0" + is-typed-array "^1.1.10" + +is-arrayish@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" + integrity sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg== + +is-arrayish@^0.3.1: + version "0.3.2" + resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.3.2.tgz#4574a2ae56f7ab206896fb431eaeed066fdf8f03" + integrity sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ== + +is-bigint@^1.0.1: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.0.4.tgz#08147a1875bc2b32005d41ccd8291dffc6691df3" + integrity sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg== + dependencies: + has-bigints "^1.0.1" + is-binary-path@~2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" @@ -1581,21 +4648,87 @@ is-binary-path@~2.1.0: dependencies: binary-extensions "^2.0.0" +is-boolean-object@^1.1.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.1.2.tgz#5c6dc200246dd9321ae4b885a114bb1f75f63719" + integrity sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA== + dependencies: + call-bind "^1.0.2" + has-tostringtag "^1.0.0" + is-buffer@^2.0.5: version "2.0.5" resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-2.0.5.tgz#ebc252e400d22ff8d77fa09888821a24a658c191" integrity sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ== +is-callable@^1.1.3, is-callable@^1.1.4, is-callable@^1.2.7: + version "1.2.7" + resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.7.tgz#3bc2a85ea742d9e36205dcacdd72ca1fdc51b055" + integrity sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA== + +is-circular@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-circular/-/is-circular-1.0.2.tgz#2e0ab4e9835f4c6b0ea2b9855a84acd501b8366c" + integrity sha512-YttjnrswnUYRVJvxCvu8z+PGMUSzC2JttP0OEXezlAEdp3EXzhf7IZ3j0gRAybJBQupedIZFhY61Tga6E0qASA== + +is-core-module@^2.13.0: + version "2.13.0" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.13.0.tgz#bb52aa6e2cbd49a30c2ba68c42bf3435ba6072db" + integrity sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ== + dependencies: + has "^1.0.3" + +is-date-object@^1.0.1: + version "1.0.5" + resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.5.tgz#0841d5536e724c25597bf6ea62e1bd38298df31f" + integrity sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ== + dependencies: + has-tostringtag "^1.0.0" + +is-electron@^2.2.0: + version "2.2.2" + resolved "https://registry.yarnpkg.com/is-electron/-/is-electron-2.2.2.tgz#3778902a2044d76de98036f5dc58089ac4d80bb9" + integrity sha512-FO/Rhvz5tuw4MCWkpMzHFKWD2LsfHzIb7i6MdPYZ/KW7AlxawyLkqdy+jPZP1WubqEADE3O4FUENlJHDfQASRg== + is-extglob@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== +is-finite@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-finite/-/is-finite-1.1.0.tgz#904135c77fb42c0641d6aa1bcdbc4daa8da082f3" + integrity sha512-cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w== + +is-fn@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-fn/-/is-fn-1.0.0.tgz#9543d5de7bcf5b08a22ec8a20bae6e286d510d8c" + integrity sha512-XoFPJQmsAShb3jEQRfzf2rqXavq7fIqF/jOekp308JlThqrODnMpweVSGilKTCXELfLhltGP2AGgbQGVP8F1dg== + +is-fullwidth-code-point@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" + integrity sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw== + dependencies: + number-is-nan "^1.0.0" + is-fullwidth-code-point@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== +is-function@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-function/-/is-function-1.0.2.tgz#4f097f30abf6efadac9833b17ca5dc03f8144e08" + integrity sha512-lw7DUp0aWXYg+CBCN+JKkcE0Q2RayZnSvnZBlwgxHBQhqt5pZNVy4Ri7H9GmmXkdu7LUthszM+Tor1u/2iBcpQ== + +is-generator-function@^1.0.7: + version "1.0.10" + resolved "https://registry.yarnpkg.com/is-generator-function/-/is-generator-function-1.0.10.tgz#f1558baf1ac17e0deea7c0415c438351ff2b3c72" + integrity sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A== + dependencies: + has-tostringtag "^1.0.0" + is-glob@^4.0.1, is-glob@~4.0.1: version "4.0.3" resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" @@ -1608,6 +4741,25 @@ is-hex-prefixed@1.0.0: resolved "https://registry.yarnpkg.com/is-hex-prefixed/-/is-hex-prefixed-1.0.0.tgz#7d8d37e6ad77e5d127148913c573e082d777f554" integrity sha512-WvtOiug1VFrE9v1Cydwm+FnXd3+w9GaeVUss5W4v/SLy3UW00vP+6iNF2SdnfiBoLy4bTqVdkftNGTUeOFVsbA== +is-ip@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/is-ip/-/is-ip-3.1.0.tgz#2ae5ddfafaf05cb8008a62093cf29734f657c5d8" + integrity sha512-35vd5necO7IitFPjd/YBeqwWnyDWbuLH9ZXQdMfDA8TEo7pv5X8yfrvVO3xbJbLUlERCMvf6X0hTUamQxCYJ9Q== + dependencies: + ip-regex "^4.0.0" + +is-negative-zero@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.2.tgz#7bf6f03a28003b8b3965de3ac26f664d765f3150" + integrity sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA== + +is-number-object@^1.0.4: + version "1.0.7" + resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.7.tgz#59d50ada4c45251784e9904f5246c742f07a42fc" + integrity sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ== + dependencies: + has-tostringtag "^1.0.0" + is-number@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" @@ -1618,21 +4770,231 @@ is-plain-obj@^2.1.0: resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-2.1.0.tgz#45e42e37fccf1f40da8e5f76ee21515840c09287" integrity sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA== -is-unicode-supported@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz#3f26c76a809593b52bfa2ecb5710ed2779b522a7" +is-regex@^1.0.4, is-regex@^1.1.4, is-regex@~1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.4.tgz#eef5663cd59fa4c0ae339505323df6854bb15958" + integrity sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg== + dependencies: + call-bind "^1.0.2" + has-tostringtag "^1.0.0" + +is-shared-array-buffer@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz#8f259c573b60b6a32d4058a1a07430c0a7344c79" + integrity sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA== + dependencies: + call-bind "^1.0.2" + +is-stream@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" + integrity sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ== + +is-stream@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077" + integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== + +is-string@^1.0.5, is-string@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.7.tgz#0dd12bf2006f255bb58f695110eff7491eebc0fd" + integrity sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg== + dependencies: + has-tostringtag "^1.0.0" + +is-symbol@^1.0.2, is-symbol@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.4.tgz#a6dac93b635b063ca6872236de88910a57af139c" + integrity sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg== + dependencies: + has-symbols "^1.0.2" + +is-typed-array@^1.1.10, is-typed-array@^1.1.12, is-typed-array@^1.1.3, is-typed-array@^1.1.9: + version "1.1.12" + resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.12.tgz#d0bab5686ef4a76f7a73097b95470ab199c57d4a" + integrity sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg== + dependencies: + which-typed-array "^1.1.11" + +is-typedarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" + integrity sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA== + +is-unicode-supported@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz#3f26c76a809593b52bfa2ecb5710ed2779b522a7" integrity sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw== +is-utf8@^0.2.0: + version "0.2.1" + resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72" + integrity sha512-rMYPYvCzsXywIsldgLaSoPlw5PfoB/ssr7hY4pLfcodrA5M/eArza1a9VmTiNIBNMjOGr1Ow9mTyU2o69U6U9Q== + +is-weakref@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-weakref/-/is-weakref-1.0.2.tgz#9529f383a9338205e89765e0392efc2f100f06f2" + integrity sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ== + dependencies: + call-bind "^1.0.2" + +isarray@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" + integrity sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ== + +isarray@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.5.tgz#8af1e4c1221244cc62459faf38940d4e644a5723" + integrity sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw== + +isarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" + integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ== + +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== + +iso-constants@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/iso-constants/-/iso-constants-0.1.2.tgz#3d2456ed5aeaa55d18564f285ba02a47a0d885b4" + integrity sha512-OTCM5ZCQsHBCI4Wdu4tSxvDIkmDHd5EwJDps5mKqnQnWJSKlnwMs3EDZ4n3Fh1tmkWkDlyd2vCDbEYuPbyrUNQ== + +iso-random-stream@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/iso-random-stream/-/iso-random-stream-2.0.2.tgz#a24f77c34cfdad9d398707d522a6a0cc640ff27d" + integrity sha512-yJvs+Nnelic1L2vH2JzWvvPQFA4r7kSTnpST/+LkAQjSz0hos2oqLD+qIVi9Qk38Hoe7mNDt3j0S27R58MVjLQ== + dependencies: + events "^3.3.0" + readable-stream "^3.4.0" + +iso-url@^1.1.5: + version "1.2.1" + resolved "https://registry.yarnpkg.com/iso-url/-/iso-url-1.2.1.tgz#db96a49d8d9a64a1c889fc07cc525d093afb1811" + integrity sha512-9JPDgCN4B7QPkLtYAAOrEuAWvP9rWvR5offAr0/SeF046wIkglqH3VXgYYP6NcsKslH80UIVgmPqNe3j7tG2ng== + +isomorphic-fetch@^2.2.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz#611ae1acf14f5e81f729507472819fe9733558a9" + integrity sha512-9c4TNAKYXM5PRyVcwUZrF3W09nQ+sO7+jydgs4ZGW9dhsLG2VOlISJABombdQqQRXCwuYG3sYV/puGf5rp0qmA== + dependencies: + node-fetch "^1.0.1" + whatwg-fetch ">=0.10.0" + +isstream@~0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" + integrity sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g== + +it-all@^1.0.2, it-all@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/it-all/-/it-all-1.0.6.tgz#852557355367606295c4c3b7eff0136f07749335" + integrity sha512-3cmCc6Heqe3uWi3CVM/k51fa/XbMFpQVzFoDsV0IZNHSQDyAXl3c4MjHkFX5kF3922OGj7Myv1nSEUgRtcuM1A== + +it-concat@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/it-concat/-/it-concat-2.0.0.tgz#b4dc02aeb7365bada05b247c1ee50f3bbc147419" + integrity sha512-jchrEB3fHlUENWkVJRmbFJ1A7gcjJDmwiolQsHhVC14DpUIbX8fgr3SOC7XNE5OoUUQNL6/RaMCPChkPemyQUw== + dependencies: + bl "^5.0.0" + +it-drain@^1.0.1: + version "1.0.5" + resolved "https://registry.yarnpkg.com/it-drain/-/it-drain-1.0.5.tgz#0466d4e286b37bcd32599d4e99b37a87cb8cfdf6" + integrity sha512-r/GjkiW1bZswC04TNmUnLxa6uovme7KKwPhc+cb1hHU65E3AByypHH6Pm91WHuvqfFsm+9ws0kPtDBV3/8vmIg== + +it-filter@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/it-filter/-/it-filter-1.0.3.tgz#66ea0cc4bf84af71bebd353c05a9c5735fcba751" + integrity sha512-EI3HpzUrKjTH01miLHWmhNWy3Xpbx4OXMXltgrNprL5lDpF3giVpHIouFpr5l+evXw6aOfxhnt01BIB+4VQA+w== + +it-glob@~0.0.11: + version "0.0.14" + resolved "https://registry.yarnpkg.com/it-glob/-/it-glob-0.0.14.tgz#24f5e7fa48f9698ce7dd410355f327470c91eb90" + integrity sha512-TKKzs9CglbsihSpcwJPXN5DBUssu4akRzPlp8QJRCoLrKoaOpyY2V1qDlxx+UMivn0i114YyTd4AawWl7eqIdw== + dependencies: + "@types/minimatch" "^3.0.4" + minimatch "^3.0.4" + +it-last@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/it-last/-/it-last-1.0.6.tgz#4106232e5905ec11e16de15a0e9f7037eaecfc45" + integrity sha512-aFGeibeiX/lM4bX3JY0OkVCFkAw8+n9lkukkLNivbJRvNz8lI3YXv5xcqhFUV2lDJiraEK3OXRDbGuevnnR67Q== + +it-map@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/it-map/-/it-map-1.0.6.tgz#6aa547e363eedcf8d4f69d8484b450bc13c9882c" + integrity sha512-XT4/RM6UHIFG9IobGlQPFQUrlEKkU4eBUFG3qhWhfAdh1JfF2x11ShCrKCdmZ0OiZppPfoLuzcfA4cey6q3UAQ== + +it-peekable@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/it-peekable/-/it-peekable-1.0.3.tgz#8ebe933767d9c5aa0ae4ef8e9cb3a47389bced8c" + integrity sha512-5+8zemFS+wSfIkSZyf0Zh5kNN+iGyccN02914BY4w/Dj+uoFEoPSvj5vaWn8pNZJNSxzjW0zHRxC3LUb2KWJTQ== + +it-reader@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/it-reader/-/it-reader-3.0.0.tgz#56596c7742ec7c63b7f7998f6bfa3f712e333d0e" + integrity sha512-NxR40odATeaBmSefn6Xn43DplYvn2KtEKQzn4jrTRuPYXMky5M4e+KQ7aTJh0k0vkytLyeenGO1I1GXlGm4laQ== + dependencies: + bl "^5.0.0" + +it-take@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/it-take/-/it-take-1.0.2.tgz#b5f1570014db7c3454897898b69bb7ac9c3bffc1" + integrity sha512-u7I6qhhxH7pSevcYNaMECtkvZW365ARqAIt9K+xjdK1B2WUDEjQSfETkOCT8bxFq/59LqrN3cMLUtTgmDBaygw== + +it-tar@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/it-tar/-/it-tar-3.0.0.tgz#d25f2777c0da4d4bec1b01a1ab9d79495f459f4f" + integrity sha512-VhD1Hnx4IXDcQgYJnJgltkn+w5F8kiJaB46lqovh+YWfty2JGW7i40QQjWbSvcg1QfaU8is8AVX8xwx/Db9oOg== + dependencies: + bl "^5.0.0" + buffer "^6.0.3" + iso-constants "^0.1.2" + it-concat "^2.0.0" + it-reader "^3.0.0" + p-defer "^3.0.0" + +it-to-stream@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/it-to-stream/-/it-to-stream-1.0.0.tgz#6c47f91d5b5df28bda9334c52782ef8e97fe3a4a" + integrity sha512-pLULMZMAB/+vbdvbZtebC0nWBTbG581lk6w8P7DfIIIKUfa8FbY7Oi0FxZcFPbxvISs7A9E+cMpLDBc1XhpAOA== + dependencies: + buffer "^6.0.3" + fast-fifo "^1.0.0" + get-iterator "^1.0.2" + p-defer "^3.0.0" + p-fifo "^1.0.0" + readable-stream "^3.6.0" + js-sdsl@^4.1.4: version "4.4.2" resolved "https://registry.yarnpkg.com/js-sdsl/-/js-sdsl-4.4.2.tgz#2e3c031b1f47d3aca8b775532e3ebb0818e7f847" integrity sha512-dwXFwByc/ajSV6m5bcKAPwe4yDDF6D614pxmIi5odytzxRlwqF6nwoiCek80Ixc7Cvma5awClxrzFtxCQvcM8w== -js-sha3@0.8.0: +js-sha3@0.5.7, js-sha3@^0.5.7: + version "0.5.7" + resolved "https://registry.yarnpkg.com/js-sha3/-/js-sha3-0.5.7.tgz#0d4ffd8002d5333aabaf4a23eed2f6374c9f28e7" + integrity sha512-GII20kjaPX0zJ8wzkTbNDYMY7msuZcTWk8S5UOh6806Jq/wz1J8/bnr8uGU0DAUmYDjj2Mr4X1cW8v/GLYnR+g== + +js-sha3@0.8.0, js-sha3@^0.8.0: version "0.8.0" resolved "https://registry.yarnpkg.com/js-sha3/-/js-sha3-0.8.0.tgz#b9b7a5da73afad7dedd0f8c463954cbde6818840" integrity sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q== +"js-tokens@^3.0.0 || ^4.0.0": + version "4.0.0" + resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" + integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== + +js-tokens@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" + integrity sha512-RjTcuD4xjtthQkaWH7dFlH85L+QaVtSoOyGdZ3g6HFhS9dFNDfLyqgm2NFe2X6cQpeFmt0452FJjFG5UameExg== + js-yaml@4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" @@ -1640,6 +5002,87 @@ js-yaml@4.1.0: dependencies: argparse "^2.0.1" +jsbn@~0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" + integrity sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg== + +jsesc@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-1.3.0.tgz#46c3fec8c1892b12b0833db9bc7622176dbab34b" + integrity sha512-Mke0DA0QjUWuJlhsE0ZPPhYiJkRap642SmI/4ztCFaUs6V2AiH1sfecc+57NgaryfAA2VR3v6O+CSjC1jZJKOA== + +jsesc@~0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" + integrity sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA== + +json-rpc-engine@^3.6.0: + version "3.8.0" + resolved "https://registry.yarnpkg.com/json-rpc-engine/-/json-rpc-engine-3.8.0.tgz#9d4ff447241792e1d0a232f6ef927302bb0c62a9" + integrity sha512-6QNcvm2gFuuK4TKU1uwfH0Qd/cOSb9c1lls0gbnIhciktIUQJwz6NQNAW4B1KiGPenv7IKu97V222Yo1bNhGuA== + dependencies: + async "^2.0.1" + babel-preset-env "^1.7.0" + babelify "^7.3.0" + json-rpc-error "^2.0.0" + promise-to-callback "^1.0.0" + safe-event-emitter "^1.0.1" + +json-rpc-engine@^5.1.3: + version "5.4.0" + resolved "https://registry.yarnpkg.com/json-rpc-engine/-/json-rpc-engine-5.4.0.tgz#75758609d849e1dba1e09021ae473f3ab63161e5" + integrity sha512-rAffKbPoNDjuRnXkecTjnsE3xLLrb00rEkdgalINhaYVYIxDwWtvYBr9UFbhTvPB1B2qUOLoFd/cV6f4Q7mh7g== + dependencies: + eth-rpc-errors "^3.0.0" + safe-event-emitter "^1.0.1" + +json-rpc-error@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/json-rpc-error/-/json-rpc-error-2.0.0.tgz#a7af9c202838b5e905c7250e547f1aff77258a02" + integrity sha512-EwUeWP+KgAZ/xqFpaP6YDAXMtCJi+o/QQpCQFIYyxr01AdADi2y413eM8hSqJcoQym9WMePAJWoaODEJufC4Ug== + dependencies: + inherits "^2.0.1" + +json-rpc-random-id@^1.0.0, json-rpc-random-id@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json-rpc-random-id/-/json-rpc-random-id-1.0.1.tgz#ba49d96aded1444dbb8da3d203748acbbcdec8c8" + integrity sha512-RJ9YYNCkhVDBuP4zN5BBtYAzEl03yq/jIIsyif0JY9qyJuQQZNeDK7anAPKKlyEtLSj2s8h6hNh2F8zO5q7ScA== + +json-schema-traverse@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" + integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== + +json-schema@0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.4.0.tgz#f7de4cf6efab838ebaeb3236474cbba5a1930ab5" + integrity sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA== + +json-stable-stringify@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-1.0.2.tgz#e06f23128e0bbe342dc996ed5a19e28b57b580e0" + integrity sha512-eunSSaEnxV12z+Z73y/j5N37/In40GK4GmsSy+tEHJMxknvqnA7/djeYtAgW0GsWHUfg+847WJjKaEylk2y09g== + dependencies: + jsonify "^0.0.1" + +json-stringify-safe@~5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" + integrity sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA== + +json-text-sequence@~0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/json-text-sequence/-/json-text-sequence-0.3.0.tgz#6603e0ee45da41f949669fd18744b97fb209e6ce" + integrity sha512-7khKIYPKwXQem4lWXfpIN/FEnhztCeRPSxH4qm3fVlqulwujrRDD54xAwDDn/qVKpFtV550+QAkcWJcufzqQuA== + dependencies: + "@sovpro/delimited-stream" "^1.1.0" + +json5@^0.5.1: + version "0.5.1" + resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821" + integrity sha512-4xrs1aW+6N5DalkqSVA8fxh458CXvR99WU8WLKmq4v8eWAL86Xo3BVqyd3SkA9wEVjCMqyvvRRkshAdOnBp5rw== + jsonfile@^2.1.0: version "2.4.0" resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-2.4.0.tgz#3736a2b428b87bbda0cc83b53fa3d633a35c2ae8" @@ -1654,6 +5097,30 @@ jsonfile@^4.0.0: optionalDependencies: graceful-fs "^4.1.6" +jsonfile@^6.0.1: + version "6.1.0" + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae" + integrity sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ== + dependencies: + universalify "^2.0.0" + optionalDependencies: + graceful-fs "^4.1.6" + +jsonify@^0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.1.tgz#2aa3111dae3d34a0f151c63f3a45d995d9420978" + integrity sha512-2/Ki0GcmuqSrgFyelQq9M05y7PS0mEwuIzrf3f1fPqkVDVRvZrPZtVSMHxdgo8Aq0sxAOb/cr2aqqA3LeWHVPg== + +jsprim@^1.2.2: + version "1.4.2" + resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.2.tgz#712c65533a15c878ba59e9ed5f0e26d5b77c5feb" + integrity sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw== + dependencies: + assert-plus "1.0.0" + extsprintf "1.3.0" + json-schema "0.4.0" + verror "1.10.0" + keccak@^3.0.0, keccak@^3.0.2: version "3.0.3" resolved "https://registry.yarnpkg.com/keccak/-/keccak-3.0.3.tgz#4bc35ad917be1ef54ff246f904c2bbbf9ac61276" @@ -1670,6 +5137,47 @@ klaw@^1.0.0: optionalDependencies: graceful-fs "^4.1.9" +kuler@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/kuler/-/kuler-2.0.0.tgz#e2c570a3800388fb44407e851531c1d670b061b3" + integrity sha512-Xq9nH7KlWZmXAtodXDDRE7vs6DU1gTU8zYDHDiWLSip45Egwq3plLHzPn27NgvzL2r1LMPC1vdqh98sQxtqj4A== + +lcid@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/lcid/-/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835" + integrity sha512-YiGkH6EnGrDGqLMITnGjXtGmNtjoXw9SVUzcaos8RBi7Ps0VBylkq+vOcY9QE5poLasPCR849ucFUkl0UzUyOw== + dependencies: + invert-kv "^1.0.0" + +level-codec@~7.0.0: + version "7.0.1" + resolved "https://registry.yarnpkg.com/level-codec/-/level-codec-7.0.1.tgz#341f22f907ce0f16763f24bddd681e395a0fb8a7" + integrity sha512-Ua/R9B9r3RasXdRmOtd+t9TCOEIIlts+TN/7XTT2unhDaL6sJn83S3rUyljbr6lVtw49N3/yA0HHjpV6Kzb2aQ== + +level-errors@^1.0.3: + version "1.1.2" + resolved "https://registry.yarnpkg.com/level-errors/-/level-errors-1.1.2.tgz#4399c2f3d3ab87d0625f7e3676e2d807deff404d" + integrity sha512-Sw/IJwWbPKF5Ai4Wz60B52yj0zYeqzObLh8k1Tk88jVmD51cJSKWSYpRyhVIvFzZdvsPqlH5wfhp/yxdsaQH4w== + dependencies: + errno "~0.1.1" + +level-errors@~1.0.3: + version "1.0.5" + resolved "https://registry.yarnpkg.com/level-errors/-/level-errors-1.0.5.tgz#83dbfb12f0b8a2516bdc9a31c4876038e227b859" + integrity sha512-/cLUpQduF6bNrWuAC4pwtUKA5t669pCsCi2XbmojG2tFeOr9j6ShtdDCtFFQO1DRt+EVZhx9gPzP9G2bUaG4ig== + dependencies: + errno "~0.1.1" + +level-iterator-stream@~1.3.0: + version "1.3.1" + resolved "https://registry.yarnpkg.com/level-iterator-stream/-/level-iterator-stream-1.3.1.tgz#e43b78b1a8143e6fa97a4f485eb8ea530352f2ed" + integrity sha512-1qua0RHNtr4nrZBgYlpV0qHHeHpcRRWTxEZJ8xsemoHAXNL5tbooh4tPEEqIqsbWCAJBmUmkwYK/sW5OrFjWWw== + dependencies: + inherits "^2.0.1" + level-errors "^1.0.3" + readable-stream "^1.0.33" + xtend "^4.0.0" + level-supports@^4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/level-supports/-/level-supports-4.0.1.tgz#431546f9d81f10ff0fea0e74533a0e875c08c66a" @@ -1683,6 +5191,14 @@ level-transcoder@^1.0.1: buffer "^6.0.3" module-error "^1.0.1" +level-ws@0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/level-ws/-/level-ws-0.0.0.tgz#372e512177924a00424b0b43aef2bb42496d228b" + integrity sha512-XUTaO/+Db51Uiyp/t7fCMGVFOTdtLS/NIACxE/GHsij15mKzxksZifKVjlXDF41JMUP/oM1Oc4YNGdKnc3dVLw== + dependencies: + readable-stream "~1.0.15" + xtend "~2.1.1" + level@^8.0.0: version "8.0.0" resolved "https://registry.yarnpkg.com/level/-/level-8.0.0.tgz#41b4c515dabe28212a3e881b61c161ffead14394" @@ -1691,6 +5207,30 @@ level@^8.0.0: browser-level "^1.0.1" classic-level "^1.2.0" +levelup@^1.2.1: + version "1.3.9" + resolved "https://registry.yarnpkg.com/levelup/-/levelup-1.3.9.tgz#2dbcae845b2bb2b6bea84df334c475533bbd82ab" + integrity sha512-VVGHfKIlmw8w1XqpGOAGwq6sZm2WwWLmlDcULkKWQXEA5EopA8OBNJ2Ck2v6bdk8HeEZSbCSEgzXadyQFm76sQ== + dependencies: + deferred-leveldown "~1.2.1" + level-codec "~7.0.0" + level-errors "~1.0.3" + level-iterator-stream "~1.3.0" + prr "~1.0.1" + semver "~5.4.1" + xtend "~4.0.0" + +load-json-file@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0" + integrity sha512-cy7ZdNRXdablkXYNI049pthVeXFurRyb9+hA/dZzerZ0pGTx42z+y+ssxBaVV2l70t1muq5IdKhn4UtcoGUY9A== + dependencies: + graceful-fs "^4.1.2" + parse-json "^2.2.0" + pify "^2.0.0" + pinkie-promise "^2.0.0" + strip-bom "^2.0.0" + locate-path@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" @@ -1706,7 +5246,32 @@ locate-path@^6.0.0: dependencies: p-locate "^5.0.0" -lodash@^4.17.11: +lodash.assign@^4.0.3, lodash.assign@^4.0.6: + version "4.2.0" + resolved "https://registry.yarnpkg.com/lodash.assign/-/lodash.assign-4.2.0.tgz#0d99f3ccd7a6d261d19bdaeb9245005d285808e7" + integrity sha512-hFuH8TY+Yji7Eja3mGiuAxBqLagejScbG8GbG0j6o9vzn0YL14My+ktnqtZgFTosKymC9/44wP6s7xyuLfnClw== + +lodash.camelcase@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6" + integrity sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA== + +lodash.debounce@^4.0.8: + version "4.0.8" + resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" + integrity sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow== + +lodash.flatmap@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.flatmap/-/lodash.flatmap-4.5.0.tgz#ef8cbf408f6e48268663345305c6acc0b778702e" + integrity sha512-/OcpcAGWlrZyoHGeHh3cAoa6nGdX6QYtmzNP84Jqol6UEQQ2gIaU3H+0eICcjcKGl0/XF8LWOujNn9lffsnaOg== + +lodash.merge@^4.6.2: + version "4.6.2" + resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" + integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== + +lodash@^4.17.11, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.4: version "4.17.21" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== @@ -1719,6 +5284,30 @@ log-symbols@4.1.0: chalk "^4.1.0" is-unicode-supported "^0.1.0" +logform@^2.3.2, logform@^2.4.0: + version "2.5.1" + resolved "https://registry.yarnpkg.com/logform/-/logform-2.5.1.tgz#44c77c34becd71b3a42a3970c77929e52c6ed48b" + integrity sha512-9FyqAm9o9NKKfiAKfZoYo9bGXXuwMkxQiQttkT4YjjVtQVIQtK6LmVtlxmCaFswo6N4AfEkHqZTV0taDtPotNg== + dependencies: + "@colors/colors" "1.5.0" + "@types/triple-beam" "^1.3.2" + fecha "^4.2.0" + ms "^2.1.1" + safe-stable-stringify "^2.3.1" + triple-beam "^1.3.0" + +long@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/long/-/long-4.0.0.tgz#9a7b71cfb7d361a194ea555241c92f7468d5bf28" + integrity sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA== + +loose-envify@^1.0.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" + integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== + dependencies: + js-tokens "^3.0.0 || ^4.0.0" + lru-cache@^5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" @@ -1731,6 +5320,16 @@ lru_map@^0.3.3: resolved "https://registry.yarnpkg.com/lru_map/-/lru_map-0.3.3.tgz#b5c8351b9464cbd750335a79650a0ec0e56118dd" integrity sha512-Pn9cox5CsMYngeDbmChANltQl+5pi6XmTrraMSzhPmMBbmgcxmqWry0U3PGapCU1yB4/LqCcom7qhHZiF/jGfQ== +ltgt@~2.2.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/ltgt/-/ltgt-2.2.1.tgz#f35ca91c493f7b73da0e07495304f17b31f87ee5" + integrity sha512-AI2r85+4MquTw9ZYqabu4nMwy9Oftlfa/e/52t9IjtfG+mGBbTNdAoZ3RQKLHR6r0wQnwZnPIEh/Ya6XTWAKNA== + +make-error@^1.1.1: + version "1.3.6" + resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2" + integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== + mcl-wasm@^0.7.1: version "0.7.9" resolved "https://registry.yarnpkg.com/mcl-wasm/-/mcl-wasm-0.7.9.tgz#c1588ce90042a8700c3b60e40efb339fc07ab87f" @@ -1745,6 +5344,23 @@ md5.js@^1.3.4: inherits "^2.0.1" safe-buffer "^5.1.2" +media-typer@0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" + integrity sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ== + +memdown@^1.0.0: + version "1.4.1" + resolved "https://registry.yarnpkg.com/memdown/-/memdown-1.4.1.tgz#b4e4e192174664ffbae41361aa500f3119efe215" + integrity sha512-iVrGHZB8i4OQfM155xx8akvG9FIj+ht14DX5CQkCTG4EHzZ3d3sgckIf/Lm9ivZalEsFuEVnWv2B2WZvbrro2w== + dependencies: + abstract-leveldown "~2.7.1" + functional-red-black-tree "^1.0.1" + immediate "^3.2.3" + inherits "~2.0.1" + ltgt "~2.2.0" + safe-buffer "~5.1.1" + memory-level@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/memory-level/-/memory-level-1.0.0.tgz#7323c3fd368f9af2f71c3cd76ba403a17ac41692" @@ -1759,6 +5375,81 @@ memorystream@^0.3.1: resolved "https://registry.yarnpkg.com/memorystream/-/memorystream-0.3.1.tgz#86d7090b30ce455d63fbae12dda51a47ddcaf9b2" integrity sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw== +merge-descriptors@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" + integrity sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w== + +merge-options@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/merge-options/-/merge-options-3.0.4.tgz#84709c2aa2a4b24c1981f66c179fe5565cc6dbb7" + integrity sha512-2Sug1+knBjkaMsMgf1ctR1Ujx+Ayku4EdJN4Z+C2+JzoeF7A3OZ9KM2GY0CpQS51NR61LTurMJrRKPhSs3ZRTQ== + dependencies: + is-plain-obj "^2.1.0" + +merge-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" + integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== + +merkle-patricia-tree@^2.1.2, merkle-patricia-tree@^2.3.2: + version "2.3.2" + resolved "https://registry.yarnpkg.com/merkle-patricia-tree/-/merkle-patricia-tree-2.3.2.tgz#982ca1b5a0fde00eed2f6aeed1f9152860b8208a" + integrity sha512-81PW5m8oz/pz3GvsAwbauj7Y00rqm81Tzad77tHBwU7pIAtN+TJnMSOJhxBKflSVYhptMMb9RskhqHqrSm1V+g== + dependencies: + async "^1.4.2" + ethereumjs-util "^5.0.0" + level-ws "0.0.0" + levelup "^1.2.1" + memdown "^1.0.0" + readable-stream "^2.0.0" + rlp "^2.0.0" + semaphore ">=1.0.1" + +methods@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" + integrity sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w== + +mime-db@1.52.0, "mime-db@>= 1.43.0 < 2": + version "1.52.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" + integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== + +mime-types@^2.1.12, mime-types@~2.1.19, mime-types@~2.1.24, mime-types@~2.1.34: + version "2.1.35" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" + integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== + dependencies: + mime-db "1.52.0" + +mime@1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" + integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== + +mime@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/mime/-/mime-3.0.0.tgz#b374550dca3a0c18443b0c950a6a58f1931cf7a7" + integrity sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A== + +mimic-fn@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" + integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== + +mimic-response@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-1.0.1.tgz#4923538878eef42063cb8a3e3b0798781487ab1b" + integrity sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ== + +min-document@^2.19.0: + version "2.19.0" + resolved "https://registry.yarnpkg.com/min-document/-/min-document-2.19.0.tgz#7bd282e3f5842ed295bb748cdd9f1ffa2c824685" + integrity sha512-9Wy1B3m3f66bPPmU5hdA4DR4PB2OfDU/+GS3yAB7IQozE3tqXaVv2zOjgla7MEGSRv95+ILmOuvhLkOK6wJtCQ== + dependencies: + dom-walk "^0.1.0" + minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" @@ -1783,6 +5474,23 @@ minimatch@^3.0.4, minimatch@^3.1.1: dependencies: brace-expansion "^1.1.7" +minimist@^1.2.6, minimist@~1.2.8: + version "1.2.8" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" + integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== + +mkdirp@^0.5.1: + version "0.5.6" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.6.tgz#7def03d2432dcae4ba1d611445c48396062255f6" + integrity sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw== + dependencies: + minimist "^1.2.6" + +mkdirp@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" + integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== + mnemonist@^0.38.0: version "0.38.5" resolved "https://registry.yarnpkg.com/mnemonist/-/mnemonist-0.38.5.tgz#4adc7f4200491237fe0fa689ac0b86539685cade" @@ -1817,63 +5525,338 @@ mocha@^10.0.0: yargs-parser "20.2.4" yargs-unparser "2.0.0" +mock-property@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/mock-property/-/mock-property-1.0.0.tgz#301518a59fb545312a407c8d1a861aba0357b4a6" + integrity sha512-imC60k5A55GPUU43PqczbubOyyxCudIgneACKzL3PKfsBk08dc1HgNNU8siQbEIAPPjVUhc+gb0v0ypZ/iP9pw== + dependencies: + functions-have-names "^1.2.2" + has "^1.0.3" + has-property-descriptors "^1.0.0" + isarray "^2.0.5" + module-error@^1.0.1, module-error@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/module-error/-/module-error-1.0.2.tgz#8d1a48897ca883f47a45816d4fb3e3c6ba404d86" integrity sha512-0yuvsqSCv8LbaOKhnsQ/T5JhyFlCYLPXK3U2sgV10zoKQwzs/MyfuQUOZQ1V/6OCOJsK/TRgNVrPuPDqtdMFtA== +ms@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" + integrity sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A== + ms@2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== -ms@2.1.3: +ms@2.1.3, ms@^2.1.1: version "2.1.3" resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== +multiaddr-to-uri@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/multiaddr-to-uri/-/multiaddr-to-uri-7.0.0.tgz#9bed2361e3eb7c18507e35204067bef98db8ac8e" + integrity sha512-VbscDpLcbV0m25tJqfnZSfbjVUuNlPa4BbD5l/7me1t0lc3SWI0XAoO5E/PNJF0e1qUlbdq7yjVFEQjUT+9r0g== + dependencies: + multiaddr "^9.0.1" + +multiaddr@^9.0.1: + version "9.0.2" + resolved "https://registry.yarnpkg.com/multiaddr/-/multiaddr-9.0.2.tgz#ab322bb768e77270650ebce71a452fdc760bda0d" + integrity sha512-YFaEb9t4yXSbaGksSEdg+Kn2U02s7w4wXUgyEMQmPxFJj7CfVHY10WOsScAX/rK6Soa15S1zXYadqH9TtlVreQ== + dependencies: + cids "^1.0.0" + dns-over-http-resolver "^1.0.0" + err-code "^3.0.1" + is-ip "^3.1.0" + multibase "^4.0.2" + uint8arrays "^2.1.3" + varint "^6.0.0" + +multibase@^4.0.1, multibase@^4.0.2: + version "4.0.6" + resolved "https://registry.yarnpkg.com/multibase/-/multibase-4.0.6.tgz#6e624341483d6123ca1ede956208cb821b440559" + integrity sha512-x23pDe5+svdLz/k5JPGCVdfn7Q5mZVMBETiC+ORfO+sor9Sgs0smJzAjfTbM5tckeCqnaUuMYoz+k3RXMmJClQ== + dependencies: + "@multiformats/base-x" "^4.0.1" + +multicodec@^3.0.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/multicodec/-/multicodec-3.2.1.tgz#82de3254a0fb163a107c1aab324f2a91ef51efb2" + integrity sha512-+expTPftro8VAW8kfvcuNNNBgb9gPeNYV9dn+z1kJRWF2vih+/S79f2RVeIwmrJBUJ6NT9IUPWnZDQvegEh5pw== + dependencies: + uint8arrays "^3.0.0" + varint "^6.0.0" + +multiformats@^9.4.2: + version "9.9.0" + resolved "https://registry.yarnpkg.com/multiformats/-/multiformats-9.9.0.tgz#c68354e7d21037a8f1f8833c8ccd68618e8f1d37" + integrity sha512-HoMUjhH9T8DDBNT+6xzkrd9ga/XiBI4xLr58LJACwK6G3HTOPeMz4nB4KJs33L2BelrIJa7P0VuNaVF3hMYfjg== + +multihashes@^4.0.1, multihashes@^4.0.2: + version "4.0.3" + resolved "https://registry.yarnpkg.com/multihashes/-/multihashes-4.0.3.tgz#426610539cd2551edbf533adeac4c06b3b90fb05" + integrity sha512-0AhMH7Iu95XjDLxIeuCOOE4t9+vQZsACyKZ9Fxw2pcsRmlX4iCn1mby0hS0bb+nQOVpdQYWPpnyusw4da5RPhA== + dependencies: + multibase "^4.0.1" + uint8arrays "^3.0.0" + varint "^5.0.2" + +multihashing-async@^2.0.0, multihashing-async@^2.1.2: + version "2.1.4" + resolved "https://registry.yarnpkg.com/multihashing-async/-/multihashing-async-2.1.4.tgz#26dce2ec7a40f0e7f9e732fc23ca5f564d693843" + integrity sha512-sB1MiQXPSBTNRVSJc2zM157PXgDtud2nMFUEIvBrsq5Wv96sUclMRK/ecjoP1T/W61UJBqt4tCTwMkUpt2Gbzg== + dependencies: + blakejs "^1.1.0" + err-code "^3.0.0" + js-sha3 "^0.8.0" + multihashes "^4.0.1" + murmurhash3js-revisited "^3.0.0" + uint8arrays "^3.0.0" + +murmurhash3js-revisited@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/murmurhash3js-revisited/-/murmurhash3js-revisited-3.0.0.tgz#6bd36e25de8f73394222adc6e41fa3fac08a5869" + integrity sha512-/sF3ee6zvScXMb1XFJ8gDsSnY+X8PbOyjIuBhtgis10W2Jx4ZjIhikUCIF9c4gpJxVnQIsPAFrSwTCuAjicP6g== + nanoid@3.3.3: version "3.3.3" resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.3.tgz#fd8e8b7aa761fe807dba2d1b98fb7241bb724a25" integrity sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w== +nanoid@^3.0.2, nanoid@^3.1.12, nanoid@^3.1.20: + version "3.3.6" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.6.tgz#443380c856d6e9f9824267d960b4236ad583ea4c" + integrity sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA== + napi-macros@^2.2.2: version "2.2.2" resolved "https://registry.yarnpkg.com/napi-macros/-/napi-macros-2.2.2.tgz#817fef20c3e0e40a963fbf7b37d1600bd0201044" integrity sha512-hmEVtAGYzVQpCKdbQea4skABsdXW4RUh5t5mJ2zzqowJS2OyXZTU1KhDVFhx+NlWZ4ap9mqR9TcDO3LTTttd+g== +native-abort-controller@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/native-abort-controller/-/native-abort-controller-1.0.4.tgz#39920155cc0c18209ff93af5bc90be856143f251" + integrity sha512-zp8yev7nxczDJMoP6pDxyD20IU0T22eX8VwN2ztDccKvSZhRaV33yP1BGwKSZfXuqWUzsXopVFjBdau9OOAwMQ== + +native-fetch@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/native-fetch/-/native-fetch-3.0.0.tgz#06ccdd70e79e171c365c75117959cf4fe14a09bb" + integrity sha512-G3Z7vx0IFb/FQ4JxvtqGABsOTIqRWvgQz6e+erkB+JJD6LrszQtMozEHI4EkmgZQvnGHrpLVzUWk7t4sJCIkVw== + +negotiator@0.6.3: + version "0.6.3" + resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd" + integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg== + node-addon-api@^2.0.0: version "2.0.2" resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-2.0.2.tgz#432cfa82962ce494b132e9d72a15b29f71ff5d32" integrity sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA== +node-fetch@2.6.7: + version "2.6.7" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.7.tgz#24de9fba827e3b4ae44dc8b20256a379160052ad" + integrity sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ== + dependencies: + whatwg-url "^5.0.0" + +node-fetch@^1.0.1, node-fetch@~1.7.1: + version "1.7.3" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-1.7.3.tgz#980f6f72d85211a5347c6b2bc18c5b84c3eb47ef" + integrity sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ== + dependencies: + encoding "^0.1.11" + is-stream "^1.0.1" + +node-fetch@^2.6.1, node-fetch@^2.6.7: + version "2.7.0" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.7.0.tgz#d0f0fa6e3e2dc1d27efcd8ad99d550bda94d187d" + integrity sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A== + dependencies: + whatwg-url "^5.0.0" + +"node-fetch@https://registry.npmjs.org/@achingbrain/node-fetch/-/node-fetch-2.6.7.tgz": + version "2.6.7" + resolved "https://registry.npmjs.org/@achingbrain/node-fetch/-/node-fetch-2.6.7.tgz#1b5d62978f2ed07b99444f64f0df39f960a6d34d" + node-gyp-build@^4.2.0, node-gyp-build@^4.3.0: version "4.6.1" resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.6.1.tgz#24b6d075e5e391b8d5539d98c7fc5c210cac8a3e" integrity sha512-24vnklJmyRS8ViBNI8KbtK/r/DmXQMRiOMXTNz2nrTnAYUwjmEEbnnpB/+kt+yWRv73bPsSPRFddrcIbAxSiMQ== +node-releases@^2.0.13: + version "2.0.13" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.13.tgz#d5ed1627c23e3461e819b02e57b75e4899b1c81d" + integrity sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ== + +normalize-package-data@^2.3.2: + version "2.5.0" + resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" + integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== + dependencies: + hosted-git-info "^2.1.4" + resolve "^1.10.0" + semver "2 || 3 || 4 || 5" + validate-npm-package-license "^3.0.1" + normalize-path@^3.0.0, normalize-path@~3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== +npm-run-path@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" + integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== + dependencies: + path-key "^3.0.0" + +number-is-nan@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" + integrity sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ== + +number-to-bn@1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/number-to-bn/-/number-to-bn-1.7.0.tgz#bb3623592f7e5f9e0030b1977bd41a0c53fe1ea0" + integrity sha512-wsJ9gfSz1/s4ZsJN01lyonwuxA1tml6X1yBDnfpMglypcBRFZZkus26EdPSlqS5GJfYddVZa22p3VNb3z5m5Ig== + dependencies: + bn.js "4.11.6" + strip-hex-prefix "1.0.0" + +oauth-sign@~0.9.0: + version "0.9.0" + resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" + integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ== + +object-assign@^4.0.0, object-assign@^4.1.0, object-assign@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" + integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== + +object-inspect@^1.12.3, object-inspect@^1.9.0, object-inspect@~1.12.3: + version "1.12.3" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.3.tgz#ba62dffd67ee256c8c086dfae69e016cd1f198b9" + integrity sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g== + +object-is@^1.0.1: + version "1.1.5" + resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.1.5.tgz#b9deeaa5fc7f1846a0faecdceec138e5778f53ac" + integrity sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + +object-keys@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" + integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== + +object-keys@~0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-0.4.0.tgz#28a6aae7428dd2c3a92f3d95f21335dd204e0336" + integrity sha512-ncrLw+X55z7bkl5PnUvHwFK9FcGuFYo9gtjws2XtSzL+aZ8tm830P60WJ0dSmFVaSalWieW5MD7kEdnXda9yJw== + +object.assign@^4.1.4: + version "4.1.4" + resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.4.tgz#9673c7c7c351ab8c4d0b516f4343ebf4dfb7799f" + integrity sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.4" + has-symbols "^1.0.3" + object-keys "^1.1.1" + obliterator@^2.0.0: version "2.0.4" resolved "https://registry.yarnpkg.com/obliterator/-/obliterator-2.0.4.tgz#fa650e019b2d075d745e44f1effeb13a2adbe816" integrity sha512-lgHwxlxV1qIg1Eap7LgIeoBWIMFibOjbrYPIPJZcI1mmGAI2m3lNYpK12Y+GBdPQ0U1hRwSord7GIaawz962qQ== -once@^1.3.0: +oboe@2.1.4: + version "2.1.4" + resolved "https://registry.yarnpkg.com/oboe/-/oboe-2.1.4.tgz#20c88cdb0c15371bb04119257d4fdd34b0aa49f6" + integrity sha512-ymBJ4xSC6GBXLT9Y7lirj+xbqBLa+jADGJldGEYG7u8sZbS9GyG+u1Xk9c5cbriKwSpCg41qUhPjvU5xOpvIyQ== + dependencies: + http-https "^1.0.0" + +on-finished@2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.4.1.tgz#58c8c44116e54845ad57f14ab10b03533184ac3f" + integrity sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg== + dependencies: + ee-first "1.1.1" + +on-headers@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.2.tgz#772b0ae6aaa525c399e489adfad90c403eb3c28f" + integrity sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA== + +once@^1.3.0, once@^1.3.1: version "1.4.0" resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== dependencies: wrappy "1" -os-tmpdir@~1.0.2: +one-time@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/one-time/-/one-time-1.0.0.tgz#e06bc174aed214ed58edede573b433bbf827cb45" + integrity sha512-5DXOiRKwuSEcQ/l0kGCF6Q3jcADFv5tSmRaJck/OqkVFcOzutB134KRSfF0xDrL39MNnqxbHBbUUcjZIhTgb2g== + dependencies: + fn.name "1.x.x" + +onetime@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" + integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== + dependencies: + mimic-fn "^2.1.0" + +openapi3-ts@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/openapi3-ts/-/openapi3-ts-4.1.2.tgz#f15cd4794e3a7c9b388fd45dfbefc78501f7043e" + integrity sha512-B7gOkwsYMZO7BZXwJzXCuVagym2xhqsrilVvV0dnq2Di4+iLUXKVX9gOK23ZqaAHZOwABXN0QTdW8QnkUTX6DA== + dependencies: + yaml "^2.2.2" + +openzeppelin-solidity@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/openzeppelin-solidity/-/openzeppelin-solidity-2.0.0.tgz#b45dddbdae090f89577598c1a7e7518df61b7ba2" + integrity sha512-SolpxQFArtiYnlSNg3dZ9sz0WVlKtPqSOcJkXRllaZp4+Lpfqz3vxF0yoh7g75TszKPyadqoJmU7+GM/vwh9SA== + +os-homedir@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" + integrity sha512-B5JU3cabzk8c67mRRd3ECmROafjYMXbuzlwtqdM8IbS8ktlTix8aFGb2bAGKrSRIlnfKwovGUUr72JUPyOb6kQ== + +os-locale@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-1.4.0.tgz#20f9f17ae29ed345e8bde583b13d2009803c14d9" + integrity sha512-PRT7ZORmwu2MEFt4/fv3Q+mEfN4zetKxufQrkShY2oGvUms9r8otu5HfdyIFHkYXjO7laNsoVGmM2MANfuTA8g== + dependencies: + lcid "^1.0.0" + +os-tmpdir@^1.0.1, os-tmpdir@~1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" integrity sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g== +p-defer@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/p-defer/-/p-defer-3.0.0.tgz#d1dceb4ee9b2b604b1d94ffec83760175d4e6f83" + integrity sha512-ugZxsxmtTln604yeYd29EGrNhazN2lywetzpKhfmQjW/VJmhpDmWbiX+h0zL8V91R0UXkhb3KtPmyq9PZw3aYw== + +p-fifo@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-fifo/-/p-fifo-1.0.0.tgz#e29d5cf17c239ba87f51dde98c1d26a9cfe20a63" + integrity sha512-IjoCxXW48tqdtDFz6fqo5q1UfFVjjVZe8TC1QRflvNUJtNfCUhxOUw6MOVZhDPjqhSzc26xKdugsO17gmzd5+A== + dependencies: + fast-fifo "^1.0.0" + p-defer "^3.0.0" + p-limit@^1.1.0: version "1.3.0" resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8" @@ -1914,6 +5897,35 @@ p-try@^1.0.0: resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" integrity sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww== +parse-duration@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/parse-duration/-/parse-duration-1.1.0.tgz#5192084c5d8f2a3fd676d04a451dbd2e05a1819c" + integrity sha512-z6t9dvSJYaPoQq7quMzdEagSFtpGu+utzHqqxmpVWNNZRIXnvqyCvn9XsTdh7c/w0Bqmdz3RB3YnRaKtpRtEXQ== + +parse-headers@^2.0.0: + version "2.0.5" + resolved "https://registry.yarnpkg.com/parse-headers/-/parse-headers-2.0.5.tgz#069793f9356a54008571eb7f9761153e6c770da9" + integrity sha512-ft3iAoLOB/MlwbNXgzy43SWGP6sQki2jQvAyBg/zDFAgr9bfNWZIUj42Kw2eJIl8kEi4PbgE6U1Zau/HwI75HA== + +parse-json@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9" + integrity sha512-QR/GGaKCkhwk1ePQNYDRKYZ3mwU9ypsKhB0XyFnLQdomyEqk3e8wpW3V5Jp88zbxK4n5ST1nqo+g9juTpownhQ== + dependencies: + error-ex "^1.2.0" + +parseurl@~1.3.3: + version "1.3.3" + resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" + integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== + +path-exists@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b" + integrity sha512-yTltuKuhtNeFJKa1PiRzfLAU5182q1y4Eb4XCJ3PBqyzEDkAZRzBrKKBct682ls9reBVHf9udYLN5Nd+K1B9BQ== + dependencies: + pinkie-promise "^2.0.0" + path-exists@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" @@ -1924,17 +5936,36 @@ path-exists@^4.0.0: resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== -path-is-absolute@^1.0.0: +path-is-absolute@^1.0.0, path-is-absolute@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== -path-parse@^1.0.6: +path-key@^3.0.0, path-key@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" + integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== + +path-parse@^1.0.6, path-parse@^1.0.7: version "1.0.7" resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== -pbkdf2@^3.0.17: +path-to-regexp@0.1.7: + version "0.1.7" + resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" + integrity sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ== + +path-type@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-1.1.0.tgz#59c44f7ee491da704da415da5a4070ba4f8fe441" + integrity sha512-S4eENJz1pkiQn9Znv33Q+deTOKmbl+jj1Fl+qiP/vYezj+S8x+J3Uo0ISrx/QoEvIlOaDWJhPaRd1flJ9HXZqg== + dependencies: + graceful-fs "^4.1.2" + pify "^2.0.0" + pinkie-promise "^2.0.0" + +pbkdf2@^3.0.17, pbkdf2@^3.0.3, pbkdf2@^3.0.9: version "3.1.2" resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.1.2.tgz#dd822aa0887580e52f1a039dc3eda108efae3075" integrity sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA== @@ -1945,23 +5976,176 @@ pbkdf2@^3.0.17: safe-buffer "^5.0.1" sha.js "^2.4.8" +performance-now@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" + integrity sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow== + +picocolors@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" + integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== + picomatch@^2.0.4, picomatch@^2.2.1: version "2.3.1" resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== +pify@^2.0.0, pify@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" + integrity sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog== + +pify@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" + integrity sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg== + +pinkie-promise@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa" + integrity sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw== + dependencies: + pinkie "^2.0.0" + +pinkie@^2.0.0: + version "2.0.4" + resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" + integrity sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg== + +precond@0.2: + version "0.2.3" + resolved "https://registry.yarnpkg.com/precond/-/precond-0.2.3.tgz#aa9591bcaa24923f1e0f4849d240f47efc1075ac" + integrity sha512-QCYG84SgGyGzqJ/vlMsxeXd/pgL/I94ixdNFyh1PusWmTCyVfPJjZ1K1jvHtsbfnXQs2TSkEP2fR7QiMZAnKFQ== + +prettier@^2.1.2, prettier@^2.3.1: + version "2.8.8" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.8.8.tgz#e8c5d7e98a4305ffe3de2e1fc4aca1a71c28b1da" + integrity sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q== + +private@^0.1.6, private@^0.1.8: + version "0.1.8" + resolved "https://registry.yarnpkg.com/private/-/private-0.1.8.tgz#2381edb3689f7a53d653190060fcf822d2f368ff" + integrity sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg== + +process-nextick-args@~2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" + integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== + +process@^0.11.10: + version "0.11.10" + resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" + integrity sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A== + +promise-to-callback@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/promise-to-callback/-/promise-to-callback-1.0.0.tgz#5d2a749010bfb67d963598fcd3960746a68feef7" + integrity sha512-uhMIZmKM5ZteDMfLgJnoSq9GCwsNKrYau73Awf1jIy6/eUcuuZ3P+CD9zUv0kJsIUbU+x6uLNIhXhLHDs1pNPA== + dependencies: + is-fn "^1.0.0" + set-immediate-shim "^1.0.1" + +protobufjs@^6.10.2: + version "6.11.4" + resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-6.11.4.tgz#29a412c38bf70d89e537b6d02d904a6f448173aa" + integrity sha512-5kQWPaJHi1WoCpjTGszzQ32PG2F4+wRY6BmAT4Vfw56Q2FZ4YZzK20xUYQH4YkfehY1e6QSICrJquM6xXZNcrw== + dependencies: + "@protobufjs/aspromise" "^1.1.2" + "@protobufjs/base64" "^1.1.2" + "@protobufjs/codegen" "^2.0.4" + "@protobufjs/eventemitter" "^1.1.0" + "@protobufjs/fetch" "^1.1.0" + "@protobufjs/float" "^1.0.2" + "@protobufjs/inquire" "^1.1.0" + "@protobufjs/path" "^1.1.2" + "@protobufjs/pool" "^1.1.0" + "@protobufjs/utf8" "^1.1.0" + "@types/long" "^4.0.1" + "@types/node" ">=13.7.0" + long "^4.0.0" + +proxy-addr@~2.0.7: + version "2.0.7" + resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.7.tgz#f19fe69ceab311eeb94b42e70e8c2070f9ba1025" + integrity sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg== + dependencies: + forwarded "0.2.0" + ipaddr.js "1.9.1" + +prr@~1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476" + integrity sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw== + +psl@^1.1.28: + version "1.9.0" + resolved "https://registry.yarnpkg.com/psl/-/psl-1.9.0.tgz#d0df2a137f00794565fcaf3b2c00cd09f8d5a5a7" + integrity sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag== + +punycode@2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.0.tgz#5f863edc89b96db09074bad7947bf09056ca4e7d" + integrity sha512-Yxz2kRwT90aPiWEMHVYnEf4+rhwF1tBmmZ4KepCP+Wkium9JxtWnUm1nqGwpiAHr/tnTSeHqr3wb++jgSkXjhA== + +punycode@^2.1.0, punycode@^2.1.1: + version "2.3.0" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.0.tgz#f67fa67c94da8f4d0cfff981aee4118064199b8f" + integrity sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA== + +qs@6.11.0: + version "6.11.0" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.11.0.tgz#fd0d963446f7a65e1367e01abd85429453f0c37a" + integrity sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q== + dependencies: + side-channel "^1.0.4" + +qs@~6.5.2: + version "6.5.3" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.3.tgz#3aeeffc91967ef6e35c0e488ef46fb296ab76aad" + integrity sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA== + +query-string@^5.0.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/query-string/-/query-string-5.1.1.tgz#a78c012b71c17e05f2e3fa2319dd330682efb3cb" + integrity sha512-gjWOsm2SoGlgLEdAGt7a6slVOk9mGiXmPFMqrEhLQ68rhQuBnpfs3+EmlvqKyxnCo9/PPlF+9MtY02S1aFg+Jw== + dependencies: + decode-uri-component "^0.2.0" + object-assign "^4.1.0" + strict-uri-encode "^1.0.0" + queue-microtask@^1.2.2, queue-microtask@^1.2.3: version "1.2.3" resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== -randombytes@^2.1.0: +ramda@0.29.0: + version "0.29.0" + resolved "https://registry.yarnpkg.com/ramda/-/ramda-0.29.0.tgz#fbbb67a740a754c8a4cbb41e2a6e0eb8507f55fb" + integrity sha512-BBea6L67bYLtdbOqfp8f58fPMqEwx0doL+pAi8TZyp2YWz8R9G8z9x75CZI8W+ftqhFHCpEX2cRnUUXK130iKA== + +randombytes@^2.0.1, randombytes@^2.0.6, randombytes@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== dependencies: safe-buffer "^5.1.0" +range-parser@~1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" + integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== + +raw-body@2.5.1: + version "2.5.1" + resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.5.1.tgz#fe1b1628b181b700215e5fd42389f98b71392857" + integrity sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig== + dependencies: + bytes "3.1.2" + http-errors "2.0.0" + iconv-lite "0.4.24" + unpipe "1.0.0" + raw-body@^2.4.1: version "2.5.2" resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.5.2.tgz#99febd83b90e08975087e8f1f9419a149366b68a" @@ -1972,7 +6156,54 @@ raw-body@^2.4.1: iconv-lite "0.4.24" unpipe "1.0.0" -readable-stream@^3.6.0: +react-native-fetch-api@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/react-native-fetch-api/-/react-native-fetch-api-2.0.0.tgz#c4af188b4fce3f3eaf1f1ff4e61dae1a00d4ffa0" + integrity sha512-GOA8tc1EVYLnHvma/TU9VTgLOyralO7eATRuCDchQveXW9Fr9vXygyq9iwqmM7YRZ8qRJfEt9xOS7OYMdJvRFw== + dependencies: + p-defer "^3.0.0" + +read-pkg-up@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-1.0.1.tgz#9d63c13276c065918d57f002a57f40a1b643fb02" + integrity sha512-WD9MTlNtI55IwYUS27iHh9tK3YoIVhxis8yKhLpTqWtml739uXc9NWTpxoHkfZf3+DkCCsXox94/VWZniuZm6A== + dependencies: + find-up "^1.0.0" + read-pkg "^1.0.0" + +read-pkg@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-1.1.0.tgz#f5ffaa5ecd29cb31c0474bca7d756b6bb29e3f28" + integrity sha512-7BGwRHqt4s/uVbuyoeejRn4YmFnYZiFl4AuaeXHlgZf3sONF0SOGlxs2Pw8g6hCKupo08RafIO5YXFNOKTfwsQ== + dependencies: + load-json-file "^1.0.0" + normalize-package-data "^2.3.2" + path-type "^1.0.0" + +readable-stream@^1.0.33: + version "1.1.14" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.1.14.tgz#7cf4c54ef648e3813084c636dd2079e166c081d9" + integrity sha512-+MeVjFf4L44XUkhM1eYbD8fyEsxcV81pqMSR5gblfcLCHfZvbrqy4/qYHE+/R5HoBUT11WV5O08Cr1n3YXkWVQ== + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.1" + isarray "0.0.1" + string_decoder "~0.10.x" + +readable-stream@^2.0.0, readable-stream@^2.2.9: + version "2.3.8" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.8.tgz#91125e8042bba1b9887f49345f6277027ce8be9b" + integrity sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA== + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.3" + isarray "~1.0.0" + process-nextick-args "~2.0.0" + safe-buffer "~5.1.1" + string_decoder "~1.1.1" + util-deprecate "~1.0.1" + +readable-stream@^3.4.0, readable-stream@^3.6.0: version "3.6.2" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.2.tgz#56a9b36ea965c00c5a93ef31eb111a0f11056967" integrity sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA== @@ -1981,6 +6212,16 @@ readable-stream@^3.6.0: string_decoder "^1.1.1" util-deprecate "^1.0.1" +readable-stream@~1.0.15: + version "1.0.34" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.0.34.tgz#125820e34bc842d2f2aaafafe4c2916ee32c157c" + integrity sha512-ok1qVCJuRkNmvebYikljxJA/UEsKwLl2nI1OmaqAu4/UE+h0wKCHok4XkL/gvi39OacXvw59RJUOFUkDib2rHg== + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.1" + isarray "0.0.1" + string_decoder "~0.10.x" + readdirp@~3.6.0: version "3.6.0" resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" @@ -1988,16 +6229,125 @@ readdirp@~3.6.0: dependencies: picomatch "^2.2.1" +receptacle@^1.3.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/receptacle/-/receptacle-1.3.2.tgz#a7994c7efafc7a01d0e2041839dab6c4951360d2" + integrity sha512-HrsFvqZZheusncQRiEE7GatOAETrARKV/lnfYicIm8lbvp/JQOdADOfhjBd2DajvoszEyxSM6RlAAIZgEoeu/A== + dependencies: + ms "^2.1.1" + +reduce-flatten@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/reduce-flatten/-/reduce-flatten-2.0.0.tgz#734fd84e65f375d7ca4465c69798c25c9d10ae27" + integrity sha512-EJ4UNY/U1t2P/2k6oqotuX2Cc3T6nxJwsM0N0asT7dhrtH1ltUxDn4NalSYmPE2rCkVpcf/X6R0wDwcFpzhd4w== + +regenerate@^1.2.1: + version "1.4.2" + resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.2.tgz#b9346d8827e8f5a32f7ba29637d398b69014848a" + integrity sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A== + +regenerator-runtime@^0.11.0: + version "0.11.1" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9" + integrity sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg== + +regenerator-runtime@^0.14.0: + version "0.14.0" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.14.0.tgz#5e19d68eb12d486f797e15a3c6a918f7cec5eb45" + integrity sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA== + +regenerator-transform@^0.10.0: + version "0.10.1" + resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.10.1.tgz#1e4996837231da8b7f3cf4114d71b5691a0680dd" + integrity sha512-PJepbvDbuK1xgIgnau7Y90cwaAmO/LCLMI2mPvaXq2heGMR3aWW5/BQvYrhJ8jgmQjXewXvBjzfqKcVOmhjZ6Q== + dependencies: + babel-runtime "^6.18.0" + babel-types "^6.19.0" + private "^0.1.6" + +regexp.prototype.flags@^1.2.0, regexp.prototype.flags@^1.5.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.5.1.tgz#90ce989138db209f81492edd734183ce99f9677e" + integrity sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + set-function-name "^2.0.0" + +regexpu-core@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-2.0.0.tgz#49d038837b8dcf8bfa5b9a42139938e6ea2ae240" + integrity sha512-tJ9+S4oKjxY8IZ9jmjnp/mtytu1u3iyIQAfmI51IKWH6bFf7XR1ybtaO6j7INhZKXOTYADk7V5qxaqLkmNxiZQ== + dependencies: + regenerate "^1.2.1" + regjsgen "^0.2.0" + regjsparser "^0.1.4" + +regjsgen@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.2.0.tgz#6c016adeac554f75823fe37ac05b92d5a4edb1f7" + integrity sha512-x+Y3yA24uF68m5GA+tBjbGYo64xXVJpbToBaWCoSNSc1hdk6dfctaRWrNFTVJZIIhL5GxW8zwjoixbnifnK59g== + +regjsparser@^0.1.4: + version "0.1.5" + resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.1.5.tgz#7ee8f84dc6fa792d3fd0ae228d24bd949ead205c" + integrity sha512-jlQ9gYLfk2p3V5Ag5fYhA7fv7OHzd1KUH0PRP46xc3TgwjwgROIW572AfYg/X9kaNq/LJnu6oJcFRXlIrGoTRw== + dependencies: + jsesc "~0.5.0" + +repeating@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/repeating/-/repeating-2.0.1.tgz#5214c53a926d3552707527fbab415dbc08d06dda" + integrity sha512-ZqtSMuVybkISo2OWvqvm7iHSWngvdaW3IpsT9/uP8v4gMi591LY6h35wdOfvQdWCKFWZWm2Y1Opp4kV7vQKT6A== + dependencies: + is-finite "^1.0.0" + +request@^2.67.0, request@^2.85.0: + version "2.88.2" + resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3" + integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw== + dependencies: + aws-sign2 "~0.7.0" + aws4 "^1.8.0" + caseless "~0.12.0" + combined-stream "~1.0.6" + extend "~3.0.2" + forever-agent "~0.6.1" + form-data "~2.3.2" + har-validator "~5.1.3" + http-signature "~1.2.0" + is-typedarray "~1.0.0" + isstream "~0.1.2" + json-stringify-safe "~5.0.1" + mime-types "~2.1.19" + oauth-sign "~0.9.0" + performance-now "^2.1.0" + qs "~6.5.2" + safe-buffer "^5.1.2" + tough-cookie "~2.5.0" + tunnel-agent "^0.6.0" + uuid "^3.3.2" + require-directory@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== +require-from-string@^1.1.0: + version "1.2.1" + resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-1.2.1.tgz#529c9ccef27380adfec9a2f965b649bbee636418" + integrity sha512-H7AkJWMobeskkttHyhTVtS0fxpFLjxhbfMa6Bk3wimP7sdPRGL3EyCg3sAQenFfAe+xQ+oAc85Nmtvq0ROM83Q== + require-from-string@^2.0.0: version "2.0.2" resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== +require-main-filename@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1" + integrity sha512-IqSUtOVP4ksd1C/ej5zeEh/BIP2ajqpn8c5x+q99gvcIG/Qf0cud5raVnE/Dwd0ua9TXYDoDc0RE5hBSdz22Ug== + resolve@1.17.0: version "1.17.0" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.17.0.tgz#b25941b54968231cc2d1bb76a79cb7f2c0bf8444" @@ -2005,6 +6355,20 @@ resolve@1.17.0: dependencies: path-parse "^1.0.6" +resolve@^1.10.0, resolve@^1.14.2, resolve@^1.8.1, resolve@~1.22.6: + version "1.22.6" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.6.tgz#dd209739eca3aef739c626fea1b4f3c506195362" + integrity sha512-njhxM7mV12JfufShqGy3Rz8j11RPdLy4xi15UurGJeoHLfJpVXKdh3ueuOqbYUcDZnffr6X739JBo5LzyahEsw== + dependencies: + is-core-module "^2.13.0" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" + +retimer@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/retimer/-/retimer-2.0.0.tgz#e8bd68c5e5a8ec2f49ccb5c636db84c04063bbca" + integrity sha512-KLXY85WkEq2V2bKex/LOO1ViXVn2KGYe4PYysAdYdjmraYIUsVkXu8O4am+8+5UbaaGl1qho4aqAAPHNQ4GSbg== + rimraf@^2.2.8: version "2.7.1" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" @@ -2020,7 +6384,7 @@ ripemd160@^2.0.0, ripemd160@^2.0.1: hash-base "^3.0.0" inherits "^2.0.1" -rlp@^2.2.3: +rlp@^2.0.0, rlp@^2.2.3, rlp@^2.2.4: version "2.2.7" resolved "https://registry.yarnpkg.com/rlp/-/rlp-2.2.7.tgz#33f31c4afac81124ac4b283e2bd4d9720b30beaf" integrity sha512-d5gdPmgQ0Z+AklL2NVXr/IoSjNZFfTVvQWzL/AM2AOcSzYP2xjlb0AC8YyCLc41MSNf6P6QVtjgPdmVtzb+4lQ== @@ -2039,26 +6403,69 @@ rustbn.js@~0.2.0: resolved "https://registry.yarnpkg.com/rustbn.js/-/rustbn.js-0.2.0.tgz#8082cb886e707155fd1cb6f23bd591ab8d55d0ca" integrity sha512-4VlvkRUuCJvr2J6Y0ImW7NvTCriMi7ErOAqWk1y69vAdoNIzCF3yPmgeNzx+RQTLEDFq5sHfscn1MwHxP9hNfA== -safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.0, safe-buffer@~5.2.0: - version "5.2.1" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" - integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== +safe-array-concat@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/safe-array-concat/-/safe-array-concat-1.0.1.tgz#91686a63ce3adbea14d61b14c99572a8ff84754c" + integrity sha512-6XbUAseYE2KtOuGueyeobCySj9L4+66Tn6KQMOPQJrAJEowYKW/YR/MGJZl7FdydUdaFu4LYyDZjxf4/Nmo23Q== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.2.1" + has-symbols "^1.0.3" + isarray "^2.0.5" -safe-buffer@~5.1.1: +safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: version "5.1.2" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== -"safer-buffer@>= 2.1.2 < 3": +safe-buffer@5.2.1, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.0, safe-buffer@~5.2.0: + version "5.2.1" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" + integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== + +safe-event-emitter@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/safe-event-emitter/-/safe-event-emitter-1.0.1.tgz#5b692ef22329ed8f69fdce607e50ca734f6f20af" + integrity sha512-e1wFe99A91XYYxoQbcq2ZJUWurxEyP8vfz7A7vuUe1s95q8r5ebraVaA1BukYJcpM6V16ugWoD9vngi8Ccu5fg== + dependencies: + events "^3.0.0" + +safe-regex-test@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/safe-regex-test/-/safe-regex-test-1.0.0.tgz#793b874d524eb3640d1873aad03596db2d4f2295" + integrity sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.1.3" + is-regex "^1.1.4" + +safe-stable-stringify@^2.3.1: + version "2.4.3" + resolved "https://registry.yarnpkg.com/safe-stable-stringify/-/safe-stable-stringify-2.4.3.tgz#138c84b6f6edb3db5f8ef3ef7115b8f55ccbf886" + integrity sha512-e2bDA2WJT0wxseVd4lsDP4+3ONX6HpMXQa1ZhFQ7SU+GjvORCmShbCMltrtIDfkYhVHrOcPtj+KhmDBdPdZD1g== + +"safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: version "2.1.2" resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== -scrypt-js@3.0.1, scrypt-js@^3.0.0: +scrypt-js@2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/scrypt-js/-/scrypt-js-2.0.3.tgz#bb0040be03043da9a012a2cea9fc9f852cfc87d4" + integrity sha512-d8DzQxNivoNDogyYmb/9RD5mEQE/Q7vG2dLDUgvfPmKL9xCVzgqUntOdS0me9Cq9Sh9VxIZuoNEFcsfyXRnyUw== + +scrypt-js@3.0.1, scrypt-js@^3.0.0, scrypt-js@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/scrypt-js/-/scrypt-js-3.0.1.tgz#d314a57c2aef69d1ad98a138a21fe9eafa9ee312" integrity sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA== +scryptsy@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/scryptsy/-/scryptsy-1.2.1.tgz#a3225fa4b2524f802700761e2855bdf3b2d92163" + integrity sha512-aldIRgMozSJ/Gl6K6qmJZysRP82lz83Wb42vl4PWN8SaLFHIaOzLPc9nUUW2jQN88CuGm5q5HefJ9jZ3nWSmTw== + dependencies: + pbkdf2 "^3.0.3" + secp256k1@^4.0.1: version "4.0.3" resolved "https://registry.yarnpkg.com/secp256k1/-/secp256k1-4.0.3.tgz#c4559ecd1b8d3c1827ed2d1b94190d69ce267303" @@ -2068,16 +6475,45 @@ secp256k1@^4.0.1: node-addon-api "^2.0.0" node-gyp-build "^4.2.0" -semver@^5.5.0: +semaphore@>=1.0.1, semaphore@^1.0.3: + version "1.1.0" + resolved "https://registry.yarnpkg.com/semaphore/-/semaphore-1.1.0.tgz#aaad8b86b20fe8e9b32b16dc2ee682a8cd26a8aa" + integrity sha512-O4OZEaNtkMd/K0i6js9SL+gqy0ZCBMgUvlSqHKi4IBdjhe7wB8pwztUk1BbZ1fmrvpwFrPbHzqd2w5pTcJH6LA== + +"semver@2 || 3 || 4 || 5", semver@^5.3.0, semver@^5.5.0: version "5.7.2" resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.2.tgz#48d55db737c3287cd4835e17fa13feace1c41ef8" integrity sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g== -semver@^6.3.0: +semver@^6.3.0, semver@^6.3.1: version "6.3.1" resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== +semver@~5.4.1: + version "5.4.1" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.4.1.tgz#e059c09d8571f0540823733433505d3a2f00b18e" + integrity sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg== + +send@0.18.0: + version "0.18.0" + resolved "https://registry.yarnpkg.com/send/-/send-0.18.0.tgz#670167cc654b05f5aa4a767f9113bb371bc706be" + integrity sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg== + dependencies: + debug "2.6.9" + depd "2.0.0" + destroy "1.2.0" + encodeurl "~1.0.2" + escape-html "~1.0.3" + etag "~1.8.1" + fresh "0.5.2" + http-errors "2.0.0" + mime "1.6.0" + ms "2.1.3" + on-finished "2.4.1" + range-parser "~1.2.1" + statuses "2.0.1" + serialize-javascript@6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-6.0.0.tgz#efae5d88f45d7924141da8b5c3a7a7e663fefeb8" @@ -2085,6 +6521,40 @@ serialize-javascript@6.0.0: dependencies: randombytes "^2.1.0" +serve-static@1.15.0: + version "1.15.0" + resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.15.0.tgz#faaef08cffe0a1a62f60cad0c4e513cff0ac9540" + integrity sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g== + dependencies: + encodeurl "~1.0.2" + escape-html "~1.0.3" + parseurl "~1.3.3" + send "0.18.0" + +set-blocking@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" + integrity sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw== + +set-function-name@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/set-function-name/-/set-function-name-2.0.1.tgz#12ce38b7954310b9f61faa12701620a0c882793a" + integrity sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA== + dependencies: + define-data-property "^1.0.1" + functions-have-names "^1.2.3" + has-property-descriptors "^1.0.0" + +set-immediate-shim@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz#4b2b1b27eb808a9f8dcc481a58e5e56f599f3f61" + integrity sha512-Li5AOqrZWCVA2n5kryzEmqai6bKSIvpz5oUJHPVj6+dsbD3X1ixtsY5tEnsaNpH3pFAHmG8eIHUrtEtohrg+UQ== + +setimmediate@1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.4.tgz#20e81de622d4a02588ce0c8da8973cbcf1d3138f" + integrity sha512-/TjEmXQVEzdod/FFskf3o7oOAsGhHf2j1dZqRFbDzq4F3mvvxflIIi4Hd3bLQE9y/CpwqfSQam5JakI/mi3Pog== + setimmediate@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" @@ -2103,6 +6573,88 @@ sha.js@^2.4.0, sha.js@^2.4.8: inherits "^2.0.1" safe-buffer "^5.0.1" +shebang-command@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" + integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== + dependencies: + shebang-regex "^3.0.0" + +shebang-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" + integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== + +side-channel@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf" + integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw== + dependencies: + call-bind "^1.0.0" + get-intrinsic "^1.0.2" + object-inspect "^1.9.0" + +signal-exit@^3.0.3: + version "3.0.7" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" + integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== + +simple-concat@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/simple-concat/-/simple-concat-1.0.1.tgz#f46976082ba35c2263f1c8ab5edfe26c41c9552f" + integrity sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q== + +simple-dvt-v1@0.0.5: + version "0.0.5" + resolved "https://registry.yarnpkg.com/simple-dvt-v1/-/simple-dvt-v1-0.0.5.tgz#6c221ab3757931c62736117388a3db4da340589c" + integrity sha512-NEtatJ7KZFWjSyKzDD03V1wxbHXvi2oi65SVZ+LVHQNKIUO/tYIOtTRa01y6AH20wEl3hL/W68GS3+/wOLOH6g== + dependencies: + "@aragon/apps-agent" "^2.1.0" + "@aragon/apps-finance" "^3.0.0" + "@aragon/apps-lido" lidofinance/aragon-apps#master + "@aragon/apps-vault" "^4.1.0" + "@aragon/contract-helpers-test" "^0.1.0" + "@aragon/hardhat-aragon" "^1.0.0" + "@aragon/id" "^2.1.1" + "@aragon/minime" "^1.0.0" + "@aragon/os" "^4.4.0" + "@nomiclabs/hardhat-ethers" "^2.2.3" + "@openzeppelin/contracts-v4.4" "npm:@openzeppelin/contracts@4.4.1" + "@typechain/ethers-v5" "^11.1.1" + "@typechain/hardhat" "^8.0.3" + eth-ens-namehash "^2.0.8" + ethers "5.7.2" + js-sha3 "^0.8.0" + lodash.merge "^4.6.2" + openzeppelin-solidity "2.0.0" + ts-node "^10.9.1" + typechain "^8.3.1" + typescript "^5.1.6" + web3-eth-abi "^4.1.1" + web3-utils "1.2.5" + zod "^3.21.4" + +simple-get@^2.7.0: + version "2.8.2" + resolved "https://registry.yarnpkg.com/simple-get/-/simple-get-2.8.2.tgz#5708fb0919d440657326cd5fe7d2599d07705019" + integrity sha512-Ijd/rV5o+mSBBs4F/x9oDPtTx9Zb6X9brmnXvMW4J7IR15ngi9q5xxqWBKU744jTZiaXtxaPL7uHG6vtN8kUkw== + dependencies: + decompress-response "^3.3.0" + once "^1.3.1" + simple-concat "^1.0.0" + +simple-swizzle@^0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/simple-swizzle/-/simple-swizzle-0.2.2.tgz#a4da6b635ffcccca33f70d17cb92592de95e557a" + integrity sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg== + dependencies: + is-arrayish "^0.3.1" + +slash@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55" + integrity sha512-3TYDR7xWt4dIqV2JauJr+EJeW356RXijHeUlO+8djJ+uBXPn8/2dpzBc8yQhh583sVvc9CvFAeQVgijsH+PNNg== + solc@0.7.3: version "0.7.3" resolved "https://registry.yarnpkg.com/solc/-/solc-0.7.3.tgz#04646961bd867a744f63d2b4e3c0701ffdc7d78a" @@ -2118,6 +6670,24 @@ solc@0.7.3: semver "^5.5.0" tmp "0.0.33" +solc@^0.4.2: + version "0.4.26" + resolved "https://registry.yarnpkg.com/solc/-/solc-0.4.26.tgz#5390a62a99f40806b86258c737c1cf653cc35cb5" + integrity sha512-o+c6FpkiHd+HPjmjEVpQgH7fqZ14tJpXhho+/bQXlXbliLIS/xjXb42Vxh+qQY1WCSTMQ0+a5vR9vi0MfhU6mA== + dependencies: + fs-extra "^0.30.0" + memorystream "^0.3.1" + require-from-string "^1.1.0" + semver "^5.3.0" + yargs "^4.7.1" + +source-map-support@^0.4.15: + version "0.4.18" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.4.18.tgz#0286a6de8be42641338594e97ccea75f0a2c585f" + integrity sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA== + dependencies: + source-map "^0.5.6" + source-map-support@^0.5.13: version "0.5.21" resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" @@ -2126,11 +6696,67 @@ source-map-support@^0.5.13: buffer-from "^1.0.0" source-map "^0.6.0" +source-map@^0.5.6, source-map@^0.5.7: + version "0.5.7" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" + integrity sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ== + source-map@^0.6.0: version "0.6.1" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== +spdx-correct@^3.0.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.2.0.tgz#4f5ab0668f0059e34f9c00dce331784a12de4e9c" + integrity sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA== + dependencies: + spdx-expression-parse "^3.0.0" + spdx-license-ids "^3.0.0" + +spdx-exceptions@^2.1.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz#3f28ce1a77a00372683eade4a433183527a2163d" + integrity sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A== + +spdx-expression-parse@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz#cf70f50482eefdc98e3ce0a6833e4a53ceeba679" + integrity sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q== + dependencies: + spdx-exceptions "^2.1.0" + spdx-license-ids "^3.0.0" + +spdx-license-ids@^3.0.0: + version "3.0.15" + resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.15.tgz#142460aabaca062bc7cd4cc87b7d50725ed6a4ba" + integrity sha512-lpT8hSQp9jAKp9mhtBU4Xjon8LPGBvLIuBiSVhMEtmLecTh2mO0tlqrAMp47tBXzMr13NJMQ2lf7RpQGLJ3HsQ== + +sshpk@^1.7.0: + version "1.17.0" + resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.17.0.tgz#578082d92d4fe612b13007496e543fa0fbcbe4c5" + integrity sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ== + dependencies: + asn1 "~0.2.3" + assert-plus "^1.0.0" + bcrypt-pbkdf "^1.0.0" + dashdash "^1.12.0" + ecc-jsbn "~0.1.1" + getpass "^0.1.1" + jsbn "~0.1.0" + safer-buffer "^2.0.2" + tweetnacl "~0.14.0" + +stable@^0.1.8: + version "0.1.8" + resolved "https://registry.yarnpkg.com/stable/-/stable-0.1.8.tgz#836eb3c8382fe2936feaf544631017ce7d47a3cf" + integrity sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w== + +stack-trace@0.0.x: + version "0.0.10" + resolved "https://registry.yarnpkg.com/stack-trace/-/stack-trace-0.0.10.tgz#547c70b347e8d32b4e108ea1a2a159e5fdde19c0" + integrity sha512-KGzahc7puUKkzyMt+IqAep+TVNbKP+k2Lmwhub39m1AsTSkaDutx56aDCo+HLDzf/D26BIHTJWNiTG1KAJiQCg== + stacktrace-parser@^0.1.10: version "0.1.10" resolved "https://registry.yarnpkg.com/stacktrace-parser/-/stacktrace-parser-0.1.10.tgz#29fb0cae4e0d0b85155879402857a1639eb6051a" @@ -2143,11 +6769,37 @@ statuses@2.0.1: resolved "https://registry.yarnpkg.com/statuses/-/statuses-2.0.1.tgz#55cb000ccf1d48728bd23c685a063998cf1a1b63" integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ== +stream-to-it@^0.2.2: + version "0.2.4" + resolved "https://registry.yarnpkg.com/stream-to-it/-/stream-to-it-0.2.4.tgz#d2fd7bfbd4a899b4c0d6a7e6a533723af5749bd0" + integrity sha512-4vEbkSs83OahpmBybNJXlJd7d6/RxzkkSdT3I0mnGt79Xd2Kk+e1JqbvAvsQfCeKj3aKb0QIWkyK3/n0j506vQ== + dependencies: + get-iterator "^1.0.2" + streamsearch@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/streamsearch/-/streamsearch-1.1.0.tgz#404dd1e2247ca94af554e841a8ef0eaa238da764" integrity sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg== +strict-uri-encode@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713" + integrity sha512-R3f198pcvnB+5IpnBlRkphuE9n46WyVl8I39W/ZUTZLz4nqSP/oLYUrcnJrw462Ds8he4YKMov2efsTIw1BDGQ== + +string-format@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/string-format/-/string-format-2.0.0.tgz#f2df2e7097440d3b65de31b6d40d54c96eaffb9b" + integrity sha512-bbEs3scLeYNXLecRRuk6uJxdXUSj6le/8rNPHChIJTn2V79aXVTR1EH2OH5zLKKoz0V02fOUKZZcw01pLUShZA== + +string-width@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" + integrity sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw== + dependencies: + code-point-at "^1.0.0" + is-fullwidth-code-point "^1.0.0" + strip-ansi "^3.0.0" + string-width@^4.1.0, string-width@^4.2.0: version "4.2.3" resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" @@ -2157,6 +6809,33 @@ string-width@^4.1.0, string-width@^4.2.0: is-fullwidth-code-point "^3.0.0" strip-ansi "^6.0.1" +string.prototype.trim@^1.2.8, string.prototype.trim@~1.2.8: + version "1.2.8" + resolved "https://registry.yarnpkg.com/string.prototype.trim/-/string.prototype.trim-1.2.8.tgz#f9ac6f8af4bd55ddfa8895e6aea92a96395393bd" + integrity sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + +string.prototype.trimend@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.7.tgz#1bb3afc5008661d73e2dc015cd4853732d6c471e" + integrity sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + +string.prototype.trimstart@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.7.tgz#d4cdb44b83a4737ffbac2d406e405d43d0184298" + integrity sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + string_decoder@^1.1.1: version "1.3.0" resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" @@ -2164,6 +6843,25 @@ string_decoder@^1.1.1: dependencies: safe-buffer "~5.2.0" +string_decoder@~0.10.x: + version "0.10.31" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" + integrity sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ== + +string_decoder@~1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" + integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== + dependencies: + safe-buffer "~5.1.0" + +strip-ansi@^3.0.0, strip-ansi@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" + integrity sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg== + dependencies: + ansi-regex "^2.0.0" + strip-ansi@^6.0.0, strip-ansi@^6.0.1: version "6.0.1" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" @@ -2171,6 +6869,18 @@ strip-ansi@^6.0.0, strip-ansi@^6.0.1: dependencies: ansi-regex "^5.0.1" +strip-bom@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e" + integrity sha512-kwrX1y7czp1E69n2ajbG65mIo9dqvJ+8aBQXOGVxqwvNbsXdFM6Lq37dLAY3mknUwru8CfcCbfOLL/gMo+fi3g== + dependencies: + is-utf8 "^0.2.0" + +strip-final-newline@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" + integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== + strip-hex-prefix@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/strip-hex-prefix/-/strip-hex-prefix-1.0.0.tgz#0c5f155fef1151373377de9dbb588da05500e36f" @@ -2190,6 +6900,11 @@ supports-color@8.1.1: dependencies: has-flag "^4.0.0" +supports-color@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" + integrity sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g== + supports-color@^5.3.0: version "5.5.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" @@ -2204,6 +6919,73 @@ supports-color@^7.1.0: dependencies: has-flag "^4.0.0" +supports-preserve-symlinks-flag@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" + integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== + +swagger-ui-dist@>=5.0.0: + version "5.7.2" + resolved "https://registry.yarnpkg.com/swagger-ui-dist/-/swagger-ui-dist-5.7.2.tgz#b783568cc7f494a9ad9173c9c98fd0cbbb5c851a" + integrity sha512-mVZc9QVQ6pTCV5crli3+Ng+DoMPwdtMHK8QLk2oX8Mtamp4D/hV+uYdC3lV0JZrDgpNEcjs0RrWTqMwwosuLPQ== + +swagger-ui-express@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/swagger-ui-express/-/swagger-ui-express-5.0.0.tgz#7a00a18dd909574cb0d628574a299b9ba53d4d49" + integrity sha512-tsU9tODVvhyfkNSvf03E6FAk+z+5cU3lXAzMy6Pv4av2Gt2xA0++fogwC4qo19XuFf6hdxevPuVCSKFuMHJhFA== + dependencies: + swagger-ui-dist ">=5.0.0" + +table-layout@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/table-layout/-/table-layout-1.0.2.tgz#c4038a1853b0136d63365a734b6931cf4fad4a04" + integrity sha512-qd/R7n5rQTRFi+Zf2sk5XVVd9UQl6ZkduPFC3S7WEGJAmetDTjY3qPN50eSKzwuzEyQKy5TN2TiZdkIjos2L6A== + dependencies: + array-back "^4.0.1" + deep-extend "~0.6.0" + typical "^5.2.0" + wordwrapjs "^4.0.0" + +tape@^4.4.0, tape@^4.6.3: + version "4.17.0" + resolved "https://registry.yarnpkg.com/tape/-/tape-4.17.0.tgz#de89f3671ddc5dad178d04c28dc6b0183f42268e" + integrity sha512-KCuXjYxCZ3ru40dmND+oCLsXyuA8hoseu2SS404Px5ouyS0A99v8X/mdiLqsR5MTAyamMBN7PRwt2Dv3+xGIxw== + dependencies: + "@ljharb/resumer" "~0.0.1" + "@ljharb/through" "~2.3.9" + call-bind "~1.0.2" + deep-equal "~1.1.1" + defined "~1.0.1" + dotignore "~0.1.2" + for-each "~0.3.3" + glob "~7.2.3" + has "~1.0.3" + inherits "~2.0.4" + is-regex "~1.1.4" + minimist "~1.2.8" + mock-property "~1.0.0" + object-inspect "~1.12.3" + resolve "~1.22.6" + string.prototype.trim "~1.2.8" + +text-hex@1.0.x: + version "1.0.0" + resolved "https://registry.yarnpkg.com/text-hex/-/text-hex-1.0.0.tgz#69dc9c1b17446ee79a92bf5b884bb4b9127506f5" + integrity sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg== + +timed-out@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/timed-out/-/timed-out-4.0.1.tgz#f32eacac5a175bea25d7fab565ab3ed8741ef56f" + integrity sha512-G7r3AhovYtr5YKOWQkta8RKAPb+J9IsO4uVmzjl8AZwfhs8UcUwTiD6gcJYSgOtzyjvQKrKYn41syHbUWMkafA== + +timeout-abort-controller@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/timeout-abort-controller/-/timeout-abort-controller-1.1.1.tgz#2c3c3c66f13c783237987673c276cbd7a9762f29" + integrity sha512-BsF9i3NAJag6T0ZEjki9j654zoafI2X6ayuNd6Tp8+Ul6Tr5s4jo973qFeiWrRSweqvskC+AHDKUmIW4b7pdhQ== + dependencies: + abort-controller "^3.0.0" + retimer "^2.0.0" + tmp@0.0.33: version "0.0.33" resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" @@ -2211,6 +6993,16 @@ tmp@0.0.33: dependencies: os-tmpdir "~1.0.2" +to-fast-properties@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-1.0.3.tgz#b83571fa4d8c25b82e231b06e3a3055de4ca1a47" + integrity sha512-lxrWP8ejsq+7E3nNjwYmUBMAgjMTZoTI+sdBOpvNyijeDLa29LUn9QaoXAHv4+Z578hbmHHJKZknzxVtvo77og== + +to-fast-properties@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" + integrity sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog== + to-regex-range@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" @@ -2223,6 +7015,119 @@ toidentifier@1.0.1: resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.1.tgz#3be34321a88a820ed1bd80dfaa33e479fbb8dd35" integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA== +tough-cookie@~2.5.0: + version "2.5.0" + resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2" + integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g== + dependencies: + psl "^1.1.28" + punycode "^2.1.1" + +tr46@~0.0.3: + version "0.0.3" + resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" + integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw== + +trim-right@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003" + integrity sha512-WZGXGstmCWgeevgTL54hrCuw1dyMQIzWy7ZfqRJfSmJZBwklI15egmQytFP6bPidmw3M8d5yEowl1niq4vmqZw== + +triple-beam@1.4.1, triple-beam@^1.3.0: + version "1.4.1" + resolved "https://registry.yarnpkg.com/triple-beam/-/triple-beam-1.4.1.tgz#6fde70271dc6e5d73ca0c3b24e2d92afb7441984" + integrity sha512-aZbgViZrg1QNcG+LULa7nhZpJTZSLm/mXnHXnbAbjmN5aSa0y7V+wvv6+4WaBtpISJzThKy+PIPxc1Nq1EJ9mg== + +truffle-flattener@^1.2.9: + version "1.6.0" + resolved "https://registry.yarnpkg.com/truffle-flattener/-/truffle-flattener-1.6.0.tgz#abb64488b711e6cca0a9d3e449f6a85e35964c5d" + integrity sha512-scS5Bsi4CZyvlrmD4iQcLHTiG2RQFUXVheTgWeH6PuafmI+Lk5U87Es98loM3w3ImqC9/fPHq+3QIXbcPuoJ1Q== + dependencies: + "@resolver-engine/imports-fs" "^0.2.2" + "@solidity-parser/parser" "^0.14.1" + find-up "^2.1.0" + mkdirp "^1.0.4" + tsort "0.0.1" + +truffle-hdwallet-provider-privkey@0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/truffle-hdwallet-provider-privkey/-/truffle-hdwallet-provider-privkey-0.3.0.tgz#6688f5f3db5dce2cb9f502f7b52dab7b5e2522a3" + integrity sha512-rXwYWz9/lgmZQft0lAwj1JTATzG9FErhvI4xy/Vz5gNFjQCGC7yu3aYBc3XI8g2nrIyYUFqaZbrgHmYcAjw/1A== + dependencies: + ethereumjs-tx "^1.3.4" + ethereumjs-wallet "^0.6.0" + web3 "^0.20.6" + web3-provider-engine "^13.8.0" + +truffle-hdwallet-provider@0.0.3: + version "0.0.3" + resolved "https://registry.yarnpkg.com/truffle-hdwallet-provider/-/truffle-hdwallet-provider-0.0.3.tgz#0e1de02104b73d3875e1cf7093305b4ea8a2d843" + integrity sha512-oF00yd5jwGcHn0F063fhdE+pcw8No+idoX2vvR/3SuSJri54vdW/f/qBEc5BpJMjhVJtoAmw+ITI9ZhC+UJuFw== + dependencies: + bip39 "^2.2.0" + ethereumjs-wallet "^0.6.0" + web3 "^0.18.2" + web3-provider-engine "^8.4.0" + +ts-command-line-args@^2.2.0: + version "2.5.1" + resolved "https://registry.yarnpkg.com/ts-command-line-args/-/ts-command-line-args-2.5.1.tgz#e64456b580d1d4f6d948824c274cf6fa5f45f7f0" + integrity sha512-H69ZwTw3rFHb5WYpQya40YAX2/w7Ut75uUECbgBIsLmM+BNuYnxsltfyyLMxy6sEeKxgijLTnQtLd0nKd6+IYw== + dependencies: + chalk "^4.1.0" + command-line-args "^5.1.1" + command-line-usage "^6.1.0" + string-format "^2.0.0" + +ts-essentials@^1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/ts-essentials/-/ts-essentials-1.0.4.tgz#ce3b5dade5f5d97cf69889c11bf7d2da8555b15a" + integrity sha512-q3N1xS4vZpRouhYHDPwO0bDW3EZ6SK9CrrDHxi/D6BPReSjpVgWIOpLS2o0gSBZm+7q/wyKp6RVM1AeeW7uyfQ== + +ts-essentials@^7.0.1: + version "7.0.3" + resolved "https://registry.yarnpkg.com/ts-essentials/-/ts-essentials-7.0.3.tgz#686fd155a02133eedcc5362dc8b5056cde3e5a38" + integrity sha512-8+gr5+lqO3G84KdiTSMRLtuyJ+nTBVRKuCrK4lidMPdVeEp0uqC875uE5NMcaA7YYMN7XsNiFQuMvasF8HT/xQ== + +ts-generator@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/ts-generator/-/ts-generator-0.1.1.tgz#af46f2fb88a6db1f9785977e9590e7bcd79220ab" + integrity sha512-N+ahhZxTLYu1HNTQetwWcx3so8hcYbkKBHTr4b4/YgObFTIKkOSSsaa+nal12w8mfrJAyzJfETXawbNjSfP2gQ== + dependencies: + "@types/mkdirp" "^0.5.2" + "@types/prettier" "^2.1.1" + "@types/resolve" "^0.0.8" + chalk "^2.4.1" + glob "^7.1.2" + mkdirp "^0.5.1" + prettier "^2.1.2" + resolve "^1.8.1" + ts-essentials "^1.0.0" + +ts-node@^10.9.1: + version "10.9.1" + resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-10.9.1.tgz#e73de9102958af9e1f0b168a6ff320e25adcff4b" + integrity sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw== + dependencies: + "@cspotcode/source-map-support" "^0.8.0" + "@tsconfig/node10" "^1.0.7" + "@tsconfig/node12" "^1.0.7" + "@tsconfig/node14" "^1.0.0" + "@tsconfig/node16" "^1.0.2" + acorn "^8.4.1" + acorn-walk "^8.1.1" + arg "^4.1.0" + create-require "^1.1.0" + diff "^4.0.1" + make-error "^1.1.1" + v8-compile-cache-lib "^3.0.1" + yn "3.1.1" + +ts-toolbelt@^9.6.0: + version "9.6.0" + resolved "https://registry.yarnpkg.com/ts-toolbelt/-/ts-toolbelt-9.6.0.tgz#50a25426cfed500d4a09bd1b3afb6f28879edfd5" + integrity sha512-nsZd8ZeNUzukXPlJmTBwUAuABDe/9qtVDelJeT/qW0ow3ZS3BsQJtNkan1802aM9Uf68/Y8ljw86Hu0h5IUW3w== + tslib@^1.9.3: version "1.14.1" resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" @@ -2233,11 +7138,23 @@ tsort@0.0.1: resolved "https://registry.yarnpkg.com/tsort/-/tsort-0.0.1.tgz#e2280f5e817f8bf4275657fd0f9aebd44f5a2786" integrity sha512-Tyrf5mxF8Ofs1tNoxA13lFeZ2Zrbd6cKbuH3V+MQ5sb6DtBj5FjrXVsRWT8YvNAQTqNoz66dz1WsbigI22aEnw== -tweetnacl-util@^0.15.1: +tunnel-agent@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" + integrity sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w== + dependencies: + safe-buffer "^5.0.1" + +tweetnacl-util@^0.15.0, tweetnacl-util@^0.15.1: version "0.15.1" resolved "https://registry.yarnpkg.com/tweetnacl-util/-/tweetnacl-util-0.15.1.tgz#b80fcdb5c97bcc508be18c44a4be50f022eea00b" integrity sha512-RKJBIj8lySrShN4w6i/BonWp2Z/uxwC3h4y7xsRrpP59ZboCd0GpEVsOnMDYLMmKBpYhb5TgHzZXy7wTfYFBRw== +tweetnacl@^0.14.3, tweetnacl@~0.14.0: + version "0.14.5" + resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" + integrity sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA== + tweetnacl@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-1.0.3.tgz#ac0af71680458d8a6378d0d0d050ab1407d35596" @@ -2253,6 +7170,120 @@ type-fest@^0.7.1: resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.7.1.tgz#8dda65feaf03ed78f0a3f9678f1869147f7c5c48" integrity sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg== +type-is@~1.6.18: + version "1.6.18" + resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" + integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== + dependencies: + media-typer "0.3.0" + mime-types "~2.1.24" + +typechain@^8.3.1: + version "8.3.1" + resolved "https://registry.yarnpkg.com/typechain/-/typechain-8.3.1.tgz#dccbc839b94877997536c356380eff7325395cfb" + integrity sha512-fA7clol2IP/56yq6vkMTR+4URF1nGjV82Wx6Rf09EsqD4tkzMAvEaqYxVFCavJm/1xaRga/oD55K+4FtuXwQOQ== + dependencies: + "@types/prettier" "^2.1.1" + debug "^4.3.1" + fs-extra "^7.0.0" + glob "7.1.7" + js-sha3 "^0.8.0" + lodash "^4.17.15" + mkdirp "^1.0.4" + prettier "^2.3.1" + ts-command-line-args "^2.2.0" + ts-essentials "^7.0.1" + +typed-array-buffer@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/typed-array-buffer/-/typed-array-buffer-1.0.0.tgz#18de3e7ed7974b0a729d3feecb94338d1472cd60" + integrity sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.2.1" + is-typed-array "^1.1.10" + +typed-array-byte-length@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/typed-array-byte-length/-/typed-array-byte-length-1.0.0.tgz#d787a24a995711611fb2b87a4052799517b230d0" + integrity sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA== + dependencies: + call-bind "^1.0.2" + for-each "^0.3.3" + has-proto "^1.0.1" + is-typed-array "^1.1.10" + +typed-array-byte-offset@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/typed-array-byte-offset/-/typed-array-byte-offset-1.0.0.tgz#cbbe89b51fdef9cd6aaf07ad4707340abbc4ea0b" + integrity sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg== + dependencies: + available-typed-arrays "^1.0.5" + call-bind "^1.0.2" + for-each "^0.3.3" + has-proto "^1.0.1" + is-typed-array "^1.1.10" + +typed-array-length@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/typed-array-length/-/typed-array-length-1.0.4.tgz#89d83785e5c4098bec72e08b319651f0eac9c1bb" + integrity sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng== + dependencies: + call-bind "^1.0.2" + for-each "^0.3.3" + is-typed-array "^1.1.9" + +types-ramda@^0.29.4: + version "0.29.4" + resolved "https://registry.yarnpkg.com/types-ramda/-/types-ramda-0.29.4.tgz#8d9b51df2e550a05cedab541cc75dcd72972c625" + integrity sha512-XO/820iRsCDwqLjE8XE+b57cVGPyk1h+U9lBGpDWvbEky+NQChvHVwaKM05WnW1c5z3EVQh8NhXFmh2E/1YazQ== + dependencies: + ts-toolbelt "^9.6.0" + +typescript@^5.1.6: + version "5.2.2" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.2.2.tgz#5ebb5e5a5b75f085f22bc3f8460fba308310fa78" + integrity sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w== + +typical@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/typical/-/typical-4.0.0.tgz#cbeaff3b9d7ae1e2bbfaf5a4e6f11eccfde94fc4" + integrity sha512-VAH4IvQ7BDFYglMd7BPRDfLgxZZX4O4TFcRDA6EN5X7erNJJq+McIEp8np9aVtxrCJ6qx4GTYVfOWNjcqwZgRw== + +typical@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/typical/-/typical-5.2.0.tgz#4daaac4f2b5315460804f0acf6cb69c52bb93066" + integrity sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg== + +uint8arrays@^2.0.5, uint8arrays@^2.1.3, uint8arrays@^2.1.5: + version "2.1.10" + resolved "https://registry.yarnpkg.com/uint8arrays/-/uint8arrays-2.1.10.tgz#34d023c843a327c676e48576295ca373c56e286a" + integrity sha512-Q9/hhJa2836nQfEJSZTmr+pg9+cDJS9XEAp7N2Vg5MzL3bK/mkMVfjscRGYruP9jNda6MAdf4QD/y78gSzkp6A== + dependencies: + multiformats "^9.4.2" + +uint8arrays@^3.0.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/uint8arrays/-/uint8arrays-3.1.1.tgz#2d8762acce159ccd9936057572dade9459f65ae0" + integrity sha512-+QJa8QRnbdXVpHYjLoTpJIdCTiw9Ir62nocClWuXIq2JIh4Uta0cQsTSpFL678p2CN8B+XSApwcU+pQEqVpKWg== + dependencies: + multiformats "^9.4.2" + +unbox-primitive@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.0.2.tgz#29032021057d5e6cdbd08c5129c226dff8ed6f9e" + integrity sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw== + dependencies: + call-bind "^1.0.2" + has-bigints "^1.0.2" + has-symbols "^1.0.3" + which-boxed-primitive "^1.0.2" + +underscore@1.9.1: + version "1.9.1" + resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.9.1.tgz#06dce34a0e68a7babc29b365b8e74b8925203961" + integrity sha512-5/4etnCkd9c8gwgowi5/om/mYO5ajCaOgdzj/oW+0eQV9WxKBDZw5+ycmKmeaTXjInS/W0BzpGLo2xR2aBwZdg== + undici@^5.14.0: version "5.24.0" resolved "https://registry.yarnpkg.com/undici/-/undici-5.24.0.tgz#6133630372894cfeb3c3dab13b4c23866bd344b5" @@ -2265,26 +7296,382 @@ universalify@^0.1.0: resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== -unpipe@1.0.0: +universalify@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717" + integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ== + +unorm@^1.3.3: + version "1.6.0" + resolved "https://registry.yarnpkg.com/unorm/-/unorm-1.6.0.tgz#029b289661fba714f1a9af439eb51d9b16c205af" + integrity sha512-b2/KCUlYZUeA7JFUuRJZPUtr4gZvBh7tavtv4fvk4+KV9pfGiR6CQAQAWl49ZpR3ts2dk4FYkP7EIgDJoiOLDA== + +unpipe@1.0.0, unpipe@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ== -util-deprecate@^1.0.1: +update-browserslist-db@^1.0.13: + version "1.0.13" + resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz#3c5e4f5c083661bd38ef64b6328c26ed6c8248c4" + integrity sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg== + dependencies: + escalade "^3.1.1" + picocolors "^1.0.0" + +uri-js@^4.2.2: + version "4.4.1" + resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" + integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== + dependencies: + punycode "^2.1.0" + +url-set-query@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/url-set-query/-/url-set-query-1.0.0.tgz#016e8cfd7c20ee05cafe7795e892bd0702faa339" + integrity sha512-3AChu4NiXquPfeckE5R5cGdiHCMWJx1dwCWOmWIL4KHAziJNOFIYJlpGFeKDvwLPHovZRCxK3cYlwzqI9Vp+Gg== + +utf8@3.0.0, utf8@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/utf8/-/utf8-3.0.0.tgz#f052eed1364d696e769ef058b183df88c87f69d1" + integrity sha512-E8VjFIQ/TyQgp+TZfS6l8yp/xWppSAHzidGiRrqe4bK4XP9pTRyKFgGJpO3SN7zdX4DeomTrwaseCHovfpFcqQ== + +utf8@^2.1.1: + version "2.1.2" + resolved "https://registry.yarnpkg.com/utf8/-/utf8-2.1.2.tgz#1fa0d9270e9be850d9b05027f63519bf46457d96" + integrity sha512-QXo+O/QkLP/x1nyi54uQiG0XrODxdysuQvE5dtVqv7F5K2Qb6FsN+qbr6KhF5wQ20tfcV3VQp0/2x1e1MRSPWg== + +util-deprecate@^1.0.1, util-deprecate@~1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== +util@^0.12.5: + version "0.12.5" + resolved "https://registry.yarnpkg.com/util/-/util-0.12.5.tgz#5f17a6059b73db61a875668781a1c2b136bd6fbc" + integrity sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA== + dependencies: + inherits "^2.0.3" + is-arguments "^1.0.4" + is-generator-function "^1.0.7" + is-typed-array "^1.1.3" + which-typed-array "^1.1.2" + +utils-merge@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" + integrity sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA== + +uuid@2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-2.0.1.tgz#c2a30dedb3e535d72ccf82e343941a50ba8533ac" + integrity sha512-nWg9+Oa3qD2CQzHIP4qKUqwNfzKn8P0LtFhotaCTFchsV7ZfDhAybeip/HZVeMIpZi9JgY1E3nUlwaCmZT1sEg== + +uuid@3.3.2: + version "3.3.2" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.2.tgz#1b4af4955eb3077c501c23872fc6513811587131" + integrity sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA== + +uuid@^3.3.2: + version "3.4.0" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" + integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== + uuid@^8.3.2: version "8.3.2" resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== +v8-compile-cache-lib@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz#6336e8d71965cb3d35a1bbb7868445a7c05264bf" + integrity sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg== + +validate-npm-package-license@^3.0.1: + version "3.0.4" + resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" + integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew== + dependencies: + spdx-correct "^3.0.0" + spdx-expression-parse "^3.0.0" + +varint@^5.0.2: + version "5.0.2" + resolved "https://registry.yarnpkg.com/varint/-/varint-5.0.2.tgz#5b47f8a947eb668b848e034dcfa87d0ff8a7f7a4" + integrity sha512-lKxKYG6H03yCZUpAGOPOsMcGxd1RHCu1iKvEHYDPmTyq2HueGhD73ssNBqqQWfvYs04G9iUFRvmAVLW20Jw6ow== + +varint@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/varint/-/varint-6.0.0.tgz#9881eb0ce8feaea6512439d19ddf84bf551661d0" + integrity sha512-cXEIW6cfr15lFv563k4GuVuW/fiwjknytD37jIOLSdSWuOI6WnO/oKwmP2FQTU2l01LP8/M5TSAJpzUaGe3uWg== + +vary@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" + integrity sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg== + +verror@1.10.0: + version "1.10.0" + resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" + integrity sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw== + dependencies: + assert-plus "^1.0.0" + core-util-is "1.0.2" + extsprintf "^1.2.0" + +web3-errors@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/web3-errors/-/web3-errors-1.1.2.tgz#aa60ed7ca3e0e00039f0e2556c8c5b840a0f1399" + integrity sha512-qlyuV5r6MzjLasIalVWBIIfW4Y7hBX2bZv8TRnXvI1EjiZ36zIFKgE9RF+/iRBjXmOsvIUQQ2Z9gMvYGfOwUwQ== + dependencies: + web3-types "^1.2.0" + +web3-eth-abi@1.2.5: + version "1.2.5" + resolved "https://registry.yarnpkg.com/web3-eth-abi/-/web3-eth-abi-1.2.5.tgz#7ffddd3a3e7bacd66a2186e5e388310786b9b548" + integrity sha512-Tz6AjGTlgZVpv01h2YgotoXoQAQgWacx82Zh72ZlZ4iBCs4SoiYvq6tfbW9pquylK2Egm23bELsrSSENz0204w== + dependencies: + ethers "4.0.0-beta.3" + underscore "1.9.1" + web3-utils "1.2.5" + +web3-eth-abi@^4.1.1: + version "4.1.2" + resolved "https://registry.yarnpkg.com/web3-eth-abi/-/web3-eth-abi-4.1.2.tgz#a7b262ce0ad12aa4af1edc6f89053fb1d39010d4" + integrity sha512-s8gvjUwzb2ZnAef0Jy68pjmeshYIKBoYlVj/1yuuFP9t3io3oQQIEyGlaCx7P4ifsZ186gMa4QjCCeIt7HYm7Q== + dependencies: + "@ethersproject/abi" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + web3-errors "^1.1.2" + web3-types "^1.2.0" + web3-utils "^4.0.6" + +web3-provider-engine@^13.8.0: + version "13.8.0" + resolved "https://registry.yarnpkg.com/web3-provider-engine/-/web3-provider-engine-13.8.0.tgz#4c7c1ad2af5f1fe10343b8a65495879a2f9c00df" + integrity sha512-fZXhX5VWwWpoFfrfocslyg6P7cN3YWPG/ASaevNfeO80R+nzgoPUBXcWQekSGSsNDkeRTis4aMmpmofYf1TNtQ== + dependencies: + async "^2.5.0" + clone "^2.0.0" + eth-block-tracker "^2.2.2" + eth-sig-util "^1.4.2" + ethereumjs-block "^1.2.2" + ethereumjs-tx "^1.2.0" + ethereumjs-util "^5.1.1" + ethereumjs-vm "^2.0.2" + fetch-ponyfill "^4.0.0" + json-rpc-error "^2.0.0" + json-stable-stringify "^1.0.1" + promise-to-callback "^1.0.0" + readable-stream "^2.2.9" + request "^2.67.0" + semaphore "^1.0.3" + solc "^0.4.2" + tape "^4.4.0" + xhr "^2.2.0" + xtend "^4.0.1" + +web3-provider-engine@^8.4.0: + version "8.6.1" + resolved "https://registry.yarnpkg.com/web3-provider-engine/-/web3-provider-engine-8.6.1.tgz#4d86e19e30caaf97df351511ec0f60136e5b30eb" + integrity sha512-atTQJ14QBvd5N+71DKZHKCjHqCXfYQEcisLJHsZwvPmU5F3oRMydBXFmPU3sySHXgxASbV7Q9eEQAaPy+7rcHA== + dependencies: + async "^2.1.2" + clone "^2.0.0" + ethereumjs-block "^1.2.2" + ethereumjs-tx "^1.2.0" + ethereumjs-util "^5.0.1" + ethereumjs-vm "^2.0.2" + isomorphic-fetch "^2.2.0" + request "^2.67.0" + semaphore "^1.0.3" + solc "^0.4.2" + tape "^4.4.0" + web3 "^0.16.0" + xhr "^2.2.0" + xtend "^4.0.1" + +web3-types@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/web3-types/-/web3-types-1.2.0.tgz#176bfe53d7e46c2488d6b95c98df8f6cb1fe1375" + integrity sha512-ljx8mrkrOI8fRqvgOdxfpKYoso6n7I8T9LsqXl+Mz2Db0L+2H15an0xgdoWYpKndTPiU2NKRWFiopYifBQzcxQ== + +web3-utils@1.2.5: + version "1.2.5" + resolved "https://registry.yarnpkg.com/web3-utils/-/web3-utils-1.2.5.tgz#7691f981ce11dc919e123edbde159dce061a5a53" + integrity sha512-U0tNfB4Hep5ouzvNZ+Hr8I8kIftiHiDhwg+Eoh2Nvr5lLOPEH14B2exkRSARLXGY9xl2p3ykJWBCKoG1oCadug== + dependencies: + bn.js "4.11.8" + eth-lib "0.2.7" + ethereum-bloom-filters "^1.0.6" + ethjs-unit "0.1.6" + number-to-bn "1.7.0" + randombytes "^2.1.0" + underscore "1.9.1" + utf8 "3.0.0" + +web3-utils@^4.0.6: + version "4.0.6" + resolved "https://registry.yarnpkg.com/web3-utils/-/web3-utils-4.0.6.tgz#37c30cb884e1ccfecb752269bc7ff285105f4c0a" + integrity sha512-nLVtMf9mWTX604XiQQkWZlHLCag9GdHfQtnGJDNaDssTLUx5SpOm1CjhKCHcVcAH/QazEsWcLqUAuyqwKST1kA== + dependencies: + ethereum-cryptography "^2.0.0" + web3-errors "^1.1.2" + web3-types "^1.2.0" + web3-validator "^2.0.2" + +web3-validator@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/web3-validator/-/web3-validator-2.0.2.tgz#c0d411371c5ab75806c8ad958276171678b8ddb9" + integrity sha512-9sQ5owd2UldTsva3o3htj2fTPpbmUwb4TfBXhjIkew8FyT0ss3DPI+j3p6XrfdxIVBEQ5r17YUakElDV99aW+A== + dependencies: + ethereum-cryptography "^2.0.0" + util "^0.12.5" + web3-errors "^1.1.2" + web3-types "^1.2.0" + zod "^3.21.4" + +web3@^0.16.0: + version "0.16.0" + resolved "https://registry.yarnpkg.com/web3/-/web3-0.16.0.tgz#a4554175cd462943035b1f1d39432f741c6b6019" + integrity sha512-8vET/GI2qDtShXNtPkuWByWvPNou9ecuYI9OJswBdA+NUwe5WZKirHUWakS0y4mK6lGmOhv7mLN7cHCBhmQRyA== + dependencies: + bignumber.js "git+https://github.com/debris/bignumber.js#master" + crypto-js "^3.1.4" + utf8 "^2.1.1" + xmlhttprequest "*" + +web3@^0.18.2: + version "0.18.4" + resolved "https://registry.yarnpkg.com/web3/-/web3-0.18.4.tgz#81ec1784145491f2eaa8955b31c06049e07c5e7d" + integrity sha512-TG+CtszzJHRHq+1T0AJVN4ATDvNn4QIAIEnErTgx2jj9oCa5ggOqZv3Ub0RAF+Yr2F/e5F6UFpEUSH9QK7w50Q== + dependencies: + bignumber.js "git+https://github.com/debris/bignumber.js.git#94d7146671b9719e00a09c29b01a691bc85048c2" + crypto-js "^3.1.4" + utf8 "^2.1.1" + xhr2 "*" + xmlhttprequest "*" + +web3@^0.20.6: + version "0.20.7" + resolved "https://registry.yarnpkg.com/web3/-/web3-0.20.7.tgz#1605e6d81399ed6f85a471a4f3da0c8be57df2f7" + integrity sha512-VU6/DSUX93d1fCzBz7WP/SGCQizO1rKZi4Px9j/3yRyfssHyFcZamMw2/sj4E8TlfMXONvZLoforR8B4bRoyTQ== + dependencies: + bignumber.js "git+https://github.com/frozeman/bignumber.js-nolookahead.git" + crypto-js "^3.1.4" + utf8 "^2.1.1" + xhr2-cookies "^1.1.0" + xmlhttprequest "*" + +webidl-conversions@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" + integrity sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ== + +whatwg-fetch@>=0.10.0: + version "3.6.19" + resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-3.6.19.tgz#caefd92ae630b91c07345537e67f8354db470973" + integrity sha512-d67JP4dHSbm2TrpFj8AbO8DnL1JXL5J9u0Kq2xW6d0TFDbCA3Muhdt8orXC22utleTVj7Prqt82baN6RBvnEgw== + +whatwg-fetch@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-2.0.4.tgz#dde6a5df315f9d39991aa17621853d720b85566f" + integrity sha512-dcQ1GWpOD/eEQ97k66aiEVpNnapVj90/+R+SXTPYGHpYBBypfKJEQjLrvMZ7YXbKm21gXd4NcuxUTjiv1YtLng== + +whatwg-url@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d" + integrity sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw== + dependencies: + tr46 "~0.0.3" + webidl-conversions "^3.0.0" + +which-boxed-primitive@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz#13757bc89b209b049fe5d86430e21cf40a89a8e6" + integrity sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg== + dependencies: + is-bigint "^1.0.1" + is-boolean-object "^1.1.0" + is-number-object "^1.0.4" + is-string "^1.0.5" + is-symbol "^1.0.3" + +which-module@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/which-module/-/which-module-1.0.0.tgz#bba63ca861948994ff307736089e3b96026c2a4f" + integrity sha512-F6+WgncZi/mJDrammbTuHe1q0R5hOXv/mBaiNA2TCNT/LTHusX0V+CJnj9XT8ki5ln2UZyyddDgHfCzyrOH7MQ== + +which-typed-array@^1.1.11, which-typed-array@^1.1.2: + version "1.1.11" + resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.11.tgz#99d691f23c72aab6768680805a271b69761ed61a" + integrity sha512-qe9UWWpkeG5yzZ0tNYxDmd7vo58HDBc39mZ0xWWpolAGADdFOzkfamWLDxkOWcvHQKVmdTyQdLD4NOfjLWTKew== + dependencies: + available-typed-arrays "^1.0.5" + call-bind "^1.0.2" + for-each "^0.3.3" + gopd "^1.0.1" + has-tostringtag "^1.0.0" + +which@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" + integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== + dependencies: + isexe "^2.0.0" + +window-size@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.2.0.tgz#b4315bb4214a3d7058ebeee892e13fa24d98b075" + integrity sha512-UD7d8HFA2+PZsbKyaOCEy8gMh1oDtHgJh1LfgjQ4zVXmYjAT/kvz3PueITKuqDiIXQe7yzpPnxX3lNc+AhQMyw== + +winston-transport@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/winston-transport/-/winston-transport-4.5.0.tgz#6e7b0dd04d393171ed5e4e4905db265f7ab384fa" + integrity sha512-YpZzcUzBedhlTAfJg6vJDlyEai/IFMIVcaEZZyl3UXIl4gmqRpU7AE89AHLkbzLUsv0NVmw7ts+iztqKxxPW1Q== + dependencies: + logform "^2.3.2" + readable-stream "^3.6.0" + triple-beam "^1.3.0" + +winston@3.10.0: + version "3.10.0" + resolved "https://registry.yarnpkg.com/winston/-/winston-3.10.0.tgz#d033cb7bd3ced026fed13bf9d92c55b903116803" + integrity sha512-nT6SIDaE9B7ZRO0u3UvdrimG0HkB7dSTAgInQnNR2SOPJ4bvq5q79+pXLftKmP52lJGW15+H5MCK0nM9D3KB/g== + dependencies: + "@colors/colors" "1.5.0" + "@dabh/diagnostics" "^2.0.2" + async "^3.2.3" + is-stream "^2.0.0" + logform "^2.4.0" + one-time "^1.0.0" + readable-stream "^3.4.0" + safe-stable-stringify "^2.3.1" + stack-trace "0.0.x" + triple-beam "^1.3.0" + winston-transport "^4.5.0" + +wordwrapjs@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/wordwrapjs/-/wordwrapjs-4.0.1.tgz#d9790bccfb110a0fc7836b5ebce0937b37a8b98f" + integrity sha512-kKlNACbvHrkpIw6oPeYDSmdCTu2hdMHoyXLTcUKala++lx5Y+wjJ/e474Jqv5abnVmwxw08DiTuHmw69lJGksA== + dependencies: + reduce-flatten "^2.0.0" + typical "^5.2.0" + workerpool@6.2.1: version "6.2.1" resolved "https://registry.yarnpkg.com/workerpool/-/workerpool-6.2.1.tgz#46fc150c17d826b86a008e5a4508656777e9c343" integrity sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw== +wrap-ansi@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" + integrity sha512-vAaEaDM946gbNpH5pLVNR+vX2ht6n0Bt3GXwVB1AuAqZosOvHNF3P7wDnh8KLkSqgUh0uh77le7Owgoz+Z9XBw== + dependencies: + string-width "^1.0.1" + strip-ansi "^3.0.1" + wrap-ansi@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" @@ -2299,16 +7686,94 @@ wrappy@1: resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== +ws@7.1.2: + version "7.1.2" + resolved "https://registry.yarnpkg.com/ws/-/ws-7.1.2.tgz#c672d1629de8bb27a9699eb599be47aeeedd8f73" + integrity sha512-gftXq3XI81cJCgkUiAVixA0raD9IVmXqsylCrjRygw4+UOOGzPoxnQ6r/CnVL9i+mDncJo94tSkyrtuuQVBmrg== + dependencies: + async-limiter "^1.0.0" + ws@7.4.6: version "7.4.6" resolved "https://registry.yarnpkg.com/ws/-/ws-7.4.6.tgz#5654ca8ecdeee47c33a9a4bf6d28e2be2980377c" integrity sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A== +ws@^5.1.1: + version "5.2.3" + resolved "https://registry.yarnpkg.com/ws/-/ws-5.2.3.tgz#05541053414921bc29c63bee14b8b0dd50b07b3d" + integrity sha512-jZArVERrMsKUatIdnLzqvcfydI85dvd/Fp1u/VOpfdDWQ4c9qWXe+VIeAbQ5FrDwciAkr+lzofXLz3Kuf26AOA== + dependencies: + async-limiter "~1.0.0" + ws@^7.4.6: version "7.5.9" resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.9.tgz#54fa7db29f4c7cec68b1ddd3a89de099942bb591" integrity sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q== +xhr-request-promise@^0.1.2: + version "0.1.3" + resolved "https://registry.yarnpkg.com/xhr-request-promise/-/xhr-request-promise-0.1.3.tgz#2d5f4b16d8c6c893be97f1a62b0ed4cf3ca5f96c" + integrity sha512-YUBytBsuwgitWtdRzXDDkWAXzhdGB8bYm0sSzMPZT7Z2MBjMSTHFsyCT1yCRATY+XC69DUrQraRAEgcoCRaIPg== + dependencies: + xhr-request "^1.1.0" + +xhr-request@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/xhr-request/-/xhr-request-1.1.0.tgz#f4a7c1868b9f198723444d82dcae317643f2e2ed" + integrity sha512-Y7qzEaR3FDtL3fP30k9wO/e+FBnBByZeybKOhASsGP30NIkRAAkKD/sCnLvgEfAIEC1rcmK7YG8f4oEnIrrWzA== + dependencies: + buffer-to-arraybuffer "^0.0.5" + object-assign "^4.1.1" + query-string "^5.0.1" + simple-get "^2.7.0" + timed-out "^4.0.1" + url-set-query "^1.0.0" + xhr "^2.0.4" + +xhr2-cookies@1.1.0, xhr2-cookies@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/xhr2-cookies/-/xhr2-cookies-1.1.0.tgz#7d77449d0999197f155cb73b23df72505ed89d48" + integrity sha512-hjXUA6q+jl/bd8ADHcVfFsSPIf+tyLIjuO9TwJC9WI6JP2zKcS7C+p56I9kCLLsaCiNT035iYvEUUzdEFj/8+g== + dependencies: + cookiejar "^2.1.1" + +xhr2@*: + version "0.2.1" + resolved "https://registry.yarnpkg.com/xhr2/-/xhr2-0.2.1.tgz#4e73adc4f9cfec9cbd2157f73efdce3a5f108a93" + integrity sha512-sID0rrVCqkVNUn8t6xuv9+6FViXjUVXq8H5rWOH2rz9fDNQEd4g0EA2XlcEdJXRz5BMEn4O1pJFdT+z4YHhoWw== + +xhr@^2.0.4, xhr@^2.2.0: + version "2.6.0" + resolved "https://registry.yarnpkg.com/xhr/-/xhr-2.6.0.tgz#b69d4395e792b4173d6b7df077f0fc5e4e2b249d" + integrity sha512-/eCGLb5rxjx5e3mF1A7s+pLlR6CGyqWN91fv1JgER5mVWg1MZmlhBvy9kjcsOdRk8RrIujotWyJamfyrp+WIcA== + dependencies: + global "~4.4.0" + is-function "^1.0.1" + parse-headers "^2.0.0" + xtend "^4.0.0" + +xmlhttprequest@*, xmlhttprequest@1.8.0: + version "1.8.0" + resolved "https://registry.yarnpkg.com/xmlhttprequest/-/xmlhttprequest-1.8.0.tgz#67fe075c5c24fef39f9d65f5f7b7fe75171968fc" + integrity sha512-58Im/U0mlVBLM38NdZjHyhuMtCqa61469k2YP/AaPbvCoV9aQGUpbJBj1QRm2ytRiVQBD/fsw7L2bJGDVQswBA== + +xtend@^4.0.0, xtend@^4.0.1, xtend@~4.0.0: + version "4.0.2" + resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" + integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== + +xtend@~2.1.1: + version "2.1.2" + resolved "https://registry.yarnpkg.com/xtend/-/xtend-2.1.2.tgz#6efecc2a4dad8e6962c4901b337ce7ba87b5d28b" + integrity sha512-vMNKzr2rHP9Dp/e1NQFnLQlwlhp9L/LfvnsVdHxN1f+uggyVI3i08uD14GPvCToPkdsRfyPqIyYGmIk58V98ZQ== + dependencies: + object-keys "~0.4.0" + +y18n@^3.2.1: + version "3.2.2" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.2.tgz#85c901bd6470ce71fc4bb723ad209b70f7f28696" + integrity sha512-uGZHXkHnhF0XeeAPgnKfPv1bgKAYyVvmNL1xlKsPYZPaIHxGti2hHqvOCQv71XMsLxu1QjergkqogUnms5D3YQ== + y18n@^5.0.5: version "5.0.8" resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" @@ -2319,11 +7784,24 @@ yallist@^3.0.2: resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== +yaml@^2.2.2: + version "2.3.2" + resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.3.2.tgz#f522db4313c671a0ca963a75670f1c12ea909144" + integrity sha512-N/lyzTPaJasoDmfV7YTrYCI0G/3ivm/9wdG0aHuheKowWQwGTsK0Eoiw6utmzAnI6pkJa0DUVygvp3spqqEKXg== + yargs-parser@20.2.4: version "20.2.4" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.4.tgz#b42890f14566796f85ae8e3a25290d205f154a54" integrity sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA== +yargs-parser@^2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-2.4.1.tgz#85568de3cf150ff49fa51825f03a8c880ddcc5c4" + integrity sha512-9pIKIJhnI5tonzG6OnCFlz/yln8xHYcGl+pn3xR0Vzff0vzN1PbNRaelgfgRUwZ3s4i3jvxT9WhmUGL4whnasA== + dependencies: + camelcase "^3.0.0" + lodash.assign "^4.0.6" + yargs-parser@^20.2.2: version "20.2.9" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee" @@ -2352,7 +7830,37 @@ yargs@16.2.0: y18n "^5.0.5" yargs-parser "^20.2.2" +yargs@^4.7.1: + version "4.8.1" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-4.8.1.tgz#c0c42924ca4aaa6b0e6da1739dfb216439f9ddc0" + integrity sha512-LqodLrnIDM3IFT+Hf/5sxBnEGECrfdC1uIbgZeJmESCSo4HoCAaKEus8MylXHAkdacGc0ye+Qa+dpkuom8uVYA== + dependencies: + cliui "^3.2.0" + decamelize "^1.1.1" + get-caller-file "^1.0.1" + lodash.assign "^4.0.3" + os-locale "^1.4.0" + read-pkg-up "^1.0.1" + require-directory "^2.1.1" + require-main-filename "^1.0.1" + set-blocking "^2.0.0" + string-width "^1.0.1" + which-module "^1.0.0" + window-size "^0.2.0" + y18n "^3.2.1" + yargs-parser "^2.4.1" + +yn@3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/yn/-/yn-3.1.1.tgz#1e87401a09d767c1d5eab26a6e4c185182d2eb50" + integrity sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q== + yocto-queue@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== + +zod@^3.21.4, zod@^3.22.0: + version "3.22.2" + resolved "https://registry.yarnpkg.com/zod/-/zod-3.22.2.tgz#3add8c682b7077c05ac6f979fea6998b573e157b" + integrity sha512-wvWkphh5WQsJbVk1tbx1l1Ly4yg+XecD+Mq280uBGt9wa5BKSWf4Mhp6GmrkPixhMxmabYY7RbzlwVP32pbGCg== From 287b26971b9c655330df0a7b8cb717efd9bfb3df Mon Sep 17 00:00:00 2001 From: F4ever <1590415904a@gmail.com> Date: Fri, 29 Sep 2023 11:24:33 +0200 Subject: [PATCH 33/42] to web3 6 --- interfaces/DepositSecurityModule.json | 684 +----------------- package.json | 2 +- poetry.lock | 605 +++++++++------- pyproject.toml | 3 +- .../web3_extentions/lido_contracts.py | 11 +- src/blockchain/web3_extentions/transaction.py | 24 +- src/cryptography/verify_signature.py | 5 +- src/depositor.py | 2 +- src/variables.py | 9 +- tests/bots/test_depositor.py | 50 +- tests/bots/test_pauser.py | 50 +- tests/conftest.py | 9 +- tests/fixtures/__init__.py | 2 + tests/fixtures/provider.py | 28 +- yarn.lock | 8 +- 15 files changed, 447 insertions(+), 1045 deletions(-) diff --git a/interfaces/DepositSecurityModule.json b/interfaces/DepositSecurityModule.json index 70a8c959..fce97939 100644 --- a/interfaces/DepositSecurityModule.json +++ b/interfaces/DepositSecurityModule.json @@ -1,683 +1 @@ -[ - { - "inputs": [ - { - "internalType": "address", - "name": "_lido", - "type": "address" - }, - { - "internalType": "address", - "name": "_depositContract", - "type": "address" - }, - { - "internalType": "address", - "name": "_stakingRouter", - "type": "address" - }, - { - "internalType": "uint256", - "name": "_maxDepositsPerBlock", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "_minDepositBlockDistance", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "_pauseIntentValidityPeriodBlocks", - "type": "uint256" - } - ], - "stateMutability": "nonpayable", - "type": "constructor" - }, - { - "inputs": [], - "name": "DepositInactiveModule", - "type": "error" - }, - { - "inputs": [], - "name": "DepositNoQuorum", - "type": "error" - }, - { - "inputs": [], - "name": "DepositNonceChanged", - "type": "error" - }, - { - "inputs": [], - "name": "DepositRootChanged", - "type": "error" - }, - { - "inputs": [], - "name": "DepositTooFrequent", - "type": "error" - }, - { - "inputs": [], - "name": "DepositUnexpectedBlockHash", - "type": "error" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "addr", - "type": "address" - } - ], - "name": "DuplicateAddress", - "type": "error" - }, - { - "inputs": [], - "name": "InvalidSignature", - "type": "error" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "addr", - "type": "address" - } - ], - "name": "NotAGuardian", - "type": "error" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "caller", - "type": "address" - } - ], - "name": "NotAnOwner", - "type": "error" - }, - { - "inputs": [], - "name": "PauseIntentExpired", - "type": "error" - }, - { - "inputs": [], - "name": "SignatureNotSorted", - "type": "error" - }, - { - "inputs": [ - { - "internalType": "string", - "name": "field", - "type": "string" - } - ], - "name": "ZeroAddress", - "type": "error" - }, - { - "inputs": [ - { - "internalType": "string", - "name": "parameter", - "type": "string" - } - ], - "name": "ZeroParameter", - "type": "error" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "guardian", - "type": "address" - }, - { - "indexed": true, - "internalType": "uint24", - "name": "stakingModuleId", - "type": "uint24" - } - ], - "name": "DepositsPaused", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "uint24", - "name": "stakingModuleId", - "type": "uint24" - } - ], - "name": "DepositsUnpaused", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "guardian", - "type": "address" - } - ], - "name": "GuardianAdded", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint256", - "name": "newValue", - "type": "uint256" - } - ], - "name": "GuardianQuorumChanged", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "guardian", - "type": "address" - } - ], - "name": "GuardianRemoved", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint256", - "name": "newValue", - "type": "uint256" - } - ], - "name": "MaxDepositsChanged", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint256", - "name": "newValue", - "type": "uint256" - } - ], - "name": "MinDepositBlockDistanceChanged", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "newValue", - "type": "address" - } - ], - "name": "OwnerChanged", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint256", - "name": "newValue", - "type": "uint256" - } - ], - "name": "PauseIntentValidityPeriodBlocksChanged", - "type": "event" - }, - { - "inputs": [], - "name": "ATTEST_MESSAGE_PREFIX", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "DEPOSIT_CONTRACT", - "outputs": [ - { - "internalType": "contract IDepositContract", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "LIDO", - "outputs": [ - { - "internalType": "contract ILido", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "PAUSE_MESSAGE_PREFIX", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "STAKING_ROUTER", - "outputs": [ - { - "internalType": "contract IStakingRouter", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "addr", - "type": "address" - }, - { - "internalType": "uint256", - "name": "newQuorum", - "type": "uint256" - } - ], - "name": "addGuardian", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address[]", - "name": "addresses", - "type": "address[]" - }, - { - "internalType": "uint256", - "name": "newQuorum", - "type": "uint256" - } - ], - "name": "addGuardians", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "stakingModuleId", - "type": "uint256" - } - ], - "name": "canDeposit", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "blockNumber", - "type": "uint256" - }, - { - "internalType": "bytes32", - "name": "blockHash", - "type": "bytes32" - }, - { - "internalType": "bytes32", - "name": "depositRoot", - "type": "bytes32" - }, - { - "internalType": "uint256", - "name": "stakingModuleId", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "nonce", - "type": "uint256" - }, - { - "internalType": "bytes", - "name": "depositCalldata", - "type": "bytes" - }, - { - "components": [ - { - "internalType": "bytes32", - "name": "r", - "type": "bytes32" - }, - { - "internalType": "bytes32", - "name": "vs", - "type": "bytes32" - } - ], - "internalType": "struct DepositSecurityModule.Signature[]", - "name": "sortedGuardianSignatures", - "type": "tuple[]" - } - ], - "name": "depositBufferedEther", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "addr", - "type": "address" - } - ], - "name": "getGuardianIndex", - "outputs": [ - { - "internalType": "int256", - "name": "", - "type": "int256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "getGuardianQuorum", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "getGuardians", - "outputs": [ - { - "internalType": "address[]", - "name": "", - "type": "address[]" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "getMaxDeposits", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "getMinDepositBlockDistance", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "getOwner", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "getPauseIntentValidityPeriodBlocks", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "addr", - "type": "address" - } - ], - "name": "isGuardian", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "blockNumber", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "stakingModuleId", - "type": "uint256" - }, - { - "components": [ - { - "internalType": "bytes32", - "name": "r", - "type": "bytes32" - }, - { - "internalType": "bytes32", - "name": "vs", - "type": "bytes32" - } - ], - "internalType": "struct DepositSecurityModule.Signature", - "name": "sig", - "type": "tuple" - } - ], - "name": "pauseDeposits", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "addr", - "type": "address" - }, - { - "internalType": "uint256", - "name": "newQuorum", - "type": "uint256" - } - ], - "name": "removeGuardian", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "newValue", - "type": "uint256" - } - ], - "name": "setGuardianQuorum", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "newValue", - "type": "uint256" - } - ], - "name": "setMaxDeposits", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "newValue", - "type": "uint256" - } - ], - "name": "setMinDepositBlockDistance", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "newValue", - "type": "address" - } - ], - "name": "setOwner", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "newValue", - "type": "uint256" - } - ], - "name": "setPauseIntentValidityPeriodBlocks", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "stakingModuleId", - "type": "uint256" - } - ], - "name": "unpauseDeposits", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - } -] \ No newline at end of file +[{"inputs":[{"internalType":"address","name":"_lido","type":"address"},{"internalType":"address","name":"_depositContract","type":"address"},{"internalType":"address","name":"_stakingRouter","type":"address"},{"internalType":"uint256","name":"_maxDepositsPerBlock","type":"uint256"},{"internalType":"uint256","name":"_minDepositBlockDistance","type":"uint256"},{"internalType":"uint256","name":"_pauseIntentValidityPeriodBlocks","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"DepositInactiveModule","type":"error"},{"inputs":[],"name":"DepositNoQuorum","type":"error"},{"inputs":[],"name":"DepositNonceChanged","type":"error"},{"inputs":[],"name":"DepositRootChanged","type":"error"},{"inputs":[],"name":"DepositTooFrequent","type":"error"},{"inputs":[],"name":"DepositUnexpectedBlockHash","type":"error"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"DuplicateAddress","type":"error"},{"inputs":[],"name":"InvalidSignature","type":"error"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"NotAGuardian","type":"error"},{"inputs":[{"internalType":"address","name":"caller","type":"address"}],"name":"NotAnOwner","type":"error"},{"inputs":[],"name":"PauseIntentExpired","type":"error"},{"inputs":[],"name":"SignaturesNotSorted","type":"error"},{"inputs":[{"internalType":"string","name":"field","type":"string"}],"name":"ZeroAddress","type":"error"},{"inputs":[{"internalType":"string","name":"parameter","type":"string"}],"name":"ZeroParameter","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"guardian","type":"address"},{"indexed":true,"internalType":"uint24","name":"stakingModuleId","type":"uint24"}],"name":"DepositsPaused","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint24","name":"stakingModuleId","type":"uint24"}],"name":"DepositsUnpaused","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"guardian","type":"address"}],"name":"GuardianAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"GuardianQuorumChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"guardian","type":"address"}],"name":"GuardianRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"MaxDepositsChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"MinDepositBlockDistanceChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"newValue","type":"address"}],"name":"OwnerChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"PauseIntentValidityPeriodBlocksChanged","type":"event"},{"inputs":[],"name":"ATTEST_MESSAGE_PREFIX","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"DEPOSIT_CONTRACT","outputs":[{"internalType":"contract IDepositContract","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"LIDO","outputs":[{"internalType":"contract ILido","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PAUSE_MESSAGE_PREFIX","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"STAKING_ROUTER","outputs":[{"internalType":"contract IStakingRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"uint256","name":"newQuorum","type":"uint256"}],"name":"addGuardian","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"uint256","name":"newQuorum","type":"uint256"}],"name":"addGuardians","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"stakingModuleId","type":"uint256"}],"name":"canDeposit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"blockNumber","type":"uint256"},{"internalType":"bytes32","name":"blockHash","type":"bytes32"},{"internalType":"bytes32","name":"depositRoot","type":"bytes32"},{"internalType":"uint256","name":"stakingModuleId","type":"uint256"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"bytes","name":"depositCalldata","type":"bytes"},{"components":[{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"vs","type":"bytes32"}],"internalType":"struct DepositSecurityModule.Signature[]","name":"sortedGuardianSignatures","type":"tuple[]"}],"name":"depositBufferedEther","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"getGuardianIndex","outputs":[{"internalType":"int256","name":"","type":"int256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getGuardianQuorum","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getGuardians","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMaxDeposits","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMinDepositBlockDistance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getPauseIntentValidityPeriodBlocks","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"isGuardian","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"blockNumber","type":"uint256"},{"internalType":"uint256","name":"stakingModuleId","type":"uint256"},{"components":[{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"vs","type":"bytes32"}],"internalType":"struct DepositSecurityModule.Signature","name":"sig","type":"tuple"}],"name":"pauseDeposits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"uint256","name":"newQuorum","type":"uint256"}],"name":"removeGuardian","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setGuardianQuorum","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setMaxDeposits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setMinDepositBlockDistance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newValue","type":"address"}],"name":"setOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setPauseIntentValidityPeriodBlocks","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"stakingModuleId","type":"uint256"}],"name":"unpauseDeposits","outputs":[],"stateMutability":"nonpayable","type":"function"}] \ No newline at end of file diff --git a/package.json b/package.json index de692d7c..51338df5 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "devDependencies": { - "chronix": "0.0.2-beta-plugin-v10", + "chronix": "0.0.2-beta-plugin-v12", "dotenv": "^16.3.1", "hardhat": "^2.17.3", "simple-dvt-v1": "0.0.5" diff --git a/poetry.lock b/poetry.lock index 5d3dbe42..d76d31bc 100644 --- a/poetry.lock +++ b/poetry.lock @@ -155,21 +155,6 @@ docs = ["furo", "myst-parser", "sphinx", "sphinx-notfound-page", "sphinxcontrib- tests = ["attrs[tests-no-zope]", "zope-interface"] tests-no-zope = ["cloudpickle", "hypothesis", "mypy (>=1.1.1)", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-xdist[psutil]"] -[[package]] -name = "base58" -version = "2.1.1" -description = "Base58 and Base58Check implementation." -category = "main" -optional = false -python-versions = ">=3.5" -files = [ - {file = "base58-2.1.1-py3-none-any.whl", hash = "sha256:11a36f4d3ce51dfc1043f3218591ac4eb1ceb172919cebe05b52a5bcc8d245c2"}, - {file = "base58-2.1.1.tar.gz", hash = "sha256:c5d0cb3f5b6e81e8e35da5754388ddcc6d0d14b6c6a132cb93d69ed580a7278c"}, -] - -[package.extras] -tests = ["PyHamcrest (>=2.0.2)", "mypy", "pytest (>=4.6)", "pytest-benchmark", "pytest-cov", "pytest-flake8"] - [[package]] name = "bitarray" version = "2.8.0" @@ -561,184 +546,189 @@ cython = ["cython"] [[package]] name = "eth-abi" -version = "2.2.0" +version = "4.2.1" description = "eth_abi: Python utilities for working with Ethereum ABI definitions, especially encoding and decoding" category = "main" optional = false -python-versions = ">=3.6, <4" +python-versions = ">=3.7.2, <4" files = [ - {file = "eth_abi-2.2.0-py3-none-any.whl", hash = "sha256:8d018351b00e304113f50ffded9baf4b9c6ef1c7e4ddec71bd64048c1c5c438c"}, - {file = "eth_abi-2.2.0.tar.gz", hash = "sha256:d1bd16a911dd8fe45f1e6ed02099b4fceb8ae9ea741ab11b135cf288ada74a99"}, + {file = "eth_abi-4.2.1-py3-none-any.whl", hash = "sha256:abd83410a5326145bf178675c276de0ed154f6dc695dcad1beafaa44d97f44ae"}, + {file = "eth_abi-4.2.1.tar.gz", hash = "sha256:60d88788d53725794cdb07c0f0bb0df2a31a6e1ad19644313fe6117ac24eeeb0"}, ] [package.dependencies] -eth-typing = ">=2.0.0,<3.0.0" -eth-utils = ">=1.2.0,<2.0.0" -parsimonious = ">=0.8.0,<0.9.0" +eth-typing = ">=3.0.0" +eth-utils = ">=2.0.0" +parsimonious = ">=0.9.0,<0.10.0" [package.extras] -dev = ["Sphinx (>=1.6.5,<2)", "bumpversion (>=0.5.3,<1)", "eth-hash[pycryptodome]", "flake8 (==4.0.1)", "hypothesis (>=4.18.2,<5.0.0)", "ipython", "isort (>=4.2.15,<5)", "jinja2 (>=3.0.0,<3.1.0)", "mypy (==0.910)", "pydocstyle (>=3.0.0,<4)", "pytest (==4.4.1)", "pytest-pythonpath (>=0.7.1)", "pytest-watch (>=4.1.0,<5)", "pytest-xdist (==1.22.3)", "sphinx-rtd-theme (>=0.1.9)", "towncrier (>=21,<22)", "tox (>=2.9.1,<3)", "twine", "wheel"] -doc = ["Sphinx (>=1.6.5,<2)", "jinja2 (>=3.0.0,<3.1.0)", "sphinx-rtd-theme (>=0.1.9)", "towncrier (>=21,<22)"] -lint = ["flake8 (==4.0.1)", "isort (>=4.2.15,<5)", "mypy (==0.910)", "pydocstyle (>=3.0.0,<4)"] -test = ["eth-hash[pycryptodome]", "hypothesis (>=4.18.2,<5.0.0)", "pytest (==4.4.1)", "pytest-pythonpath (>=0.7.1)", "pytest-xdist (==1.22.3)", "tox (>=2.9.1,<3)"] +dev = ["black (>=23)", "build (>=0.9.0)", "bumpversion (>=0.5.3)", "eth-hash[pycryptodome]", "flake8 (==6.0.0)", "flake8-bugbear (==23.3.23)", "hypothesis (>=4.18.2,<5.0.0)", "ipython", "isort (>=5.10.1)", "mypy (==0.971)", "pydocstyle (>=6.0.0)", "pytest (>=7.0.0)", "pytest-pythonpath (>=0.7.1)", "pytest-watch (>=4.1.0)", "pytest-xdist (>=2.4.0)", "sphinx (>=5.0.0)", "sphinx-rtd-theme (>=1.0.0)", "towncrier (>=21,<22)", "tox (>=4.0.0)", "twine", "wheel"] +doc = ["sphinx (>=5.0.0)", "sphinx-rtd-theme (>=1.0.0)", "towncrier (>=21,<22)"] +lint = ["black (>=23)", "flake8 (==6.0.0)", "flake8-bugbear (==23.3.23)", "isort (>=5.10.1)", "mypy (==0.971)", "pydocstyle (>=6.0.0)"] +test = ["eth-hash[pycryptodome]", "hypothesis (>=4.18.2,<5.0.0)", "pytest (>=7.0.0)", "pytest-pythonpath (>=0.7.1)", "pytest-xdist (>=2.4.0)"] tools = ["hypothesis (>=4.18.2,<5.0.0)"] [[package]] name = "eth-account" -version = "0.5.9" +version = "0.9.0" description = "eth-account: Sign Ethereum transactions and messages with local private keys" category = "main" optional = false -python-versions = ">=3.6, <4" +python-versions = ">=3.7, <4" files = [ - {file = "eth-account-0.5.9.tar.gz", hash = "sha256:ee62e121d977ca452f600043338af36f9349aa1f8409c5096d75df6576c79f1b"}, - {file = "eth_account-0.5.9-py3-none-any.whl", hash = "sha256:42f9eefbf0e1c84a278bf27a25eccc2e0c20b18c17e2ab6f46044a534479e95a"}, + {file = "eth-account-0.9.0.tar.gz", hash = "sha256:5f66ecb7bc52569924dfaf4a9add501b1c2a4901eec74e3c0598cd26d0971777"}, + {file = "eth_account-0.9.0-py3-none-any.whl", hash = "sha256:35636ca14e9063dea233648703338be1a44e8cb1a2f9de1519d2b1be4655da59"}, ] [package.dependencies] -bitarray = ">=1.2.1,<3" -eth-abi = ">=2.0.0b7,<3" -eth-keyfile = ">=0.5.0,<0.6.0" -eth-keys = ">=0.3.4,<0.4.0" -eth-rlp = ">=0.1.2,<2" -eth-utils = ">=1.3.0,<2" -hexbytes = ">=0.1.0,<1" -rlp = ">=1.0.0,<3" +bitarray = ">=2.4.0" +eth-abi = ">=4.0.0-b.2" +eth-keyfile = ">=0.6.0" +eth-keys = ">=0.4.0" +eth-rlp = ">=0.3.0" +eth-utils = ">=2.0.0" +hexbytes = ">=0.1.0" +rlp = ">=1.0.0" [package.extras] -dev = ["Sphinx (>=1.6.5,<2)", "bumpversion (>=0.5.3,<1)", "flake8 (==3.7.9)", "hypothesis (>=4.18.0,<5)", "ipython", "isort (>=4.2.15,<5)", "mypy (==0.910)", "pydocstyle (>=5.0.0,<6)", "pytest (>=6.2.5,<7)", "pytest-watch (>=4.1.0,<5)", "pytest-xdist", "sphinx-rtd-theme (>=0.1.9,<1)", "towncrier (>=21.9.0)", "tox (==3.14.6)", "twine", "wheel"] -doc = ["Sphinx (>=1.6.5,<2)", "sphinx-rtd-theme (>=0.1.9,<1)", "towncrier (>=21.9.0)"] -lint = ["flake8 (==3.7.9)", "isort (>=4.2.15,<5)", "mypy (==0.910)", "pydocstyle (>=5.0.0,<6)"] -test = ["hypothesis (>=4.18.0,<5)", "pytest (>=6.2.5,<7)", "pytest-xdist", "tox (==3.14.6)"] +dev = ["black (>=23)", "build (>=0.9.0)", "bumpversion (>=0.5.3)", "coverage", "flake8 (==6.0.0)", "flake8-bugbear (==23.3.23)", "hypothesis (>=4.18.0,<5)", "ipython", "isort (>=5.10.1)", "mypy (==0.971)", "pydocstyle (>=6.0.0)", "pytest (>=7.0.0)", "pytest-watch (>=4.1.0)", "pytest-xdist (>=2.4.0)", "sphinx (>=5.0.0)", "sphinx-rtd-theme (>=1.0.0)", "towncrier (>=21,<22)", "tox (>=4.0.0)", "twine", "wheel"] +doc = ["sphinx (>=5.0.0)", "sphinx-rtd-theme (>=1.0.0)", "towncrier (>=21,<22)"] +lint = ["black (>=23)", "flake8 (==6.0.0)", "flake8-bugbear (==23.3.23)", "isort (>=5.10.1)", "mypy (==0.971)", "pydocstyle (>=6.0.0)"] +test = ["coverage", "hypothesis (>=4.18.0,<5)", "pytest (>=7.0.0)", "pytest-xdist (>=2.4.0)"] [[package]] name = "eth-hash" -version = "0.3.3" +version = "0.5.2" description = "eth-hash: The Ethereum hashing function, keccak256, sometimes (erroneously) called sha3" category = "main" optional = false -python-versions = ">=3.5, <4" +python-versions = ">=3.7, <4" files = [ - {file = "eth-hash-0.3.3.tar.gz", hash = "sha256:8cde211519ff1a98b46e9057cb909f12ab62e263eb30a0a94e2f7e1f46ac67a0"}, - {file = "eth_hash-0.3.3-py3-none-any.whl", hash = "sha256:3c884e4f788b38cc92cff05c4e43bc6b82686066f04ecfae0e11cdcbe5a283bd"}, + {file = "eth-hash-0.5.2.tar.gz", hash = "sha256:1b5f10eca7765cc385e1430eefc5ced6e2e463bb18d1365510e2e539c1a6fe4e"}, + {file = "eth_hash-0.5.2-py3-none-any.whl", hash = "sha256:251f62f6579a1e247561679d78df37548bd5f59908da0b159982bf8293ad32f0"}, ] [package.dependencies] pycryptodome = {version = ">=3.6.6,<4", optional = true, markers = "extra == \"pycryptodome\""} [package.extras] -dev = ["Sphinx (>=1.6.5,<2)", "bumpversion (>=0.5.3,<1)", "flake8 (==3.7.9)", "ipython", "isort (>=4.2.15,<5)", "mypy (==0.770)", "pydocstyle (>=5.0.0,<6)", "pytest (==5.4.1)", "pytest-watch (>=4.1.0,<5)", "pytest-xdist", "sphinx-rtd-theme (>=0.1.9,<1)", "towncrier (>=19.2.0,<20)", "tox (==3.14.6)", "twine", "wheel"] -doc = ["Sphinx (>=1.6.5,<2)", "sphinx-rtd-theme (>=0.1.9,<1)", "towncrier (>=19.2.0,<20)"] -lint = ["flake8 (==3.7.9)", "isort (>=4.2.15,<5)", "mypy (==0.770)", "pydocstyle (>=5.0.0,<6)"] +dev = ["black (>=23)", "build (>=0.9.0)", "bumpversion (>=0.5.3)", "flake8 (==6.0.0)", "flake8-bugbear (==23.3.23)", "ipython", "isort (>=5.10.1)", "mypy (==0.971)", "pydocstyle (>=6.0.0)", "pytest (>=7.0.0)", "pytest-watch (>=4.1.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"] +doc = ["sphinx (>=6.0.0)", "sphinx-rtd-theme (>=1.0.0)", "towncrier (>=21,<22)"] +lint = ["black (>=23)", "flake8 (==6.0.0)", "flake8-bugbear (==23.3.23)", "isort (>=5.10.1)", "mypy (==0.971)", "pydocstyle (>=6.0.0)"] pycryptodome = ["pycryptodome (>=3.6.6,<4)"] -pysha3 = ["pysha3 (>=1.0.0,<2.0.0)"] -test = ["pytest (==5.4.1)", "pytest-xdist", "tox (==3.14.6)"] +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.5.1" +version = "0.6.1" description = "A library for handling the encrypted keyfiles used to store ethereum private keys." category = "main" optional = false python-versions = "*" files = [ - {file = "eth-keyfile-0.5.1.tar.gz", hash = "sha256:939540efb503380bc30d926833e6a12b22c6750de80feef3720d79e5a79de47d"}, - {file = "eth_keyfile-0.5.1-py3-none-any.whl", hash = "sha256:70d734af17efdf929a90bb95375f43522be4ed80c3b9e0a8bca575fb11cd1159"}, + {file = "eth-keyfile-0.6.1.tar.gz", hash = "sha256:471be6e5386fce7b22556b3d4bde5558dbce46d2674f00848027cb0a20abdc8c"}, + {file = "eth_keyfile-0.6.1-py3-none-any.whl", hash = "sha256:609773a1ad5956944a33348413cad366ec6986c53357a806528c8f61c4961560"}, ] [package.dependencies] -cytoolz = ">=0.9.0,<1.0.0" -eth-keys = ">=0.1.0-beta.4,<1.0.0" -eth-utils = ">=1.0.0-beta.1,<2.0.0" -pycryptodome = ">=3.4.7,<4.0.0" +eth-keys = ">=0.4.0,<0.5.0" +eth-utils = ">=2,<3" +pycryptodome = ">=3.6.6,<4" + +[package.extras] +dev = ["bumpversion (>=0.5.3,<1)", "eth-keys (>=0.4.0,<0.5.0)", "eth-utils (>=2,<3)", "flake8 (==4.0.1)", "idna (==2.7)", "pluggy (>=1.0.0,<2)", "pycryptodome (>=3.6.6,<4)", "pytest (>=6.2.5,<7)", "requests (>=2.20,<3)", "setuptools (>=38.6.0)", "tox (>=2.7.0)", "twine", "wheel"] +keyfile = ["eth-keys (>=0.4.0,<0.5.0)", "eth-utils (>=2,<3)", "pycryptodome (>=3.6.6,<4)"] +lint = ["flake8 (==4.0.1)"] +test = ["pytest (>=6.2.5,<7)"] [[package]] name = "eth-keys" -version = "0.3.4" +version = "0.4.0" description = "Common API for Ethereum key operations." category = "main" optional = false python-versions = "*" files = [ - {file = "eth-keys-0.3.4.tar.gz", hash = "sha256:e5590797f5e2930086c705a6dd1ac14397f74f19bdcd1b5f837475554f354ad8"}, - {file = "eth_keys-0.3.4-py3-none-any.whl", hash = "sha256:565bf62179b8143bcbd302a0ec6c49882d9c7678f9e6ab0484a8a5725f5ef10e"}, + {file = "eth-keys-0.4.0.tar.gz", hash = "sha256:7d18887483bc9b8a3fdd8e32ddcb30044b9f08fcb24a380d93b6eee3a5bb3216"}, + {file = "eth_keys-0.4.0-py3-none-any.whl", hash = "sha256:e07915ffb91277803a28a379418bdd1fad1f390c38ad9353a0f189789a440d5d"}, ] [package.dependencies] -eth-typing = ">=2.2.1,<3.0.0" -eth-utils = ">=1.8.2,<2.0.0" +eth-typing = ">=3.0.0,<4" +eth-utils = ">=2.0.0,<3.0.0" [package.extras] -coincurve = ["coincurve (>=7.0.0,<13.0.0)"] -dev = ["asn1tools (>=0.146.2,<0.147)", "bumpversion (==0.5.3)", "eth-hash[pycryptodome]", "eth-hash[pysha3]", "eth-typing (>=2.2.1,<3.0.0)", "eth-utils (>=1.8.2,<2.0.0)", "factory-boy (>=3.0.1,<3.1)", "flake8 (==3.0.4)", "hypothesis (>=5.10.3,<6.0.0)", "mypy (==0.782)", "pyasn1 (>=0.4.5,<0.5)", "pytest (==5.4.1)", "tox (==3.20.0)", "twine"] -eth-keys = ["eth-typing (>=2.2.1,<3.0.0)", "eth-utils (>=1.8.2,<2.0.0)"] +coincurve = ["coincurve (>=7.0.0,<16.0.0)"] +dev = ["asn1tools (>=0.146.2,<0.147)", "bumpversion (==0.5.3)", "eth-hash[pycryptodome]", "eth-hash[pysha3]", "eth-typing (>=3.0.0,<4)", "eth-utils (>=2.0.0,<3.0.0)", "factory-boy (>=3.0.1,<3.1)", "flake8 (==3.0.4)", "hypothesis (>=5.10.3,<6.0.0)", "mypy (==0.782)", "pyasn1 (>=0.4.5,<0.5)", "pytest (==6.2.5)", "tox (==3.20.0)", "twine"] +eth-keys = ["eth-typing (>=3.0.0,<4)", "eth-utils (>=2.0.0,<3.0.0)"] lint = ["flake8 (==3.0.4)", "mypy (==0.782)"] -test = ["asn1tools (>=0.146.2,<0.147)", "eth-hash[pycryptodome]", "eth-hash[pysha3]", "factory-boy (>=3.0.1,<3.1)", "hypothesis (>=5.10.3,<6.0.0)", "pyasn1 (>=0.4.5,<0.5)", "pytest (==5.4.1)"] +test = ["asn1tools (>=0.146.2,<0.147)", "eth-hash[pycryptodome]", "eth-hash[pysha3]", "factory-boy (>=3.0.1,<3.1)", "hypothesis (>=5.10.3,<6.0.0)", "pyasn1 (>=0.4.5,<0.5)", "pytest (==6.2.5)"] [[package]] name = "eth-rlp" -version = "0.2.1" +version = "0.3.0" description = "eth-rlp: RLP definitions for common Ethereum objects in Python" category = "main" optional = false -python-versions = ">=3.6, <4" +python-versions = ">=3.7, <4" files = [ - {file = "eth-rlp-0.2.1.tar.gz", hash = "sha256:f016f980b0ed42ee7650ba6e4e4d3c4e9aa06d8b9c6825a36d3afe5aa0187a8b"}, - {file = "eth_rlp-0.2.1-py3-none-any.whl", hash = "sha256:cc389ef8d7b6f76a98f90bcdbff1b8684b3a78f53d47e871191b50d4d6aee5a1"}, + {file = "eth-rlp-0.3.0.tar.gz", hash = "sha256:f3263b548df718855d9a8dbd754473f383c0efc82914b0b849572ce3e06e71a6"}, + {file = "eth_rlp-0.3.0-py3-none-any.whl", hash = "sha256:e88e949a533def85c69fa94224618bbbd6de00061f4cff645c44621dab11cf33"}, ] [package.dependencies] -eth-utils = ">=1.0.1,<2" +eth-utils = ">=2.0.0,<3" hexbytes = ">=0.1.0,<1" -rlp = ">=0.6.0,<3" +rlp = ">=0.6.0,<4" [package.extras] -dev = ["Sphinx (>=1.6.5,<2)", "bumpversion (>=0.5.3,<1)", "eth-hash[pycryptodome]", "flake8 (==3.7.9)", "ipython", "isort (>=4.2.15,<5)", "mypy (==0.770)", "pydocstyle (>=3.0.0,<4)", "pytest (==5.4.1)", "pytest-watch (>=4.1.0,<5)", "pytest-xdist", "sphinx-rtd-theme (>=0.1.9)", "towncrier (>=19.2.0,<20)", "tox (==3.14.6)", "twine", "wheel"] +dev = ["Sphinx (>=1.6.5,<2)", "bumpversion (>=0.5.3,<1)", "eth-hash[pycryptodome]", "flake8 (==3.7.9)", "ipython", "isort (>=4.2.15,<5)", "mypy (==0.770)", "pydocstyle (>=3.0.0,<4)", "pytest (>=6.2.5,<7)", "pytest-watch (>=4.1.0,<5)", "pytest-xdist", "sphinx-rtd-theme (>=0.1.9)", "towncrier (>=19.2.0,<20)", "tox (==3.14.6)", "twine", "wheel"] doc = ["Sphinx (>=1.6.5,<2)", "sphinx-rtd-theme (>=0.1.9)", "towncrier (>=19.2.0,<20)"] lint = ["flake8 (==3.7.9)", "isort (>=4.2.15,<5)", "mypy (==0.770)", "pydocstyle (>=3.0.0,<4)"] -test = ["eth-hash[pycryptodome]", "pytest (==5.4.1)", "pytest-xdist", "tox (==3.14.6)"] +test = ["eth-hash[pycryptodome]", "pytest (>=6.2.5,<7)", "pytest-xdist", "tox (==3.14.6)"] [[package]] name = "eth-typing" -version = "2.3.0" +version = "3.4.0" description = "eth-typing: Common type annotations for ethereum python packages" category = "main" optional = false -python-versions = ">=3.5, <4" +python-versions = ">=3.7.2, <4" files = [ - {file = "eth-typing-2.3.0.tar.gz", hash = "sha256:39cce97f401f082739b19258dfa3355101c64390914c73fe2b90012f443e0dc7"}, - {file = "eth_typing-2.3.0-py3-none-any.whl", hash = "sha256:b7fa58635c1cb0cbf538b2f5f1e66139575ea4853eac1d6000f0961a4b277422"}, + {file = "eth-typing-3.4.0.tar.gz", hash = "sha256:7f49610469811ee97ac43eaf6baa294778ce74042d41e61ecf22e5ebe385590f"}, + {file = "eth_typing-3.4.0-py3-none-any.whl", hash = "sha256:347d50713dd58ab50063b228d8271624ab2de3071bfa32d467b05f0ea31ab4c5"}, ] [package.extras] -dev = ["Sphinx (>=1.6.5,<2)", "bumpversion (>=0.5.3,<1)", "flake8 (==3.8.3)", "ipython", "isort (>=4.2.15,<5)", "mypy (==0.782)", "pydocstyle (>=3.0.0,<4)", "pytest (>=4.4,<4.5)", "pytest-watch (>=4.1.0,<5)", "pytest-xdist", "sphinx-rtd-theme (>=0.1.9)", "tox (>=2.9.1,<3)", "twine", "wheel"] -doc = ["Sphinx (>=1.6.5,<2)", "sphinx-rtd-theme (>=0.1.9)"] -lint = ["flake8 (==3.8.3)", "isort (>=4.2.15,<5)", "mypy (==0.782)", "pydocstyle (>=3.0.0,<4)"] -test = ["pytest (>=4.4,<4.5)", "pytest-xdist", "tox (>=2.9.1,<3)"] +dev = ["black (>=23)", "build (>=0.9.0)", "bumpversion (>=0.5.3)", "flake8 (==6.0.0)", "flake8-bugbear (==23.3.23)", "ipython", "isort (>=5.10.1)", "mypy (==0.971)", "pydocstyle (>=6.0.0)", "pytest (>=7.0.0)", "pytest-watch (>=4.1.0)", "pytest-xdist (>=2.4.0)", "sphinx (>=5.0.0)", "sphinx-rtd-theme (>=1.0.0)", "towncrier (>=21,<22)", "tox (>=4.0.0)", "twine", "wheel"] +doc = ["sphinx (>=5.0.0)", "sphinx-rtd-theme (>=1.0.0)", "towncrier (>=21,<22)"] +lint = ["black (>=23)", "flake8 (==6.0.0)", "flake8-bugbear (==23.3.23)", "isort (>=5.10.1)", "mypy (==0.971)", "pydocstyle (>=6.0.0)"] +test = ["pytest (>=7.0.0)", "pytest-xdist (>=2.4.0)"] [[package]] name = "eth-utils" -version = "1.10.0" +version = "2.2.1" description = "eth-utils: Common utility functions for python code that interacts with Ethereum" category = "main" optional = false -python-versions = ">=3.5,!=3.5.2,<4" +python-versions = ">=3.7,<4" files = [ - {file = "eth-utils-1.10.0.tar.gz", hash = "sha256:bf82762a46978714190b0370265a7148c954d3f0adaa31c6f085ea375e4c61af"}, - {file = "eth_utils-1.10.0-py3-none-any.whl", hash = "sha256:74240a8c6f652d085ed3c85f5f1654203d2f10ff9062f83b3bad0a12ff321c7a"}, + {file = "eth-utils-2.2.1.tar.gz", hash = "sha256:f79a95f86dd991344697c763db40271dbe43fbbcd5776f49b0c4fb7b645ee1c4"}, + {file = "eth_utils-2.2.1-py3-none-any.whl", hash = "sha256:60fc999c1b4ae011ab600b01a3eb5375156f3bc46e7cd1a83ca9e6e14bb9b13c"}, ] [package.dependencies] -cytoolz = {version = ">=0.10.1,<1.0.0", markers = "implementation_name == \"cpython\""} -eth-hash = ">=0.3.1,<0.4.0" -eth-typing = ">=2.2.1,<3.0.0" -toolz = {version = ">0.8.2,<1", markers = "implementation_name == \"pypy\""} +cytoolz = {version = ">=0.10.1", markers = "implementation_name == \"cpython\""} +eth-hash = ">=0.3.1" +eth-typing = ">=3.0.0" +toolz = {version = ">0.8.2", markers = "implementation_name == \"pypy\""} [package.extras] -dev = ["Sphinx (>=1.6.5,<2)", "black (>=18.6b4,<19)", "bumpversion (>=0.5.3,<1)", "flake8 (==3.7.9)", "hypothesis (>=4.43.0,<5.0.0)", "ipython", "isort (>=4.2.15,<5)", "mypy (==0.720)", "pydocstyle (>=5.0.0,<6)", "pytest (==5.4.1)", "pytest (>=3.4.1,<4.0.0)", "pytest-watch (>=4.1.0,<5)", "pytest-xdist", "sphinx-rtd-theme (>=0.1.9,<2)", "towncrier (>=19.2.0,<20)", "tox (==3.14.6)", "twine (>=1.13,<2)", "wheel (>=0.30.0,<1.0.0)"] -doc = ["Sphinx (>=1.6.5,<2)", "sphinx-rtd-theme (>=0.1.9,<2)", "towncrier (>=19.2.0,<20)"] -lint = ["black (>=18.6b4,<19)", "flake8 (==3.7.9)", "isort (>=4.2.15,<5)", "mypy (==0.720)", "pydocstyle (>=5.0.0,<6)", "pytest (>=3.4.1,<4.0.0)"] -test = ["hypothesis (>=4.43.0,<5.0.0)", "pytest (==5.4.1)", "pytest-xdist", "tox (==3.14.6)"] +dev = ["black (>=23)", "build (>=0.9.0)", "bumpversion (>=0.5.3)", "eth-hash[pycryptodome]", "flake8 (==3.8.3)", "hypothesis (>=4.43.0)", "ipython", "isort (>=5.11.0)", "mypy (==0.971)", "pydocstyle (>=5.0.0)", "pytest (>=7.0.0)", "pytest-watch (>=4.1.0)", "pytest-xdist (>=2.4.0)", "sphinx (>=5.0.0)", "sphinx-rtd-theme (>=1.0.0)", "towncrier (>=21,<22)", "tox (>=4.0.0)", "twine", "types-setuptools", "wheel"] +doc = ["sphinx (>=5.0.0)", "sphinx-rtd-theme (>=1.0.0)", "towncrier (>=21,<22)"] +lint = ["black (>=23)", "flake8 (==3.8.3)", "isort (>=5.11.0)", "mypy (==0.971)", "pydocstyle (>=5.0.0)", "types-setuptools"] +test = ["hypothesis (>=4.43.0)", "mypy (==0.971)", "pytest (>=7.0.0)", "pytest-xdist (>=2.4.0)", "types-setuptools"] [[package]] name = "exceptiongroup" @@ -755,21 +745,6 @@ files = [ [package.extras] test = ["pytest (>=6)"] -[[package]] -name = "flashbots" -version = "1.1.1" -description = "web3-flashbots.py" -category = "main" -optional = false -python-versions = ">=3.9,<4.0" -files = [ - {file = "flashbots-1.1.1-py3-none-any.whl", hash = "sha256:d919d633b026ffec8bd65cd53d68f54dc98d41d299a6b4d31c2e16d4e1e87b36"}, - {file = "flashbots-1.1.1.tar.gz", hash = "sha256:94e7c768d6d5072271defccba39310ff3ac69ef6845b6a6ac188e679c9488ac0"}, -] - -[package.dependencies] -web3 = ">=5.22.0,<6" - [[package]] name = "frozenlist" version = "1.4.0" @@ -883,22 +858,6 @@ files = [ {file = "iniconfig-2.0.0.tar.gz", hash = "sha256:2d91e135bf72d31a410b17c16da610a82cb55f6b0477d1a902134b24a455b8b3"}, ] -[[package]] -name = "ipfshttpclient" -version = "0.8.0a2" -description = "Python IPFS HTTP CLIENT library" -category = "main" -optional = false -python-versions = ">=3.6.2,!=3.7.0,!=3.7.1" -files = [ - {file = "ipfshttpclient-0.8.0a2-py3-none-any.whl", hash = "sha256:ce6bac0e3963c4ced74d7eb6978125362bb05bbe219088ca48f369ce14d3cc39"}, - {file = "ipfshttpclient-0.8.0a2.tar.gz", hash = "sha256:0d80e95ee60b02c7d414e79bf81a36fc3c8fbab74265475c52f70b2620812135"}, -] - -[package.dependencies] -multiaddr = ">=0.0.7" -requests = ">=2.11" - [[package]] name = "jsonschema" version = "4.18.4" @@ -1031,24 +990,6 @@ files = [ [package.extras] test = ["pytest"] -[[package]] -name = "multiaddr" -version = "0.0.9" -description = "Python implementation of jbenet's multiaddr" -category = "main" -optional = false -python-versions = ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*" -files = [ - {file = "multiaddr-0.0.9-py2.py3-none-any.whl", hash = "sha256:5c0f862cbcf19aada2a899f80ef896ddb2e85614e0c8f04dd287c06c69dac95b"}, - {file = "multiaddr-0.0.9.tar.gz", hash = "sha256:30b2695189edc3d5b90f1c303abb8f02d963a3a4edf2e7178b975eb417ab0ecf"}, -] - -[package.dependencies] -base58 = "*" -netaddr = "*" -six = "*" -varint = "*" - [[package]] name = "multidict" version = "6.0.4" @@ -1133,18 +1074,6 @@ files = [ {file = "multidict-6.0.4.tar.gz", hash = "sha256:3666906492efb76453c0e7b97f2cf459b0682e7402c0489a95484965dbc1da49"}, ] -[[package]] -name = "netaddr" -version = "0.8.0" -description = "A network address manipulation library for Python" -category = "main" -optional = false -python-versions = "*" -files = [ - {file = "netaddr-0.8.0-py2.py3-none-any.whl", hash = "sha256:9666d0232c32d2656e5e5f8d735f58fd6c7457ce52fc21c98d45f2af78f990ac"}, - {file = "netaddr-0.8.0.tar.gz", hash = "sha256:d6cc57c7a07b1d9d2e917aa8b36ae8ce61c35ba3fcd1b83ca31c5a0ee2b5a243"}, -] - [[package]] name = "numpy" version = "1.23.3" @@ -1197,17 +1126,17 @@ files = [ [[package]] name = "parsimonious" -version = "0.8.1" +version = "0.9.0" description = "(Soon to be) the fastest pure-Python PEG parser I could muster" category = "main" optional = false python-versions = "*" files = [ - {file = "parsimonious-0.8.1.tar.gz", hash = "sha256:3add338892d580e0cb3b1a39e4a1b427ff9f687858fdd61097053742391a9f6b"}, + {file = "parsimonious-0.9.0.tar.gz", hash = "sha256:b2ad1ae63a2f65bd78f5e0a8ac510a98f3607a43f1db2a8d46636a5d9e4a30c1"}, ] [package.dependencies] -six = ">=1.9.0" +regex = ">=2022.3.15" [[package]] name = "pluggy" @@ -1242,37 +1171,25 @@ twisted = ["twisted"] [[package]] name = "protobuf" -version = "3.19.5" -description = "Protocol Buffers" +version = "4.24.3" +description = "" category = "main" optional = false -python-versions = ">=3.5" +python-versions = ">=3.7" files = [ - {file = "protobuf-3.19.5-cp310-cp310-manylinux2014_aarch64.whl", hash = "sha256:f2b599a21c9a32e171ec29a2ac54e03297736c578698e11b099d031f79da114b"}, - {file = "protobuf-3.19.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f976234e20ab2785f54224bcdafa027674e23663b132fa3ca0caa291a6cfbde7"}, - {file = "protobuf-3.19.5-cp310-cp310-win32.whl", hash = "sha256:4ee2af7051d3b10c8a4fe6fd1a2c69f201fea36aeee7086cf202a692e1b99ee1"}, - {file = "protobuf-3.19.5-cp310-cp310-win_amd64.whl", hash = "sha256:dca2284378a5f2a86ffed35c6ac147d14c48b525eefcd1083e5a9ce28dfa8657"}, - {file = "protobuf-3.19.5-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:c0f80876a8ff0ae7064084ed094eb86497bd5a3812e6fc96a05318b92301674e"}, - {file = "protobuf-3.19.5-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3c4160b601220627f7e91154e572baf5e161a9c3f445a8242d536ee3d0b7b17c"}, - {file = "protobuf-3.19.5-cp36-cp36m-win32.whl", hash = "sha256:f2bde37667b18c2b5280df83bc799204394a5d2d774e4deaf9de0eb741df6833"}, - {file = "protobuf-3.19.5-cp36-cp36m-win_amd64.whl", hash = "sha256:1867f93b06a183f87696871bb8d1e99ee71dbb69d468ce1f0cc8bf3d30f982f3"}, - {file = "protobuf-3.19.5-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:a89aa0c042e61e11ade320b802d6db4ee5391d8d973e46d3a48172c1597789f8"}, - {file = "protobuf-3.19.5-cp37-cp37m-manylinux2014_aarch64.whl", hash = "sha256:f9cebda093c2f6bfed88f1c17cdade09d4d96096421b344026feee236532d4de"}, - {file = "protobuf-3.19.5-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:67efb5d20618020aa9596e17bfc37ca068c28ec0c1507d9507f73c93d46c9855"}, - {file = "protobuf-3.19.5-cp37-cp37m-win32.whl", hash = "sha256:950abd6c00e7b51f87ae8b18a0ce4d69fea217f62f171426e77de5061f6d9850"}, - {file = "protobuf-3.19.5-cp37-cp37m-win_amd64.whl", hash = "sha256:d3973a2d58aefc7d1230725c2447ce7f86a71cbc094b86a77c6ee1505ac7cdb1"}, - {file = "protobuf-3.19.5-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:9e1d74032f56ff25f417cfe84c8147047732e5059137ca42efad20cbbd25f5e0"}, - {file = "protobuf-3.19.5-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:d249519ba5ecf5dd6b18150c9b6bcde510b273714b696f3923ff8308fc11ae49"}, - {file = "protobuf-3.19.5-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9f957ef53e872d58a0afd3bf6d80d48535d28c99b40e75e6634cbc33ea42fd54"}, - {file = "protobuf-3.19.5-cp38-cp38-win32.whl", hash = "sha256:5470f892961af464ae6eaf0f3099e2c1190ae8c7f36f174b89491281341f79ca"}, - {file = "protobuf-3.19.5-cp38-cp38-win_amd64.whl", hash = "sha256:c44e3282cff74ad18c7e8a0375f407f69ee50c2116364b44492a196293e08b21"}, - {file = "protobuf-3.19.5-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:66d14b5b90090353efe75c9fb1bf65ef7267383034688d255b500822e37d5c2f"}, - {file = "protobuf-3.19.5-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:f4f909f4dde413dec435a44b0894956d55bb928ded7d6e3c726556ca4c796e84"}, - {file = "protobuf-3.19.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5266c36cc0af3bb3dbf44f199d225b33da66a9a5c3bdc2b14865ad10eddf0e37"}, - {file = "protobuf-3.19.5-cp39-cp39-win32.whl", hash = "sha256:6a02172b9650f819d01fb8e224fc69b0706458fc1ab4f1c669281243c71c1a5e"}, - {file = "protobuf-3.19.5-cp39-cp39-win_amd64.whl", hash = "sha256:696e6cfab94cc15a14946f2bf72719dced087d437adbd994fff34f38986628bc"}, - {file = "protobuf-3.19.5-py2.py3-none-any.whl", hash = "sha256:9e42b1cf2ecd8a1bd161239e693f22035ba99905ae6d7efeac8a0546c7ec1a27"}, - {file = "protobuf-3.19.5.tar.gz", hash = "sha256:e63b0b3c42e51c94add62b010366cd4979cb6d5f06158bcae8faac4c294f91e1"}, + {file = "protobuf-4.24.3-cp310-abi3-win32.whl", hash = "sha256:20651f11b6adc70c0f29efbe8f4a94a74caf61b6200472a9aea6e19898f9fcf4"}, + {file = "protobuf-4.24.3-cp310-abi3-win_amd64.whl", hash = "sha256:3d42e9e4796a811478c783ef63dc85b5a104b44aaaca85d4864d5b886e4b05e3"}, + {file = "protobuf-4.24.3-cp37-abi3-macosx_10_9_universal2.whl", hash = "sha256:6e514e8af0045be2b56e56ae1bb14f43ce7ffa0f68b1c793670ccbe2c4fc7d2b"}, + {file = "protobuf-4.24.3-cp37-abi3-manylinux2014_aarch64.whl", hash = "sha256:ba53c2f04798a326774f0e53b9c759eaef4f6a568ea7072ec6629851c8435959"}, + {file = "protobuf-4.24.3-cp37-abi3-manylinux2014_x86_64.whl", hash = "sha256:f6ccbcf027761a2978c1406070c3788f6de4a4b2cc20800cc03d52df716ad675"}, + {file = "protobuf-4.24.3-cp37-cp37m-win32.whl", hash = "sha256:1b182c7181a2891e8f7f3a1b5242e4ec54d1f42582485a896e4de81aa17540c2"}, + {file = "protobuf-4.24.3-cp37-cp37m-win_amd64.whl", hash = "sha256:b0271a701e6782880d65a308ba42bc43874dabd1a0a0f41f72d2dac3b57f8e76"}, + {file = "protobuf-4.24.3-cp38-cp38-win32.whl", hash = "sha256:e29d79c913f17a60cf17c626f1041e5288e9885c8579832580209de8b75f2a52"}, + {file = "protobuf-4.24.3-cp38-cp38-win_amd64.whl", hash = "sha256:067f750169bc644da2e1ef18c785e85071b7c296f14ac53e0900e605da588719"}, + {file = "protobuf-4.24.3-cp39-cp39-win32.whl", hash = "sha256:2da777d34b4f4f7613cdf85c70eb9a90b1fbef9d36ae4a0ccfe014b0b07906f1"}, + {file = "protobuf-4.24.3-cp39-cp39-win_amd64.whl", hash = "sha256:f631bb982c5478e0c1c70eab383af74a84be66945ebf5dd6b06fc90079668d0b"}, + {file = "protobuf-4.24.3-py3-none-any.whl", hash = "sha256:f6f8dc65625dadaad0c8545319c2e2f0424fede988368893ca3844261342c11a"}, + {file = "protobuf-4.24.3.tar.gz", hash = "sha256:12e9ad2ec079b833176d2921be2cb24281fa591f0b119b208b788adc48c2561d"}, ] [[package]] @@ -1340,6 +1257,17 @@ tomli = {version = ">=1.0.0", markers = "python_version < \"3.11\""} [package.extras] testing = ["argcomplete", "attrs (>=19.2.0)", "hypothesis (>=3.56)", "mock", "nose", "pygments (>=2.7.2)", "requests", "setuptools", "xmlschema"] +[[package]] +name = "pyunormalize" +version = "15.0.0" +description = "Unicode normalization forms (NFC, NFKC, NFD, NFKD). A library independent from the Python core Unicode database." +category = "main" +optional = false +python-versions = ">=3.6" +files = [ + {file = "pyunormalize-15.0.0.tar.gz", hash = "sha256:e63fdba0d85ea04579dde2fc29a072dba773dcae600b04faf6cc90714c8b1302"}, +] + [[package]] name = "pywin32" version = "306" @@ -1380,6 +1308,104 @@ files = [ attrs = ">=22.2.0" rpds-py = ">=0.7.0" +[[package]] +name = "regex" +version = "2023.8.8" +description = "Alternative regular expression module, to replace re." +category = "main" +optional = false +python-versions = ">=3.6" +files = [ + {file = "regex-2023.8.8-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:88900f521c645f784260a8d346e12a1590f79e96403971241e64c3a265c8ecdb"}, + {file = "regex-2023.8.8-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:3611576aff55918af2697410ff0293d6071b7e00f4b09e005d614686ac4cd57c"}, + {file = "regex-2023.8.8-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b8a0ccc8f2698f120e9e5742f4b38dc944c38744d4bdfc427616f3a163dd9de5"}, + {file = "regex-2023.8.8-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c662a4cbdd6280ee56f841f14620787215a171c4e2d1744c9528bed8f5816c96"}, + {file = "regex-2023.8.8-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cf0633e4a1b667bfe0bb10b5e53fe0d5f34a6243ea2530eb342491f1adf4f739"}, + {file = "regex-2023.8.8-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:551ad543fa19e94943c5b2cebc54c73353ffff08228ee5f3376bd27b3d5b9800"}, + {file = "regex-2023.8.8-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:54de2619f5ea58474f2ac211ceea6b615af2d7e4306220d4f3fe690c91988a61"}, + {file = "regex-2023.8.8-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:5ec4b3f0aebbbe2fc0134ee30a791af522a92ad9f164858805a77442d7d18570"}, + {file = "regex-2023.8.8-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:3ae646c35cb9f820491760ac62c25b6d6b496757fda2d51be429e0e7b67ae0ab"}, + {file = "regex-2023.8.8-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:ca339088839582d01654e6f83a637a4b8194d0960477b9769d2ff2cfa0fa36d2"}, + {file = "regex-2023.8.8-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:d9b6627408021452dcd0d2cdf8da0534e19d93d070bfa8b6b4176f99711e7f90"}, + {file = "regex-2023.8.8-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:bd3366aceedf274f765a3a4bc95d6cd97b130d1dda524d8f25225d14123c01db"}, + {file = "regex-2023.8.8-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:7aed90a72fc3654fba9bc4b7f851571dcc368120432ad68b226bd593f3f6c0b7"}, + {file = "regex-2023.8.8-cp310-cp310-win32.whl", hash = "sha256:80b80b889cb767cc47f31d2b2f3dec2db8126fbcd0cff31b3925b4dc6609dcdb"}, + {file = "regex-2023.8.8-cp310-cp310-win_amd64.whl", hash = "sha256:b82edc98d107cbc7357da7a5a695901b47d6eb0420e587256ba3ad24b80b7d0b"}, + {file = "regex-2023.8.8-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:1e7d84d64c84ad97bf06f3c8cb5e48941f135ace28f450d86af6b6512f1c9a71"}, + {file = "regex-2023.8.8-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:ce0f9fbe7d295f9922c0424a3637b88c6c472b75eafeaff6f910494a1fa719ef"}, + {file = "regex-2023.8.8-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:06c57e14ac723b04458df5956cfb7e2d9caa6e9d353c0b4c7d5d54fcb1325c46"}, + {file = "regex-2023.8.8-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e7a9aaa5a1267125eef22cef3b63484c3241aaec6f48949b366d26c7250e0357"}, + {file = "regex-2023.8.8-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9b7408511fca48a82a119d78a77c2f5eb1b22fe88b0d2450ed0756d194fe7a9a"}, + {file = "regex-2023.8.8-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:14dc6f2d88192a67d708341f3085df6a4f5a0c7b03dec08d763ca2cd86e9f559"}, + {file = "regex-2023.8.8-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:48c640b99213643d141550326f34f0502fedb1798adb3c9eb79650b1ecb2f177"}, + {file = "regex-2023.8.8-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:0085da0f6c6393428bf0d9c08d8b1874d805bb55e17cb1dfa5ddb7cfb11140bf"}, + {file = "regex-2023.8.8-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:964b16dcc10c79a4a2be9f1273fcc2684a9eedb3906439720598029a797b46e6"}, + {file = "regex-2023.8.8-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:7ce606c14bb195b0e5108544b540e2c5faed6843367e4ab3deb5c6aa5e681208"}, + {file = "regex-2023.8.8-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:40f029d73b10fac448c73d6eb33d57b34607f40116e9f6e9f0d32e9229b147d7"}, + {file = "regex-2023.8.8-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:3b8e6ea6be6d64104d8e9afc34c151926f8182f84e7ac290a93925c0db004bfd"}, + {file = "regex-2023.8.8-cp311-cp311-win32.whl", hash = "sha256:942f8b1f3b223638b02df7df79140646c03938d488fbfb771824f3d05fc083a8"}, + {file = "regex-2023.8.8-cp311-cp311-win_amd64.whl", hash = "sha256:51d8ea2a3a1a8fe4f67de21b8b93757005213e8ac3917567872f2865185fa7fb"}, + {file = "regex-2023.8.8-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:e951d1a8e9963ea51efd7f150450803e3b95db5939f994ad3d5edac2b6f6e2b4"}, + {file = "regex-2023.8.8-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:704f63b774218207b8ccc6c47fcef5340741e5d839d11d606f70af93ee78e4d4"}, + {file = "regex-2023.8.8-cp36-cp36m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:22283c769a7b01c8ac355d5be0715bf6929b6267619505e289f792b01304d898"}, + {file = "regex-2023.8.8-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:91129ff1bb0619bc1f4ad19485718cc623a2dc433dff95baadbf89405c7f6b57"}, + {file = "regex-2023.8.8-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:de35342190deb7b866ad6ba5cbcccb2d22c0487ee0cbb251efef0843d705f0d4"}, + {file = "regex-2023.8.8-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b993b6f524d1e274a5062488a43e3f9f8764ee9745ccd8e8193df743dbe5ee61"}, + {file = "regex-2023.8.8-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:3026cbcf11d79095a32d9a13bbc572a458727bd5b1ca332df4a79faecd45281c"}, + {file = "regex-2023.8.8-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:293352710172239bf579c90a9864d0df57340b6fd21272345222fb6371bf82b3"}, + {file = "regex-2023.8.8-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:d909b5a3fff619dc7e48b6b1bedc2f30ec43033ba7af32f936c10839e81b9217"}, + {file = "regex-2023.8.8-cp36-cp36m-musllinux_1_1_ppc64le.whl", hash = "sha256:3d370ff652323c5307d9c8e4c62efd1956fb08051b0e9210212bc51168b4ff56"}, + {file = "regex-2023.8.8-cp36-cp36m-musllinux_1_1_s390x.whl", hash = "sha256:b076da1ed19dc37788f6a934c60adf97bd02c7eea461b73730513921a85d4235"}, + {file = "regex-2023.8.8-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:e9941a4ada58f6218694f382e43fdd256e97615db9da135e77359da257a7168b"}, + {file = "regex-2023.8.8-cp36-cp36m-win32.whl", hash = "sha256:a8c65c17aed7e15a0c824cdc63a6b104dfc530f6fa8cb6ac51c437af52b481c7"}, + {file = "regex-2023.8.8-cp36-cp36m-win_amd64.whl", hash = "sha256:aadf28046e77a72f30dcc1ab185639e8de7f4104b8cb5c6dfa5d8ed860e57236"}, + {file = "regex-2023.8.8-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:423adfa872b4908843ac3e7a30f957f5d5282944b81ca0a3b8a7ccbbfaa06103"}, + {file = "regex-2023.8.8-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4ae594c66f4a7e1ea67232a0846649a7c94c188d6c071ac0210c3e86a5f92109"}, + {file = "regex-2023.8.8-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e51c80c168074faa793685656c38eb7a06cbad7774c8cbc3ea05552d615393d8"}, + {file = "regex-2023.8.8-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:09b7f4c66aa9d1522b06e31a54f15581c37286237208df1345108fcf4e050c18"}, + {file = "regex-2023.8.8-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2e73e5243af12d9cd6a9d6a45a43570dbe2e5b1cdfc862f5ae2b031e44dd95a8"}, + {file = "regex-2023.8.8-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:941460db8fe3bd613db52f05259c9336f5a47ccae7d7def44cc277184030a116"}, + {file = "regex-2023.8.8-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:f0ccf3e01afeb412a1a9993049cb160d0352dba635bbca7762b2dc722aa5742a"}, + {file = "regex-2023.8.8-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:2e9216e0d2cdce7dbc9be48cb3eacb962740a09b011a116fd7af8c832ab116ca"}, + {file = "regex-2023.8.8-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:5cd9cd7170459b9223c5e592ac036e0704bee765706445c353d96f2890e816c8"}, + {file = "regex-2023.8.8-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:4873ef92e03a4309b3ccd8281454801b291b689f6ad45ef8c3658b6fa761d7ac"}, + {file = "regex-2023.8.8-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:239c3c2a339d3b3ddd51c2daef10874410917cd2b998f043c13e2084cb191684"}, + {file = "regex-2023.8.8-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:1005c60ed7037be0d9dea1f9c53cc42f836188227366370867222bda4c3c6bd7"}, + {file = "regex-2023.8.8-cp37-cp37m-win32.whl", hash = "sha256:e6bd1e9b95bc5614a7a9c9c44fde9539cba1c823b43a9f7bc11266446dd568e3"}, + {file = "regex-2023.8.8-cp37-cp37m-win_amd64.whl", hash = "sha256:9a96edd79661e93327cfeac4edec72a4046e14550a1d22aa0dd2e3ca52aec921"}, + {file = "regex-2023.8.8-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:f2181c20ef18747d5f4a7ea513e09ea03bdd50884a11ce46066bb90fe4213675"}, + {file = "regex-2023.8.8-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:a2ad5add903eb7cdde2b7c64aaca405f3957ab34f16594d2b78d53b8b1a6a7d6"}, + {file = "regex-2023.8.8-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9233ac249b354c54146e392e8a451e465dd2d967fc773690811d3a8c240ac601"}, + {file = "regex-2023.8.8-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:920974009fb37b20d32afcdf0227a2e707eb83fe418713f7a8b7de038b870d0b"}, + {file = "regex-2023.8.8-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cd2b6c5dfe0929b6c23dde9624483380b170b6e34ed79054ad131b20203a1a63"}, + {file = "regex-2023.8.8-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:96979d753b1dc3b2169003e1854dc67bfc86edf93c01e84757927f810b8c3c93"}, + {file = "regex-2023.8.8-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2ae54a338191e1356253e7883d9d19f8679b6143703086245fb14d1f20196be9"}, + {file = "regex-2023.8.8-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:2162ae2eb8b079622176a81b65d486ba50b888271302190870b8cc488587d280"}, + {file = "regex-2023.8.8-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:c884d1a59e69e03b93cf0dfee8794c63d7de0ee8f7ffb76e5f75be8131b6400a"}, + {file = "regex-2023.8.8-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:cf9273e96f3ee2ac89ffcb17627a78f78e7516b08f94dc435844ae72576a276e"}, + {file = "regex-2023.8.8-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:83215147121e15d5f3a45d99abeed9cf1fe16869d5c233b08c56cdf75f43a504"}, + {file = "regex-2023.8.8-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:3f7454aa427b8ab9101f3787eb178057c5250478e39b99540cfc2b889c7d0586"}, + {file = "regex-2023.8.8-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:f0640913d2c1044d97e30d7c41728195fc37e54d190c5385eacb52115127b882"}, + {file = "regex-2023.8.8-cp38-cp38-win32.whl", hash = "sha256:0c59122ceccb905a941fb23b087b8eafc5290bf983ebcb14d2301febcbe199c7"}, + {file = "regex-2023.8.8-cp38-cp38-win_amd64.whl", hash = "sha256:c12f6f67495ea05c3d542d119d270007090bad5b843f642d418eb601ec0fa7be"}, + {file = "regex-2023.8.8-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:82cd0a69cd28f6cc3789cc6adeb1027f79526b1ab50b1f6062bbc3a0ccb2dbc3"}, + {file = "regex-2023.8.8-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:bb34d1605f96a245fc39790a117ac1bac8de84ab7691637b26ab2c5efb8f228c"}, + {file = "regex-2023.8.8-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:987b9ac04d0b38ef4f89fbc035e84a7efad9cdd5f1e29024f9289182c8d99e09"}, + {file = "regex-2023.8.8-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9dd6082f4e2aec9b6a0927202c85bc1b09dcab113f97265127c1dc20e2e32495"}, + {file = "regex-2023.8.8-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7eb95fe8222932c10d4436e7a6f7c99991e3fdd9f36c949eff16a69246dee2dc"}, + {file = "regex-2023.8.8-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7098c524ba9f20717a56a8d551d2ed491ea89cbf37e540759ed3b776a4f8d6eb"}, + {file = "regex-2023.8.8-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4b694430b3f00eb02c594ff5a16db30e054c1b9589a043fe9174584c6efa8033"}, + {file = "regex-2023.8.8-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:b2aeab3895d778155054abea5238d0eb9a72e9242bd4b43f42fd911ef9a13470"}, + {file = "regex-2023.8.8-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:988631b9d78b546e284478c2ec15c8a85960e262e247b35ca5eaf7ee22f6050a"}, + {file = "regex-2023.8.8-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:67ecd894e56a0c6108ec5ab1d8fa8418ec0cff45844a855966b875d1039a2e34"}, + {file = "regex-2023.8.8-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:14898830f0a0eb67cae2bbbc787c1a7d6e34ecc06fbd39d3af5fe29a4468e2c9"}, + {file = "regex-2023.8.8-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:f2200e00b62568cfd920127782c61bc1c546062a879cdc741cfcc6976668dfcf"}, + {file = "regex-2023.8.8-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:9691a549c19c22d26a4f3b948071e93517bdf86e41b81d8c6ac8a964bb71e5a6"}, + {file = "regex-2023.8.8-cp39-cp39-win32.whl", hash = "sha256:6ab2ed84bf0137927846b37e882745a827458689eb969028af8032b1b3dac78e"}, + {file = "regex-2023.8.8-cp39-cp39-win_amd64.whl", hash = "sha256:5543c055d8ec7801901e1193a51570643d6a6ab8751b1f7dd9af71af467538bb"}, + {file = "regex-2023.8.8.tar.gz", hash = "sha256:fcbdc5f2b0f1cd0f6a56cdb46fe41d2cce1e644e3b68832f3eeebc5fb0f7712e"}, +] + [[package]] name = "requests" version = "2.31.0" @@ -1404,25 +1430,25 @@ use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"] [[package]] name = "rlp" -version = "2.0.1" +version = "3.0.0" description = "A package for Recursive Length Prefix encoding and decoding" category = "main" optional = false python-versions = "*" files = [ - {file = "rlp-2.0.1-py2.py3-none-any.whl", hash = "sha256:52a57c9f53f03c88b189283734b397314288250cc4a3c4113e9e36e2ac6bdd16"}, - {file = "rlp-2.0.1.tar.gz", hash = "sha256:665e8312750b3fc5f7002e656d05b9dcb6e93b6063df40d95c49ad90c19d1f0e"}, + {file = "rlp-3.0.0-py2.py3-none-any.whl", hash = "sha256:d2a963225b3f26795c5b52310e0871df9824af56823d739511583ef459895a7d"}, + {file = "rlp-3.0.0.tar.gz", hash = "sha256:63b0465d2948cd9f01de449d7adfb92d207c1aef3982f20310f8009be4a507e8"}, ] [package.dependencies] -eth-utils = ">=1.0.2,<2" +eth-utils = ">=2.0.0,<3" [package.extras] -dev = ["Sphinx (>=1.6.5,<2)", "bumpversion (>=0.5.3,<1)", "flake8 (==3.4.1)", "hypothesis (==5.19.0)", "ipython", "pytest (==5.4.3)", "pytest-watch (>=4.1.0,<5)", "pytest-xdist", "setuptools (>=36.2.0)", "sphinx-rtd-theme (>=0.1.9)", "tox (>=2.9.1,<3)", "twine", "wheel"] +dev = ["Sphinx (>=1.6.5,<2)", "bumpversion (>=0.5.3,<1)", "flake8 (==3.4.1)", "hypothesis (==5.19.0)", "ipython", "pytest (>=6.2.5,<7)", "pytest-watch (>=4.1.0,<5)", "pytest-xdist", "setuptools (>=36.2.0)", "sphinx-rtd-theme (>=0.1.9)", "tox (>=2.9.1,<3)", "twine", "wheel"] doc = ["Sphinx (>=1.6.5,<2)", "sphinx-rtd-theme (>=0.1.9)"] lint = ["flake8 (==3.4.1)"] -rust-backend = ["rusty-rlp (>=0.1.15,<0.2)"] -test = ["hypothesis (==5.19.0)", "pytest (==5.4.3)", "tox (>=2.9.1,<3)"] +rust-backend = ["rusty-rlp (>=0.2.1,<0.3)"] +test = ["hypothesis (==5.19.0)", "pytest (>=6.2.5,<7)", "tox (>=2.9.1,<3)"] [[package]] name = "rpds-py" @@ -1546,18 +1572,6 @@ files = [ [package.dependencies] contextlib2 = ">=0.5.5" -[[package]] -name = "six" -version = "1.16.0" -description = "Python 2 and 3 compatibility utilities" -category = "main" -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 = "tomli" version = "2.0.1" @@ -1582,6 +1596,18 @@ files = [ {file = "toolz-0.12.0.tar.gz", hash = "sha256:88c570861c440ee3f2f6037c4654613228ff40c93a6c25e0eba70d17282c6194"}, ] +[[package]] +name = "typing-extensions" +version = "4.8.0" +description = "Backported and Experimental Type Hints for Python 3.8+" +category = "main" +optional = false +python-versions = ">=3.8" +files = [ + {file = "typing_extensions-4.8.0-py3-none-any.whl", hash = "sha256:8f92fc8806f9a6b641eaa5318da32b44d401efaac0f6678c9bc448ba3605faa0"}, + {file = "typing_extensions-4.8.0.tar.gz", hash = "sha256:df8e4339e9cb77357558cbdbceca33c303714cf861d1eef15e1070055ae8b7ef"}, +] + [[package]] name = "urllib3" version = "2.0.4" @@ -1600,51 +1626,41 @@ secure = ["certifi", "cryptography (>=1.9)", "idna (>=2.0.0)", "pyopenssl (>=17. socks = ["pysocks (>=1.5.6,!=1.5.7,<2.0)"] zstd = ["zstandard (>=0.18.0)"] -[[package]] -name = "varint" -version = "1.0.2" -description = "Simple python varint implementation" -category = "main" -optional = false -python-versions = "*" -files = [ - {file = "varint-1.0.2.tar.gz", hash = "sha256:a6ecc02377ac5ee9d65a6a8ad45c9ff1dac8ccee19400a5950fb51d594214ca5"}, -] - [[package]] name = "web3" -version = "5.31.4" -description = "Web3.py" +version = "6.10.0" +description = "web3.py" category = "main" optional = false -python-versions = ">=3.6,<4" +python-versions = ">=3.7.2" files = [ - {file = "web3-5.31.4-py3-none-any.whl", hash = "sha256:75d4a2325b1e0fa69baccb4e9b5c5d701ca0bf85411d549e193db82b61e91e3d"}, - {file = "web3-5.31.4.tar.gz", hash = "sha256:f763d339dd63f922920c8a53cb46e8ee47d9ea7efaba9b8cf006956661d874d0"}, + {file = "web3-6.10.0-py3-none-any.whl", hash = "sha256:070625a0da4f0fcac090fa95186e0b865a1bbc43efb78fd2ee805f7bf9cd8986"}, + {file = "web3-6.10.0.tar.gz", hash = "sha256:ea89f8a6ee74b74c3ff21954eafe00ec914365adb904c6c374f559bc46d4a61c"}, ] [package.dependencies] -aiohttp = ">=3.7.4.post0,<4" -eth-abi = ">=2.2.0,<3.0.0" -eth-account = ">=0.5.9,<0.6.0" -eth-hash = {version = ">=0.2.0,<1.0.0", extras = ["pycryptodome"]} -eth-rlp = "<0.3" -eth-typing = ">=2.0.0,<3.0.0" -eth-utils = ">=1.9.5,<2.0.0" -hexbytes = ">=0.1.0,<1.0.0" -ipfshttpclient = "0.8.0a2" -jsonschema = ">=3.2.0,<5" -lru-dict = ">=1.1.6,<2.0.0" -protobuf = "3.19.5" +aiohttp = ">=3.7.4.post0" +eth-abi = ">=4.0.0" +eth-account = ">=0.8.0" +eth-hash = {version = ">=0.5.1", extras = ["pycryptodome"]} +eth-typing = ">=3.0.0" +eth-utils = ">=2.1.0" +hexbytes = ">=0.1.0" +jsonschema = ">=4.0.0" +lru-dict = ">=1.1.6" +protobuf = ">=4.21.6" +pyunormalize = ">=15.0.0" pywin32 = {version = ">=223", markers = "platform_system == \"Windows\""} -requests = ">=2.16.0,<3.0.0" -websockets = ">=9.1,<10" +requests = ">=2.16.0" +typing-extensions = ">=4.0.1" +websockets = ">=10.0.0" [package.extras] -dev = ["Jinja2 (<=3.0.3)", "bumpversion", "click (>=5.1)", "configparser (==3.5.0)", "contextlib2 (>=0.5.4)", "eth-tester[py-evm] (==v0.6.0-b.7)", "flake8 (==3.8.3)", "flaky (>=3.7.0,<4)", "hypothesis (>=3.31.2,<6)", "importlib-metadata (<5.0)", "isort (>=4.2.15,<4.3.5)", "mock", "mypy (==0.910)", "pluggy (==0.13.1)", "py-geth (>=3.9.1,<4)", "py-solc (>=0.4.0)", "pytest (>=4.4.0,<5.0.0)", "pytest-asyncio (>=0.10.0,<0.11)", "pytest-mock (>=1.10,<2)", "pytest-pythonpath (>=0.3)", "pytest-watch (>=4.2,<5)", "pytest-xdist (>=1.29,<2)", "setuptools (>=38.6.0)", "sphinx (>=3.0,<4)", "sphinx-better-theme (>=0.1.4)", "sphinx-rtd-theme (>=0.1.9)", "toposort (>=1.4)", "towncrier (==18.5.0)", "tox (>=3.18.0)", "tqdm (>4.32,<5)", "twine (>=1.13,<2)", "types-protobuf (==3.19.13)", "types-requests (>=2.26.1,<3)", "types-setuptools (>=57.4.4,<58)", "urllib3", "wheel", "when-changed (>=0.3.0,<0.4)"] -docs = ["Jinja2 (<=3.0.3)", "click (>=5.1)", "configparser (==3.5.0)", "contextlib2 (>=0.5.4)", "mock", "py-geth (>=3.9.1,<4)", "py-solc (>=0.4.0)", "pytest (>=4.4.0,<5.0.0)", "sphinx (>=3.0,<4)", "sphinx-better-theme (>=0.1.4)", "sphinx-rtd-theme (>=0.1.9)", "toposort (>=1.4)", "towncrier (==18.5.0)", "urllib3", "wheel"] -linter = ["flake8 (==3.8.3)", "isort (>=4.2.15,<4.3.5)", "mypy (==0.910)", "types-protobuf (==3.19.13)", "types-requests (>=2.26.1,<3)", "types-setuptools (>=57.4.4,<58)"] -tester = ["eth-tester[py-evm] (==v0.6.0-b.7)", "py-geth (>=3.9.1,<4)"] +dev = ["black (>=22.1.0)", "build (>=0.9.0)", "bumpversion", "eth-tester[py-evm] (==v0.9.1-b.1)", "flake8 (==3.8.3)", "flaky (>=3.7.0)", "hypothesis (>=3.31.2)", "importlib-metadata (<5.0)", "ipfshttpclient (==0.8.0a2)", "isort (>=5.11.0)", "mypy (>=1.0.0)", "py-geth (>=3.11.0)", "pytest (>=7.0.0)", "pytest-asyncio (>=0.18.1)", "pytest-mock (>=1.10)", "pytest-watch (>=4.2)", "pytest-xdist (>=1.29)", "setuptools (>=38.6.0)", "sphinx (>=5.3.0)", "sphinx-rtd-theme (>=1.0.0)", "towncrier (>=21,<22)", "tox (>=3.18.0)", "tqdm (>4.32)", "twine (>=1.13)", "types-protobuf (==3.19.13)", "types-requests (>=2.26.1)", "types-setuptools (>=57.4.4)", "when-changed (>=0.3.0)"] +docs = ["sphinx (>=5.3.0)", "sphinx-rtd-theme (>=1.0.0)", "towncrier (>=21,<22)"] +ipfs = ["ipfshttpclient (==0.8.0a2)"] +linter = ["black (>=22.1.0)", "flake8 (==3.8.3)", "isort (>=5.11.0)", "mypy (>=1.0.0)", "types-protobuf (==3.19.13)", "types-requests (>=2.26.1)", "types-setuptools (>=57.4.4)"] +tester = ["eth-tester[py-evm] (==v0.9.1-b.1)", "py-geth (>=3.11.0)"] [[package]] name = "web3-multi-provider" @@ -1680,45 +1696,82 @@ test = ["websockets"] [[package]] name = "websockets" -version = "9.1" +version = "11.0.3" description = "An implementation of the WebSocket Protocol (RFC 6455 & 7692)" category = "main" optional = false -python-versions = ">=3.6.1" +python-versions = ">=3.7" files = [ - {file = "websockets-9.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:d144b350045c53c8ff09aa1cfa955012dd32f00c7e0862c199edcabb1a8b32da"}, - {file = "websockets-9.1-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:b4ad84b156cf50529b8ac5cc1638c2cf8680490e3fccb6121316c8c02620a2e4"}, - {file = "websockets-9.1-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:2cf04601633a4ec176b9cc3d3e73789c037641001dbfaf7c411f89cd3e04fcaf"}, - {file = "websockets-9.1-cp36-cp36m-manylinux2010_i686.whl", hash = "sha256:5c8f0d82ea2468282e08b0cf5307f3ad022290ed50c45d5cb7767957ca782880"}, - {file = "websockets-9.1-cp36-cp36m-manylinux2010_x86_64.whl", hash = "sha256:caa68c95bc1776d3521f81eeb4d5b9438be92514ec2a79fececda814099c8314"}, - {file = "websockets-9.1-cp36-cp36m-manylinux2014_aarch64.whl", hash = "sha256:d2c2d9b24d3c65b5a02cac12cbb4e4194e590314519ed49db2f67ef561c3cf58"}, - {file = "websockets-9.1-cp36-cp36m-win32.whl", hash = "sha256:f31722f1c033c198aa4a39a01905951c00bd1c74f922e8afc1b1c62adbcdd56a"}, - {file = "websockets-9.1-cp36-cp36m-win_amd64.whl", hash = "sha256:3ddff38894c7857c476feb3538dd847514379d6dc844961dc99f04b0384b1b1b"}, - {file = "websockets-9.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:51d04df04ed9d08077d10ccbe21e6805791b78eac49d16d30a1f1fe2e44ba0af"}, - {file = "websockets-9.1-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:f68c352a68e5fdf1e97288d5cec9296664c590c25932a8476224124aaf90dbcd"}, - {file = "websockets-9.1-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:b43b13e5622c5a53ab12f3272e6f42f1ce37cd5b6684b2676cb365403295cd40"}, - {file = "websockets-9.1-cp37-cp37m-manylinux2010_i686.whl", hash = "sha256:9147868bb0cc01e6846606cd65cbf9c58598f187b96d14dd1ca17338b08793bb"}, - {file = "websockets-9.1-cp37-cp37m-manylinux2010_x86_64.whl", hash = "sha256:836d14eb53b500fd92bd5db2fc5894f7c72b634f9c2a28f546f75967503d8e25"}, - {file = "websockets-9.1-cp37-cp37m-manylinux2014_aarch64.whl", hash = "sha256:48c222feb3ced18f3dc61168ca18952a22fb88e5eb8902d2bf1b50faefdc34a2"}, - {file = "websockets-9.1-cp37-cp37m-win32.whl", hash = "sha256:900589e19200be76dd7cbaa95e9771605b5ce3f62512d039fb3bc5da9014912a"}, - {file = "websockets-9.1-cp37-cp37m-win_amd64.whl", hash = "sha256:ab5ee15d3462198c794c49ccd31773d8a2b8c17d622aa184f669d2b98c2f0857"}, - {file = "websockets-9.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:85e701a6c316b7067f1e8675c638036a796fe5116783a4c932e7eb8e305a3ffe"}, - {file = "websockets-9.1-cp38-cp38-manylinux1_i686.whl", hash = "sha256:b2e71c4670ebe1067fa8632f0d081e47254ee2d3d409de54168b43b0ba9147e0"}, - {file = "websockets-9.1-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:230a3506df6b5f446fed2398e58dcaafdff12d67fe1397dff196411a9e820d02"}, - {file = "websockets-9.1-cp38-cp38-manylinux2010_i686.whl", hash = "sha256:7df3596838b2a0c07c6f6d67752c53859a54993d4f062689fdf547cb56d0f84f"}, - {file = "websockets-9.1-cp38-cp38-manylinux2010_x86_64.whl", hash = "sha256:826ccf85d4514609219725ba4a7abd569228c2c9f1968e8be05be366f68291ec"}, - {file = "websockets-9.1-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:0dd4eb8e0bbf365d6f652711ce21b8fd2b596f873d32aabb0fbb53ec604418cc"}, - {file = "websockets-9.1-cp38-cp38-win32.whl", hash = "sha256:1d0971cc7251aeff955aa742ec541ee8aaea4bb2ebf0245748fbec62f744a37e"}, - {file = "websockets-9.1-cp38-cp38-win_amd64.whl", hash = "sha256:7189e51955f9268b2bdd6cc537e0faa06f8fffda7fb386e5922c6391de51b077"}, - {file = "websockets-9.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:e9e5fd6dbdf95d99bc03732ded1fc8ef22ebbc05999ac7e0c7bf57fe6e4e5ae2"}, - {file = "websockets-9.1-cp39-cp39-manylinux1_i686.whl", hash = "sha256:9e7fdc775fe7403dbd8bc883ba59576a6232eac96dacb56512daacf7af5d618d"}, - {file = "websockets-9.1-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:597c28f3aa7a09e8c070a86b03107094ee5cdafcc0d55f2f2eac92faac8dc67d"}, - {file = "websockets-9.1-cp39-cp39-manylinux2010_i686.whl", hash = "sha256:ad893d889bc700a5835e0a95a3e4f2c39e91577ab232a3dc03c262a0f8fc4b5c"}, - {file = "websockets-9.1-cp39-cp39-manylinux2010_x86_64.whl", hash = "sha256:1d6b4fddb12ab9adf87b843cd4316c4bd602db8d5efd2fb83147f0458fe85135"}, - {file = "websockets-9.1-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:ebf459a1c069f9866d8569439c06193c586e72c9330db1390af7c6a0a32c4afd"}, - {file = "websockets-9.1-cp39-cp39-win32.whl", hash = "sha256:be5fd35e99970518547edc906efab29afd392319f020c3c58b0e1a158e16ed20"}, - {file = "websockets-9.1-cp39-cp39-win_amd64.whl", hash = "sha256:85db8090ba94e22d964498a47fdd933b8875a1add6ebc514c7ac8703eb97bbf0"}, - {file = "websockets-9.1.tar.gz", hash = "sha256:276d2339ebf0df4f45df453923ebd2270b87900eda5dfd4a6b0cfa15f82111c3"}, + {file = "websockets-11.0.3-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:3ccc8a0c387629aec40f2fc9fdcb4b9d5431954f934da3eaf16cdc94f67dbfac"}, + {file = "websockets-11.0.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d67ac60a307f760c6e65dad586f556dde58e683fab03323221a4e530ead6f74d"}, + {file = "websockets-11.0.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:84d27a4832cc1a0ee07cdcf2b0629a8a72db73f4cf6de6f0904f6661227f256f"}, + {file = "websockets-11.0.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ffd7dcaf744f25f82190856bc26ed81721508fc5cbf2a330751e135ff1283564"}, + {file = "websockets-11.0.3-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7622a89d696fc87af8e8d280d9b421db5133ef5b29d3f7a1ce9f1a7bf7fcfa11"}, + {file = "websockets-11.0.3-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bceab846bac555aff6427d060f2fcfff71042dba6f5fca7dc4f75cac815e57ca"}, + {file = "websockets-11.0.3-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:54c6e5b3d3a8936a4ab6870d46bdd6ec500ad62bde9e44462c32d18f1e9a8e54"}, + {file = "websockets-11.0.3-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:41f696ba95cd92dc047e46b41b26dd24518384749ed0d99bea0a941ca87404c4"}, + {file = "websockets-11.0.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:86d2a77fd490ae3ff6fae1c6ceaecad063d3cc2320b44377efdde79880e11526"}, + {file = "websockets-11.0.3-cp310-cp310-win32.whl", hash = "sha256:2d903ad4419f5b472de90cd2d40384573b25da71e33519a67797de17ef849b69"}, + {file = "websockets-11.0.3-cp310-cp310-win_amd64.whl", hash = "sha256:1d2256283fa4b7f4c7d7d3e84dc2ece74d341bce57d5b9bf385df109c2a1a82f"}, + {file = "websockets-11.0.3-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:e848f46a58b9fcf3d06061d17be388caf70ea5b8cc3466251963c8345e13f7eb"}, + {file = "websockets-11.0.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:aa5003845cdd21ac0dc6c9bf661c5beddd01116f6eb9eb3c8e272353d45b3288"}, + {file = "websockets-11.0.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:b58cbf0697721120866820b89f93659abc31c1e876bf20d0b3d03cef14faf84d"}, + {file = "websockets-11.0.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:660e2d9068d2bedc0912af508f30bbeb505bbbf9774d98def45f68278cea20d3"}, + {file = "websockets-11.0.3-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c1f0524f203e3bd35149f12157438f406eff2e4fb30f71221c8a5eceb3617b6b"}, + {file = "websockets-11.0.3-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:def07915168ac8f7853812cc593c71185a16216e9e4fa886358a17ed0fd9fcf6"}, + {file = "websockets-11.0.3-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:b30c6590146e53149f04e85a6e4fcae068df4289e31e4aee1fdf56a0dead8f97"}, + {file = "websockets-11.0.3-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:619d9f06372b3a42bc29d0cd0354c9bb9fb39c2cbc1a9c5025b4538738dbffaf"}, + {file = "websockets-11.0.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:01f5567d9cf6f502d655151645d4e8b72b453413d3819d2b6f1185abc23e82dd"}, + {file = "websockets-11.0.3-cp311-cp311-win32.whl", hash = "sha256:e1459677e5d12be8bbc7584c35b992eea142911a6236a3278b9b5ce3326f282c"}, + {file = "websockets-11.0.3-cp311-cp311-win_amd64.whl", hash = "sha256:e7837cb169eca3b3ae94cc5787c4fed99eef74c0ab9506756eea335e0d6f3ed8"}, + {file = "websockets-11.0.3-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:9f59a3c656fef341a99e3d63189852be7084c0e54b75734cde571182c087b152"}, + {file = "websockets-11.0.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2529338a6ff0eb0b50c7be33dc3d0e456381157a31eefc561771ee431134a97f"}, + {file = "websockets-11.0.3-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:34fd59a4ac42dff6d4681d8843217137f6bc85ed29722f2f7222bd619d15e95b"}, + {file = "websockets-11.0.3-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:332d126167ddddec94597c2365537baf9ff62dfcc9db4266f263d455f2f031cb"}, + {file = "websockets-11.0.3-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:6505c1b31274723ccaf5f515c1824a4ad2f0d191cec942666b3d0f3aa4cb4007"}, + {file = "websockets-11.0.3-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:f467ba0050b7de85016b43f5a22b46383ef004c4f672148a8abf32bc999a87f0"}, + {file = "websockets-11.0.3-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:9d9acd80072abcc98bd2c86c3c9cd4ac2347b5a5a0cae7ed5c0ee5675f86d9af"}, + {file = "websockets-11.0.3-cp37-cp37m-win32.whl", hash = "sha256:e590228200fcfc7e9109509e4d9125eace2042fd52b595dd22bbc34bb282307f"}, + {file = "websockets-11.0.3-cp37-cp37m-win_amd64.whl", hash = "sha256:b16fff62b45eccb9c7abb18e60e7e446998093cdcb50fed33134b9b6878836de"}, + {file = "websockets-11.0.3-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:fb06eea71a00a7af0ae6aefbb932fb8a7df3cb390cc217d51a9ad7343de1b8d0"}, + {file = "websockets-11.0.3-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:8a34e13a62a59c871064dfd8ffb150867e54291e46d4a7cf11d02c94a5275bae"}, + {file = "websockets-11.0.3-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:4841ed00f1026dfbced6fca7d963c4e7043aa832648671b5138008dc5a8f6d99"}, + {file = "websockets-11.0.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1a073fc9ab1c8aff37c99f11f1641e16da517770e31a37265d2755282a5d28aa"}, + {file = "websockets-11.0.3-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:68b977f21ce443d6d378dbd5ca38621755f2063d6fdb3335bda981d552cfff86"}, + {file = "websockets-11.0.3-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e1a99a7a71631f0efe727c10edfba09ea6bee4166a6f9c19aafb6c0b5917d09c"}, + {file = "websockets-11.0.3-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:bee9fcb41db2a23bed96c6b6ead6489702c12334ea20a297aa095ce6d31370d0"}, + {file = "websockets-11.0.3-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:4b253869ea05a5a073ebfdcb5cb3b0266a57c3764cf6fe114e4cd90f4bfa5f5e"}, + {file = "websockets-11.0.3-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:1553cb82942b2a74dd9b15a018dce645d4e68674de2ca31ff13ebc2d9f283788"}, + {file = "websockets-11.0.3-cp38-cp38-win32.whl", hash = "sha256:f61bdb1df43dc9c131791fbc2355535f9024b9a04398d3bd0684fc16ab07df74"}, + {file = "websockets-11.0.3-cp38-cp38-win_amd64.whl", hash = "sha256:03aae4edc0b1c68498f41a6772d80ac7c1e33c06c6ffa2ac1c27a07653e79d6f"}, + {file = "websockets-11.0.3-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:777354ee16f02f643a4c7f2b3eff8027a33c9861edc691a2003531f5da4f6bc8"}, + {file = "websockets-11.0.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:8c82f11964f010053e13daafdc7154ce7385ecc538989a354ccc7067fd7028fd"}, + {file = "websockets-11.0.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:3580dd9c1ad0701169e4d6fc41e878ffe05e6bdcaf3c412f9d559389d0c9e016"}, + {file = "websockets-11.0.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6f1a3f10f836fab6ca6efa97bb952300b20ae56b409414ca85bff2ad241d2a61"}, + {file = "websockets-11.0.3-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:df41b9bc27c2c25b486bae7cf42fccdc52ff181c8c387bfd026624a491c2671b"}, + {file = "websockets-11.0.3-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:279e5de4671e79a9ac877427f4ac4ce93751b8823f276b681d04b2156713b9dd"}, + {file = "websockets-11.0.3-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:1fdf26fa8a6a592f8f9235285b8affa72748dc12e964a5518c6c5e8f916716f7"}, + {file = "websockets-11.0.3-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:69269f3a0b472e91125b503d3c0b3566bda26da0a3261c49f0027eb6075086d1"}, + {file = "websockets-11.0.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:97b52894d948d2f6ea480171a27122d77af14ced35f62e5c892ca2fae9344311"}, + {file = "websockets-11.0.3-cp39-cp39-win32.whl", hash = "sha256:c7f3cb904cce8e1be667c7e6fef4516b98d1a6a0635a58a57528d577ac18a128"}, + {file = "websockets-11.0.3-cp39-cp39-win_amd64.whl", hash = "sha256:c792ea4eabc0159535608fc5658a74d1a81020eb35195dd63214dcf07556f67e"}, + {file = "websockets-11.0.3-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:f2e58f2c36cc52d41f2659e4c0cbf7353e28c8c9e63e30d8c6d3494dc9fdedcf"}, + {file = "websockets-11.0.3-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:de36fe9c02995c7e6ae6efe2e205816f5f00c22fd1fbf343d4d18c3d5ceac2f5"}, + {file = "websockets-11.0.3-pp37-pypy37_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0ac56b661e60edd453585f4bd68eb6a29ae25b5184fd5ba51e97652580458998"}, + {file = "websockets-11.0.3-pp37-pypy37_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e052b8467dd07d4943936009f46ae5ce7b908ddcac3fda581656b1b19c083d9b"}, + {file = "websockets-11.0.3-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:42cc5452a54a8e46a032521d7365da775823e21bfba2895fb7b77633cce031bb"}, + {file = "websockets-11.0.3-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:e6316827e3e79b7b8e7d8e3b08f4e331af91a48e794d5d8b099928b6f0b85f20"}, + {file = "websockets-11.0.3-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8531fdcad636d82c517b26a448dcfe62f720e1922b33c81ce695d0edb91eb931"}, + {file = "websockets-11.0.3-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c114e8da9b475739dde229fd3bc6b05a6537a88a578358bc8eb29b4030fac9c9"}, + {file = "websockets-11.0.3-pp38-pypy38_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e063b1865974611313a3849d43f2c3f5368093691349cf3c7c8f8f75ad7cb280"}, + {file = "websockets-11.0.3-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:92b2065d642bf8c0a82d59e59053dd2fdde64d4ed44efe4870fa816c1232647b"}, + {file = "websockets-11.0.3-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:0ee68fe502f9031f19d495dae2c268830df2760c0524cbac5d759921ba8c8e82"}, + {file = "websockets-11.0.3-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dcacf2c7a6c3a84e720d1bb2b543c675bf6c40e460300b628bab1b1efc7c034c"}, + {file = "websockets-11.0.3-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b67c6f5e5a401fc56394f191f00f9b3811fe843ee93f4a70df3c389d1adf857d"}, + {file = "websockets-11.0.3-pp39-pypy39_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1d5023a4b6a5b183dc838808087033ec5df77580485fc533e7dab2567851b0a4"}, + {file = "websockets-11.0.3-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:ed058398f55163a79bb9f06a90ef9ccc063b204bb346c4de78efc5d15abfe602"}, + {file = "websockets-11.0.3-py3-none-any.whl", hash = "sha256:6681ba9e7f8f3b19440921e99efbb40fc89f26cd71bf539e45d8c8a25c976dc6"}, + {file = "websockets-11.0.3.tar.gz", hash = "sha256:88fc51d9a26b10fc331be344f1781224a375b78488fc343620184e95a4b27016"}, ] [[package]] @@ -1812,4 +1865,4 @@ multidict = ">=4.0" [metadata] lock-version = "2.0" python-versions = ">=3.9,<3.11" -content-hash = "671e086219dba68d38a2681b1e0b6666dee97d7fecc06530e1c7076246101756" +content-hash = "33fedd110669fb5e04398459c81aed29a2043a16217ea79df9074bcfeee92a95" diff --git a/pyproject.toml b/pyproject.toml index 139e5822..b944c467 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -15,10 +15,9 @@ numpy = "1.23.3" prometheus-client = "0.14.1" web3-multi-provider = "^0.6.0" schema = "^0.7.5" -web3 = "^5.30.0" -flashbots = "^1.0.2" websocket-client = "^1.4.1" confluent-kafka = "^2.2.0" +web3 = "^6.10.0" [tool.poetry.dev-dependencies] pytest = "^7.1.3" diff --git a/src/blockchain/web3_extentions/lido_contracts.py b/src/blockchain/web3_extentions/lido_contracts.py index 4c45471d..2ef696ac 100644 --- a/src/blockchain/web3_extentions/lido_contracts.py +++ b/src/blockchain/web3_extentions/lido_contracts.py @@ -5,7 +5,6 @@ import variables from blockchain.contracts.deposit import DepositContract - from blockchain.contracts.deposit_security_module import DepositSecurityModuleContract from blockchain.contracts.lido import LidoContract from blockchain.contracts.lido_locator import LidoLocatorContract @@ -18,27 +17,27 @@ def __init__(self, w3: Web3): self._load_contracts() def _load_contracts(self): - self.deposit_contract: DepositContract = cast(DepositContract, self.web3.eth.contract( + self.deposit_contract: DepositContract = cast(DepositContract, self.w3.eth.contract( address=variables.DEPOSIT_CONTRACT, ContractFactoryClass=DepositContract, )) - self.lido_locator: LidoLocatorContract = cast(LidoLocatorContract, self.web3.eth.contract( + self.lido_locator: LidoLocatorContract = cast(LidoLocatorContract, self.w3.eth.contract( address=variables.LIDO_LOCATOR, ContractFactoryClass=LidoLocatorContract, )) - self.lido: LidoContract = cast(LidoContract, self.web3.eth.contract( + self.lido: LidoContract = cast(LidoContract, self.w3.eth.contract( address=self.lido_locator.lido(), ContractFactoryClass=LidoContract, )) - self.deposit_security_module = cast(DepositSecurityModuleContract, self.web3.eth.contract( + self.deposit_security_module = cast(DepositSecurityModuleContract, self.w3.eth.contract( address=self.lido_locator.deposit_security_module(), ContractFactoryClass=DepositSecurityModuleContract, )) - self.staking_router = cast(StakingRouterContract, self.web3.eth.contract( + self.staking_router = cast(StakingRouterContract, self.w3.eth.contract( address=self.lido_locator.staking_router(), ContractFactoryClass=StakingRouterContract, )) diff --git a/src/blockchain/web3_extentions/transaction.py b/src/blockchain/web3_extentions/transaction.py index c0afad22..21d94fc2 100644 --- a/src/blockchain/web3_extentions/transaction.py +++ b/src/blockchain/web3_extentions/transaction.py @@ -2,7 +2,7 @@ from eth_account.datastructures import SignedTransaction from eth_typing import ChecksumAddress -from web3.contract import ContractFunction +from web3.contract import ContractCaller from web3.exceptions import ContractLogicError, TransactionNotFound, TimeExhausted from web3.module import Module from web3.types import BlockData, Wei @@ -16,7 +16,7 @@ class TransactionUtils(Module): @staticmethod - def check(transaction: ContractFunction) -> bool: + def check(transaction: ContractCaller) -> bool: try: transaction.call() except (ValueError, ContractLogicError) as error: @@ -28,7 +28,7 @@ def check(transaction: ContractFunction) -> bool: def send( self, - transaction: ContractFunction, + transaction: ContractCaller, use_flashbots: bool, timeout_in_blocks: int, ) -> bool: @@ -40,7 +40,7 @@ def send( logger.info({'msg': 'Dry mode activated. Sending transaction skipped.'}) return True - pending: BlockData = self.web3.eth.get_block('pending') + pending: BlockData = self.w3.eth.get_block('pending') priority = self._get_priority_fee( variables.GAS_PRIORITY_FEE_PERCENTILE, @@ -56,13 +56,13 @@ def send( 'gas': gas_limit, 'maxFeePerGas': pending['baseFeePerGas'] * 2 + priority, 'maxPriorityFeePerGas': priority, - "nonce": self.web3.eth.get_transaction_count(variables.ACCOUNT.address), + "nonce": self.w3.eth.get_transaction_count(variables.ACCOUNT.address), }) - signed = self.web3.eth.account.sign_transaction(transaction_dict, variables.ACCOUNT.privateKey) + signed = self.w3.eth.account.sign_transaction(transaction_dict, variables.ACCOUNT._private_key) # TODO try to deposit with other relays - if use_flashbots and getattr(self.web3, 'flashbots', None): + if use_flashbots and getattr(self.w3, 'flashbots', None): status = self.flashbots_send(signed, pending['number'], timeout_in_blocks) else: status = self.classic_send(signed, timeout_in_blocks) @@ -77,7 +77,7 @@ def send( return status @staticmethod - def _estimate_gas(transaction: ContractFunction, account_address: ChecksumAddress) -> int: + def _estimate_gas(transaction: ContractCaller, account_address: ChecksumAddress) -> int: try: gas = transaction.estimate_gas({'from': account_address}) except ContractLogicError as error: @@ -99,7 +99,7 @@ def flashbots_send( timeout_in_blocks: int, ) -> bool: for i in range(timeout_in_blocks): - result = self.web3.flashbots.send_bundle( + result = self.w3.flashbots.send_bundle( [{"signed_transaction": signed_tx.rawTransaction}], pending_block_num + i ) @@ -115,14 +115,14 @@ def flashbots_send( def classic_send(self, signed_tx: SignedTransaction, timeout_in_blocks: int) -> bool: try: - tx_hash = self.web3.eth.send_raw_transaction(signed_tx.rawTransaction) + tx_hash = self.w3.eth.send_raw_transaction(signed_tx.rawTransaction) except Exception as error: logger.error({'msg': 'Transaction reverted.', 'value': str(error)}) return False logger.info({'msg': 'Transaction sent.', 'value': tx_hash.hex()}) try: - tx_receipt = self.web3.eth.wait_for_transaction_receipt(tx_hash, (timeout_in_blocks + 1) * SLOT_TIME) + tx_receipt = self.w3.eth.wait_for_transaction_receipt(tx_hash, (timeout_in_blocks + 1) * SLOT_TIME) except TimeExhausted: return False @@ -132,7 +132,7 @@ def classic_send(self, signed_tx: SignedTransaction, timeout_in_blocks: int) -> def _get_priority_fee(self, percentile: int, min_priority_fee: Wei, max_priority_fee: Wei): return min( max( - self.web3.eth.fee_history(1, 'latest', reward_percentiles=[percentile])['reward'][0][0], + self.w3.eth.fee_history(1, 'latest', reward_percentiles=[percentile])['reward'][0][0], min_priority_fee, ), max_priority_fee, diff --git a/src/cryptography/verify_signature.py b/src/cryptography/verify_signature.py index b4f93af7..57defcd5 100644 --- a/src/cryptography/verify_signature.py +++ b/src/cryptography/verify_signature.py @@ -4,7 +4,6 @@ from eth_account import Account from web3 import Web3 - logger = logging.getLogger(__name__) @@ -30,8 +29,8 @@ def verify_message_with_signature(data: List[Any], abi: List[str], address: str, Check that message was correctly signed by provided address holder. """ try: - msg_hash = Web3.solidityKeccak(abi, data) - recovered_address = Account.recoverHash(msg_hash, vrs=vrs) + msg_hash = Web3.solidity_keccak(abi, data) + recovered_address = Account._recover_hash(msg_hash, vrs=vrs) except Exception as error: logger.warning({'msg': 'Check signature failed.', 'error': str(error)}) return False diff --git a/src/depositor.py b/src/depositor.py index 50b1d491..685ed439 100644 --- a/src/depositor.py +++ b/src/depositor.py @@ -1,4 +1,4 @@ -from flashbots import flashbot +# from flashbots import flashbot from prometheus_client import start_http_server from web3 import Web3 from web3_multi_provider import FallbackProvider diff --git a/src/variables.py b/src/variables.py index 1e8d1407..253b968a 100644 --- a/src/variables.py +++ b/src/variables.py @@ -4,7 +4,6 @@ from eth_account import Account from web3 import Web3 - logger = logging.getLogger(__name__) @@ -51,10 +50,10 @@ # Transactions settings CREATE_TRANSACTIONS = os.getenv('CREATE_TRANSACTIONS') == 'true' -MIN_PRIORITY_FEE = Web3.toWei(*os.getenv('MIN_PRIORITY_FEE', '50 mwei').split(' ')) -MAX_PRIORITY_FEE = Web3.toWei(*os.getenv('MAX_PRIORITY_FEE', '10 gwei').split(' ')) +MIN_PRIORITY_FEE = Web3.to_wei(*os.getenv('MIN_PRIORITY_FEE', '50 mwei').split(' ')) +MAX_PRIORITY_FEE = Web3.to_wei(*os.getenv('MAX_PRIORITY_FEE', '10 gwei').split(' ')) -MAX_GAS_FEE = Web3.toWei(*os.getenv('MAX_GAS_FEE', '100 gwei').split(' ')) +MAX_GAS_FEE = Web3.to_wei(*os.getenv('MAX_GAS_FEE', '100 gwei').split(' ')) CONTRACT_GAS_LIMIT = int(os.getenv('CONTRACT_GAS_LIMIT', 15 * 10**6)) # FLASHBOTS_RPC URL @@ -69,7 +68,7 @@ GAS_PRIORITY_FEE_PERCENTILE = int(os.getenv('GAS_PRIORITY_FEE_PERCENTILE', 25)) -MAX_BUFFERED_ETHERS = Web3.toWei(*os.getenv('MAX_BUFFERED_ETHERS', '5000 ether').split(' ')) +MAX_BUFFERED_ETHERS = Web3.to_wei(*os.getenv('MAX_BUFFERED_ETHERS', '5000 ether').split(' ')) # Metrics PROMETHEUS_PORT = int(os.getenv('PROMETHEUS_PORT', '9000')) diff --git a/tests/bots/test_depositor.py b/tests/bots/test_depositor.py index 7d3da621..60e38b03 100644 --- a/tests/bots/test_depositor.py +++ b/tests/bots/test_depositor.py @@ -258,16 +258,15 @@ def get_deposit_message(web3, account_address, pk, module_id): prefix = web3.lido.deposit_security_module.get_attest_message_prefix() block_number = latest.number deposit_root = '0x' + web3.lido.deposit_contract.get_deposit_root().hex() - staking_module_id = int(1) nonce = web3.lido.staking_router.get_staking_module_nonce(module_id) # | ATTEST_MESSAGE_PREFIX | blockNumber | blockHash | depositRoot | stakingModuleId | nonce | - msg_hash = web3.solidityKeccak( + msg_hash = web3.solidity_keccak( ['bytes32', 'uint256', 'bytes32', 'bytes32', 'uint256', 'uint256'], - [prefix, block_number, latest.hash.hex(), deposit_root, staking_module_id, nonce], + [prefix, block_number, latest.hash.hex(), deposit_root, module_id, nonce], ) - signed = web3.eth.account.signHash(msg_hash, private_key=pk) + signed = web3.eth.account._sign_hash(msg_hash, private_key=pk) msg = { "type": "deposit", @@ -277,10 +276,10 @@ def get_deposit_message(web3, account_address, pk, module_id): "blockHash": latest.hash.hex(), "guardianAddress": account_address, "guardianIndex": 8, - "stakingModuleId": staking_module_id, + "stakingModuleId": module_id, "signature": { - "r": signed.r.to_bytes(32, 'big').hex(), - "s": signed.s.to_bytes(32, 'big').hex(), + "r": '0x' + signed.r.to_bytes(32, 'big').hex(), + "s": '0x' + signed.s.to_bytes(32, 'big').hex(), "v": signed.v, }, } @@ -291,14 +290,11 @@ def get_deposit_message(web3, account_address, pk, module_id): @pytest.fixture def add_accounts_to_guardian(web3_lido_integration, set_integration_account): web3_lido_integration.provider.make_request('hardhat_impersonateAccount', [DSM_OWNER]) + web3_lido_integration.provider.make_request('hardhat_setBalance', [DSM_OWNER, '0x500000000000000000000000']) quorum_size = web3_lido_integration.lido.deposit_security_module.get_guardian_quorum() - try: - # If guardian removal failed - web3_lido_integration.lido.deposit_security_module.functions.addGuardian(COUNCIL_ADDRESS_1, 2).transact({'from': DSM_OWNER}) - web3_lido_integration.lido.deposit_security_module.functions.addGuardian(COUNCIL_ADDRESS_2, 2).transact({'from': DSM_OWNER}) - except: - pass + web3_lido_integration.lido.deposit_security_module.functions.addGuardian(COUNCIL_ADDRESS_1, 2).transact({'from': DSM_OWNER}) + web3_lido_integration.lido.deposit_security_module.functions.addGuardian(COUNCIL_ADDRESS_2, 2).transact({'from': DSM_OWNER}) yield web3_lido_integration @@ -307,18 +303,32 @@ def add_accounts_to_guardian(web3_lido_integration, set_integration_account): @pytest.mark.integration -def test_depositor_bot(web3_lido_integration, add_accounts_to_guardian, caplog): +def test_depositor_bot(web3_lido_integration, add_accounts_to_guardian): + variables.DEPOSIT_MODULES_WHITELIST = [1, 2] + make_deposit(web3_lido_integration, 1) + + +@pytest.mark.integration +def test_deposit_to_second_module(web3_with_dvt_module, web3_lido_integration): + variables.DEPOSIT_MODULES_WHITELIST = [1, 2] + make_deposit(web3_lido_integration, 2) + + +def make_deposit(web3_lido_integration, module_id): + web3_lido_integration.provider.make_request('hardhat_setBalance', [ + web3_lido_integration.eth.accounts[0], + '0x500000000000000000000000', + ]) + max_deposits = web3_lido_integration.lido.deposit_security_module.functions.getMaxDeposits().call() web3_lido_integration.lido.deposit_security_module.functions.setMaxDeposits(2).transact({'from': DSM_OWNER}) latest = web3_lido_integration.eth.get_block('latest') - module_id = 1 - old_module_nonce = web3_lido_integration.lido.staking_router.get_staking_module_nonce(module_id) deposit_message_1 = get_deposit_message(web3_lido_integration, COUNCIL_ADDRESS_1, COUNCIL_PK_1, module_id) - deposit_message_2 = get_deposit_message(web3_lido_integration, COUNCIL_ADDRESS_2, COUNCIL_PK_2, module_id) + deposit_message_2 = get_deposit_message(web3_lido_integration, COUNCIL_ADDRESS_1, COUNCIL_PK_1, module_id) deposit_message_3 = get_deposit_message(web3_lido_integration, COUNCIL_ADDRESS_2, COUNCIL_PK_2, module_id) db = DepositorBot(web3_lido_integration) @@ -327,14 +337,14 @@ def test_depositor_bot(web3_lido_integration, add_accounts_to_guardian, caplog): assert web3_lido_integration.lido.staking_router.get_staking_module_nonce(module_id) == old_module_nonce - web3_lido_integration.eth.send_transaction({ + web3_lido_integration.lido.lido.functions.submit(web3_lido_integration.eth.accounts[0]).transact({ "from": web3_lido_integration.eth.accounts[0], "to": web3_lido_integration.lido.lido.address, - "value": 2000 * 10**18 + "value": 50000 * 10**18 }) db.message_storage.messages = [deposit_message_1, deposit_message_2, deposit_message_3] db._get_module_strategy = Mock(return_value=Mock(return_value=True)) assert db.execute(latest) - # assert web3_lido_integration.lido.staking_router.get_staking_module_nonce(module_id) == old_module_nonce + 1 + assert web3_lido_integration.lido.staking_router.get_staking_module_nonce(module_id) == old_module_nonce + 1 web3_lido_integration.lido.deposit_security_module.functions.setMaxDeposits(max_deposits).transact({'from': DSM_OWNER}) diff --git a/tests/bots/test_pauser.py b/tests/bots/test_pauser.py index e2e57ae0..b9849b07 100644 --- a/tests/bots/test_pauser.py +++ b/tests/bots/test_pauser.py @@ -3,6 +3,7 @@ import pytest import variables +from blockchain.typings import Web3 from bots.pauser import PauserBot from tests.conftest import DSM_OWNER @@ -41,15 +42,13 @@ def pause_message(): @pytest.fixture def add_account_to_guardian(web3_lido_integration, set_integration_account): web3_lido_integration.provider.make_request('hardhat_impersonateAccount', [DSM_OWNER]) + web3_lido_integration.provider.make_request('hardhat_setBalance', [DSM_OWNER, '0x500000000000000000000000']) quorum_size = web3_lido_integration.lido.deposit_security_module.get_guardian_quorum() - try: - # If guardian removal failed - web3_lido_integration.lido.deposit_security_module.functions.addGuardian(COUNCIL_ADDRESS, quorum_size).transact( - {'from': DSM_OWNER}, - ) - except: - pass + # If guardian removal failed + web3_lido_integration.lido.deposit_security_module.functions.addGuardian(COUNCIL_ADDRESS, quorum_size).transact( + {'from': DSM_OWNER}, + ) yield COUNCIL_ADDRESS @@ -58,25 +57,24 @@ def add_account_to_guardian(web3_lido_integration, set_integration_account): ) -def get_pause_message(web3): +def get_pause_message(web3, module_id): latest = web3.eth.get_block('latest') prefix = web3.lido.deposit_security_module.get_pause_message_prefix() block_number = latest.number - staking_module_id = int(1) - msg_hash = web3.solidityKeccak(['bytes32', 'uint256', 'uint256'], [prefix, block_number, staking_module_id]) - signed = web3.eth.account.signHash(msg_hash, private_key=COUNCIL_PK) + msg_hash = web3.solidity_keccak(['bytes32', 'uint256', 'uint256'], [prefix, block_number, module_id]) + signed = web3.eth.account._sign_hash(msg_hash, private_key=COUNCIL_PK) return { "blockHash": latest.hash.hex(), "blockNumber": latest.number, "guardianAddress": variables.ACCOUNT.address, - "stakingModuleId": 1, + "stakingModuleId": module_id, "signature": { - "r": hex(signed.r), - "s": hex(signed.s), + "r": '0x' + signed.r.to_bytes(32, 'big').hex(), + "s": '0x' + signed.s.to_bytes(32, 'big').hex(), "v": signed.v, }, "type": "pause" @@ -134,23 +132,31 @@ def test_pause_message_filtered_by_module_id(pause_bot, block_data, pause_messag @pytest.mark.integration -def test_pauser_bot(web3_lido_integration, add_account_to_guardian): - latest = web3_lido_integration.eth.get_block('latest') +@pytest.mark.parametrize( + "module_id", + [1, 2], +) +def test_pauser_bot(web3_with_dvt_module, add_account_to_guardian, module_id): + pause_module(web3_with_dvt_module, module_id) + + +def pause_module(web3: Web3, module_id: int): + latest = web3.eth.get_block('latest') - pm = get_pause_message(web3_lido_integration) + pm = get_pause_message(web3, module_id) - pb = PauserBot(web3_lido_integration) + pb = PauserBot(web3) pb.execute(latest) # Check no pause - assert web3_lido_integration.lido.staking_router.is_staking_module_active(1) + assert web3.lido.staking_router.is_staking_module_active(module_id) # Add pause message pb.message_storage.messages = [pm] pb.execute(latest) # Check there is pause message and module paused - assert not web3_lido_integration.lido.staking_router.is_staking_module_active(1) + assert not web3.lido.staking_router.is_staking_module_active(module_id) assert len(pb.message_storage.messages) == 1 pb.execute(latest) @@ -158,7 +164,7 @@ def test_pauser_bot(web3_lido_integration, add_account_to_guardian): assert not pb.message_storage.messages # Cleanup - web3_lido_integration.lido.deposit_security_module.functions.unpauseDeposits(pm['stakingModuleId']).transact( + web3.lido.deposit_security_module.functions.unpauseDeposits(pm['stakingModuleId']).transact( {'from': DSM_OWNER} ) - assert web3_lido_integration.lido.staking_router.is_staking_module_active(1) + assert web3.lido.staking_router.is_staking_module_active(module_id) diff --git a/tests/conftest.py b/tests/conftest.py index 61682483..c94fbd0e 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -1,14 +1,13 @@ -import pytest from eth_account import Account from eth_typing import BlockNumber from web3.types import BlockData, Wei -from tests.fixtures.provider import * -from tests.fixtures.contracts import * - +from fixtures import * +# https://etherscan.io/address/0xC77F8768774E1c9244BEed705C4354f2113CFc09#readContract#F12 +DSM_OWNER = '0x3e40D73EB977Dc6a537aF587D48316feE66E9C8c' # https://goerli.etherscan.io/address/0xe57025E250275cA56f92d76660DEcfc490C7E79A#readContract#F12 -DSM_OWNER = '0xa5F1d7D49F581136Cf6e58B32cBE9a2039C48bA1' +# DSM_OWNER = '0xa5F1d7D49F581136Cf6e58B32cBE9a2039C48bA1' @pytest.fixture diff --git a/tests/fixtures/__init__.py b/tests/fixtures/__init__.py index e69de29b..7a15c395 100644 --- a/tests/fixtures/__init__.py +++ b/tests/fixtures/__init__.py @@ -0,0 +1,2 @@ +from .contracts import * +from .provider import * diff --git a/tests/fixtures/provider.py b/tests/fixtures/provider.py index 7b44dffd..7d3559fd 100644 --- a/tests/fixtures/provider.py +++ b/tests/fixtures/provider.py @@ -1,4 +1,5 @@ from unittest.mock import Mock +from urllib.parse import urlparse import pytest import requests @@ -22,14 +23,16 @@ def web3_lido_unit(): yield web3 +CHRONIX_URL = 'http://0.0.0.0:8080/' + + # -- Integration fixtures -- -@pytest.fixture +@pytest.fixture(scope="module") def web3_provider_integration(): - chronix_url = 'http://0.0.0.0:8080/' hardhat_path = 'v1/env/hardhat/' response = requests.put( - chronix_url + hardhat_path, + CHRONIX_URL + hardhat_path, json={ 'chainId': 1, 'fork': variables.WEB3_RPC_ENDPOINTS[0], @@ -47,10 +50,25 @@ def web3_provider_integration(): yield Web3(FallbackProvider([f'http://0.0.0.0:{port}/'])) - requests.delete(chronix_url + hardhat_path, json={'port': port}) + requests.delete(CHRONIX_URL + hardhat_path, json={'port': port}) -@pytest.fixture +@pytest.fixture(scope="module") +def web3_with_dvt_module(web3_provider_integration): + port = urlparse(web3_provider_integration.provider._hosts_uri[0]).port + + r = requests.post(CHRONIX_URL + 'v1/env/' + str(port) + '/simple-dvt/deploy/') + + assert r.status_code == 200 + + r = requests.post(CHRONIX_URL + 'v1/env/' + str(port) + '/simple-dvt/add-node-operators-with-state/') + + assert r.status_code == 200 + + yield web3_provider_integration + + +@pytest.fixture(scope="module") def web3_lido_integration(web3_provider_integration): web3_provider_integration.attach_modules({ 'lido': LidoContracts, diff --git a/yarn.lock b/yarn.lock index 80d7b108..7e9b6ea9 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2617,10 +2617,10 @@ chokidar@3.5.3, chokidar@^3.4.0: optionalDependencies: fsevents "~2.3.2" -chronix@0.0.2-beta-plugin-v10: - version "0.0.2-beta-plugin-v10" - resolved "https://registry.yarnpkg.com/chronix/-/chronix-0.0.2-beta-plugin-v10.tgz#772ff79cb3c609df8c7db98c2bcd903a03b4d164" - integrity sha512-pUXQH9C0YZJ0EdryNCW6zDfhjzxjHRXtkVfQGyLLWq6lb0F/pPJTn4LxlN8keAqPv6yBX8nX4LytswEgC8xoew== +chronix@0.0.2-beta-plugin-v12: + version "0.0.2-beta-plugin-v12" + resolved "https://registry.yarnpkg.com/chronix/-/chronix-0.0.2-beta-plugin-v12.tgz#45975ddf9c916528e1185cdef045950ba3888e0e" + integrity sha512-z5vMM9cNGqMxxWllN6GZJ+RdoX2KT5/P+PkQ8RQ+Va6N++OJ6byrPJ+WCSorRXyZ9SeAF/QiXfL7ToGcICg98A== dependencies: "@aragon/os" "^4.4.0" "@nomiclabs/hardhat-ethers" "^2.2.3" From 68c618f667e39e9552b4dcbbbebaf97efdcf3d8b Mon Sep 17 00:00:00 2001 From: F4ever <1590415904a@gmail.com> Date: Fri, 29 Sep 2023 11:42:59 +0200 Subject: [PATCH 34/42] mocks update --- poetry.lock | 524 ++++++++++++++++++------------------- tests/fixtures/provider.py | 8 +- 2 files changed, 269 insertions(+), 263 deletions(-) diff --git a/poetry.lock b/poetry.lock index d76d31bc..dfd49e05 100644 --- a/poetry.lock +++ b/poetry.lock @@ -126,14 +126,14 @@ frozenlist = ">=1.1.0" [[package]] name = "async-timeout" -version = "4.0.2" +version = "4.0.3" description = "Timeout context manager for asyncio programs" category = "main" optional = false -python-versions = ">=3.6" +python-versions = ">=3.7" files = [ - {file = "async-timeout-4.0.2.tar.gz", hash = "sha256:2163e1640ddb52b7a8c80d0a67a08587e5d245cc9c553a74a847056bc2976b15"}, - {file = "async_timeout-4.0.2-py3-none-any.whl", hash = "sha256:8ca1e4fcf50d07413d66d1a5e416e42cfdf5851c981d679a09851a6853383b3c"}, + {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]] @@ -157,114 +157,114 @@ tests-no-zope = ["cloudpickle", "hypothesis", "mypy (>=1.1.1)", "pympler", "pyte [[package]] name = "bitarray" -version = "2.8.0" +version = "2.8.1" description = "efficient arrays of booleans -- C extension" category = "main" optional = false python-versions = "*" files = [ - {file = "bitarray-2.8.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:8d59ddee615c64a8c37c5bfd48ceea5b88d8808f90234e9154e1e209981a4683"}, - {file = "bitarray-2.8.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:cd151c59b3756b05d8d616230211e0fb9ee10826b080f51f3e0bf85775027f8c"}, - {file = "bitarray-2.8.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:16b6144c30aa6661787a25e489335065e44fc4f74518e1e66e4591d669460516"}, - {file = "bitarray-2.8.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b8c607bfcb43c8230e24c18c368c9773cf37040fb14355ecbc51ad7b7b89be5a"}, - {file = "bitarray-2.8.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7cd2df3c507ee85219b38e2812174ba8236a77a729f6d9ba3f66faed8661dc3b"}, - {file = "bitarray-2.8.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:323d1b9710d1ef320c0b6c1f3d422355b8c371f4c898d0a9d9acb46586fd30d4"}, - {file = "bitarray-2.8.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9d4723b41afbd3574d3a72a383f80112aeceaeebbe6204b1e0ac8d4d7f2353b2"}, - {file = "bitarray-2.8.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:28dced57e7ee905f0a6287b6288d220d35d0c52ea925d2461b4eef5c16a40263"}, - {file = "bitarray-2.8.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:f4916b09f5dafe74133224956ce72399de1be7ca7b4726ce7bf8aac93f9b0ab6"}, - {file = "bitarray-2.8.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:524b5898248b47a1f39cd54ab739e823bb6469d4b3619e84f246b654a2239262"}, - {file = "bitarray-2.8.0-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:37fe92915561dd688ff450235ce75faa6679940c78f7e002ebc092aa71cadce9"}, - {file = "bitarray-2.8.0-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:a13d7cfdbcc5604670abb1faaa8e2082b4ce70475922f07bbee3cd999b092698"}, - {file = "bitarray-2.8.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:ba2870bc136b2e76d02a64621e5406daf97b3a333287132344d4029d91ad4197"}, - {file = "bitarray-2.8.0-cp310-cp310-win32.whl", hash = "sha256:432ff0eaf79414df582be023748d48c9b3a7d20cead494b7bc70a66cb62fb34f"}, - {file = "bitarray-2.8.0-cp310-cp310-win_amd64.whl", hash = "sha256:fb33df6bbe32d2146229e7ad885f654adc1484c7f734633e6dba2af88000b947"}, - {file = "bitarray-2.8.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:e1df5bc9768861178632dab044725ad305170161c08e9aa1d70b074287d5cbd3"}, - {file = "bitarray-2.8.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:5ff04386b9868cc5961d95c84a8389f5fc4e3a2cbea52499a907deea13f16ae4"}, - {file = "bitarray-2.8.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:cd0a807a04e69aa9e4ea3314b43beb120dad231fce55c718aa00691595df628f"}, - {file = "bitarray-2.8.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1ddb75bd9bfbdff5231f0218e7cd4fd72653dc0c7baa782c3a95ff3dac4d5556"}, - {file = "bitarray-2.8.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:599a57c5f0082311bccf7b35a3eaa4fdca7bf59179cb45958a6a418a9b8339d1"}, - {file = "bitarray-2.8.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:86a563fa4d2bfb2394ac21f71f8e8bb1d606d030b003398efe37c5323df664aa"}, - {file = "bitarray-2.8.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:561e6b5a8f4498240f34de67dc672f7a6867c6f28681574a41dc73bb4451b0cb"}, - {file = "bitarray-2.8.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8d5fc3e73f189daf8f351fefdbad77a6f4edc5ad001aca4a541615322dbe8ee9"}, - {file = "bitarray-2.8.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:84137be7d55bed08e3ef507b0bde8311290bf92fba5a9d05069b0d1910217f16"}, - {file = "bitarray-2.8.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:d6b0ce7a00a1b886e2410c20e089f3c701bc179429c681060419bbbf6ea263b7"}, - {file = "bitarray-2.8.0-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:f06680947298dca47437a79660c69db6442570dd492e8066ab3bf7166246dee1"}, - {file = "bitarray-2.8.0-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:b101a770d11b4fb0493e649cf3160d8de582e32e517ff3a7d024fad2e6ffe9e1"}, - {file = "bitarray-2.8.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:3a83eedc91f88d31e1e7e386bd7bf65eacd5064af95d5b1ccd512bef3d516a4b"}, - {file = "bitarray-2.8.0-cp311-cp311-win32.whl", hash = "sha256:1f90c59309f7208792f46d84adac58d8fdf6db3b1479b40e6386dd39a12950eb"}, - {file = "bitarray-2.8.0-cp311-cp311-win_amd64.whl", hash = "sha256:b70caaec1eece68411dfeded34466ad259e852ac4be8ee4001ee7dea4b37a5b2"}, - {file = "bitarray-2.8.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:181394e0da1817d7a72a9b6cad6a77f6cfac5aa70007e21aadfa702fcf0d89eb"}, - {file = "bitarray-2.8.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2e3636c073b501029256fda1546020b60e0af572a9a5b11f5c50c855113b1fbc"}, - {file = "bitarray-2.8.0-cp36-cp36m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:40e6047a049595147518e6fe40759e609559799402efade093a3b67cda9e7ea9"}, - {file = "bitarray-2.8.0-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:74dd172224a2e9fea2818a0d8c892b273fa6de434b953b97a2252572fcf01fb3"}, - {file = "bitarray-2.8.0-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:03425503093f28445b7e8c7df5faf2a704e32ee69c80e6dc5518ccea0b876ac9"}, - {file = "bitarray-2.8.0-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:089c707a4997b49cd3a4fb9a4239a9b0aaac59cc937dfa84c9a6862f08634d6f"}, - {file = "bitarray-2.8.0-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:1dfa4b66779ea4bba23ca655edbdd7e8c839daea160c6a1f1c1e6587fb8c79af"}, - {file = "bitarray-2.8.0-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:8a6593023d03dc71f015efba1ce9319982a49add363050a3e298904ca19b60ef"}, - {file = "bitarray-2.8.0-cp36-cp36m-musllinux_1_1_ppc64le.whl", hash = "sha256:93c5937df1bfbfb17ee17c7717b49cbe04d88fa5d9dcfc1846914318dcf0135b"}, - {file = "bitarray-2.8.0-cp36-cp36m-musllinux_1_1_s390x.whl", hash = "sha256:67af0a5f32ec1de99c6baaa2359c47adac245fda20969c169da9b03dacb48fb7"}, - {file = "bitarray-2.8.0-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:4b6650d05ebb92379465393bd279d298ff0a13fbf23bacbd1bcb20d202fccc67"}, - {file = "bitarray-2.8.0-cp36-cp36m-win32.whl", hash = "sha256:b3381e75bb34ca0f455c4a0ac3625e5d9472f79914a3fd15ee1230584eab7d00"}, - {file = "bitarray-2.8.0-cp36-cp36m-win_amd64.whl", hash = "sha256:951b39a515ed07487df02f0480617500f87b5e01cb36ec775dd30577633bec44"}, - {file = "bitarray-2.8.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:4e5c53500ee060c36303210d34df0e18636584ae1a70eb427e96fed70189896f"}, - {file = "bitarray-2.8.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1deaaebbae83cf7b6fd252c36a4f03bd820bcf209da1ca400dddbf11064e35ec"}, - {file = "bitarray-2.8.0-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:36eb9bdeee9c5988beca491741c4e2611abbea7fbbe3f4ebe35e00d509c40847"}, - {file = "bitarray-2.8.0-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:143c9ac7a7f7e155f42bbf1fa547feaf9b4b2c226a25f17ae0d0d537ce9a328d"}, - {file = "bitarray-2.8.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:06984d12925e595a26da7855a5e868ce9b19b646e4b130e69a85bfcd6ce9227b"}, - {file = "bitarray-2.8.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:aa54a847ae50050099e23ddc2bf20c7f2792706f95e997095e3551048841fc68"}, - {file = "bitarray-2.8.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:dd5dcc4c26d7ef55934fcecea7ebd765313554d86747282c716fa64954cf103d"}, - {file = "bitarray-2.8.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:706835e0e40b4707894af0ddd193eb8bbfb72835db8e4a8be7f6697ddc63c3eb"}, - {file = "bitarray-2.8.0-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:216af36c9885a229d493ebdd5aa5648aae8db15b1c79ca6c2ad11b7f9bf4062f"}, - {file = "bitarray-2.8.0-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:6f45bffd00892afa7e455990a9da0bbe0ac2bee978b4bdbb70439345f61b618a"}, - {file = "bitarray-2.8.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:e006e43ee096922cdaca797b313292a7ee29b43361da7d3d85d859455a0b6339"}, - {file = "bitarray-2.8.0-cp37-cp37m-win32.whl", hash = "sha256:f00dc03d1c909712a14edafd7edeccf77aca1590928f02f29901d767153b95ef"}, - {file = "bitarray-2.8.0-cp37-cp37m-win_amd64.whl", hash = "sha256:1fdba2209df0ca379b5276dc48c189f424ec6701158a666876265b2669db9ed7"}, - {file = "bitarray-2.8.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:741fc4eb77847b5f046559f77e0f822b3ce270774098f075bc712ef9f5c5948d"}, - {file = "bitarray-2.8.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:66cf402bc4154a074d95f4dec3260497f637112fb982c2335d3bbc174d8c0a2d"}, - {file = "bitarray-2.8.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:46fb5fbde325fd0bfcd9efd7ea3c5e2c1fd7117ad06e5cf37ca2c6dab539abc4"}, - {file = "bitarray-2.8.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3d6922dffc5e123e09907b79291951655ec0a2fde7c36a5584eb67c3b769d118"}, - {file = "bitarray-2.8.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7885e5c23bb2954d913b4e8bb1486a7d2fbf69d27438ef096178eccf1d9e1e7a"}, - {file = "bitarray-2.8.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:123d3802e7eafada61854d16c20d0df0c5f1d68da98f9e16059a23d200b5057a"}, - {file = "bitarray-2.8.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6167bf10c3f773612a65b925edb4c8e002f1b826db6d3e91839153d6030fec17"}, - {file = "bitarray-2.8.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:844e12f06e7167855c7db6838ea4ef08e44621dd4606039a4b5c0c6ca0801edf"}, - {file = "bitarray-2.8.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:117d53e1ada8d7f9b8a350bb78597488311637c036da1a6aeb7071527672fdf7"}, - {file = "bitarray-2.8.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:816510e83e61d1f44ff2f138863068451840314774bad1cc2911a1f86c93eb2f"}, - {file = "bitarray-2.8.0-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:3619bd30f163a3748325677996d4095b56ab1eb21610797f2b59f30e26ad1a7a"}, - {file = "bitarray-2.8.0-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:f89cd1a17b57810b640344a559de60039bf50de36e0d577f6f72fab7c23ee023"}, - {file = "bitarray-2.8.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:639f8ebaad5cec929dd73859d5ab850d4df746272754987720cf52fbbe2ec08e"}, - {file = "bitarray-2.8.0-cp38-cp38-win32.whl", hash = "sha256:991dfaee77ecd82d96ddd85d242836de9471940dd89e943feea26549a9170ecb"}, - {file = "bitarray-2.8.0-cp38-cp38-win_amd64.whl", hash = "sha256:45c5e6d5970ade6f98e91341b47722c3d0d68742bf62e3d47b586897c447e78a"}, - {file = "bitarray-2.8.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:62899c1102b47637757ad3448cb32caa4d4d8070986c29abe091711535644192"}, - {file = "bitarray-2.8.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:6897cd0c67c9433faca9023cb5eff25678e056764ce158998e6f30137e9a7f17"}, - {file = "bitarray-2.8.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:d0952c8417c21ea9eb2532475b2927753d6080f346f953a520e28794297d45f3"}, - {file = "bitarray-2.8.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:aa6e51062a9eba797d97390a4c1f7941e489dd807b2de01d6a190d1a69eacf0a"}, - {file = "bitarray-2.8.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8fb89f6b229ef8fa0e70d9206c57118c2f9bd98c54e3d73c4de00ab8147eed1c"}, - {file = "bitarray-2.8.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cc6b74eef97dc84acb429bb9c48363f88767f02b7d4a3e6dfd274334e0dc002e"}, - {file = "bitarray-2.8.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:00a7df14e82b0da37b47f51a1e6a053dbdccbad52627ae6ce6f2516e3ca7db13"}, - {file = "bitarray-2.8.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5557e41cd92a9f05795980d762e9eca4dee3b393b8a005cb5e091d1e5c319181"}, - {file = "bitarray-2.8.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:13dde9b590e27e9b8be9b96b1d697dbb19ca5c790b7d45a5ed310049fe9221b5"}, - {file = "bitarray-2.8.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:ebe2a6a8e714e5845fba173c05e26ca50616a7a7845c304f5c3ffccecda98c11"}, - {file = "bitarray-2.8.0-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:0cd43f0943af45a1056f5dbdd10dc07f513d80ede72cac0306a342db6bf87d1d"}, - {file = "bitarray-2.8.0-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:9a89b32c81e3e8a5f3fe9b458881ef03c1ba60829ae97999a15e86ea476489c6"}, - {file = "bitarray-2.8.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:b7bf3667e4cb9330b5dc5ae3753e833f398d12cbe14db1baf55cfd6a3ff0052d"}, - {file = "bitarray-2.8.0-cp39-cp39-win32.whl", hash = "sha256:e28b9af8ebeeb19396b7836a06fc1b375a5867cff6a558f7d35420d428a3e2ad"}, - {file = "bitarray-2.8.0-cp39-cp39-win_amd64.whl", hash = "sha256:aabceebde1a450eb363a7ad7a531ab54992520f0a7386844bac7f700d00bb2d3"}, - {file = "bitarray-2.8.0-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:90f3c63e44eb11424745453da1798ed6abcf6f467a92b75fda7b182cb1fb3e01"}, - {file = "bitarray-2.8.0-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dd7aa632610fe03272e01fd006c9db2c102340344b034c9bd63e2ed9e3f895cc"}, - {file = "bitarray-2.8.0-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:11447698f2ae9ac6417d25222ab1e6ec087c32d603a9131b2c09ce0911766002"}, - {file = "bitarray-2.8.0-pp37-pypy37_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:83f80d6f752d40d633c99c12d24d11774a6c3c3fd02dfd038a0496892fb15ed3"}, - {file = "bitarray-2.8.0-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:ee6df5243fcab8bb2bd14396556f1a28eebf94862bf14c1333ff309177ac62ba"}, - {file = "bitarray-2.8.0-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:0d19fd86aa02dbbec68ffb961a237a0bd2ecfbd92a6815fea9f20e9a3536bd92"}, - {file = "bitarray-2.8.0-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:40997802289d647952449b8bf0ee5c56f1f767e65ab33c63e8f756ba463343a7"}, - {file = "bitarray-2.8.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6bd66672c9695e75cf54d1f3f143a85e6b57078a7b86faf0de2c0c97736dfbb4"}, - {file = "bitarray-2.8.0-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ae79e0ed10cf221845e036bc7c3501e467a3bf288768941da1d8d6aaf12fec34"}, - {file = "bitarray-2.8.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:18f7a8d4ebb8c8750e9aafbcfa1b2bfa9b6291baec6d4a31186762956f88cada"}, - {file = "bitarray-2.8.0-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:eb45c7170c84c14d67978ccae74def18076a7e07cece0fc514078f4d5f8d0b71"}, - {file = "bitarray-2.8.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0d47baae8d5618cce60c20111a4ceafd6ed155e5501e0dc9fb9db55408e63e4a"}, - {file = "bitarray-2.8.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc347f9a869a9c2b224bae65f9ed12bd1f7f97c0cbdfe47e520d6a7ba5aeec52"}, - {file = "bitarray-2.8.0-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a5618e50873f8a5ba96facbf61c5f342ee3212fee4b64c21061a89cb09df4428"}, - {file = "bitarray-2.8.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:f59f189ed38ad6fc3ef77a038eae75757b2fe0e3e869085c5db7472f59eaefb3"}, - {file = "bitarray-2.8.0.tar.gz", hash = "sha256:cd69a926a3363e25e94a64408303283c59085be96d71524bdbe6bfc8da2e34e0"}, + {file = "bitarray-2.8.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:6be965028785413a6163dd55a639b898b22f67f9b6ed554081c23e94a602031e"}, + {file = "bitarray-2.8.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:29e19cb80a69f6d1a64097bfbe1766c418e1a785d901b583ef0328ea10a30399"}, + {file = "bitarray-2.8.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:a0f6d705860f59721d7282496a4d29b5fd78690e1c1473503832c983e762b01b"}, + {file = "bitarray-2.8.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6df04efdba4e1bf9d93a1735e42005f8fcf812caf40c03934d9322412d563499"}, + {file = "bitarray-2.8.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:18530ed3ddd71e9ff95440afce531efc3df7a3e0657f1c201c2c3cb41dd65869"}, + {file = "bitarray-2.8.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e4cd81ffd2d58ef68c22c825aff89f4a47bd721e2ada0a3a96793169f370ae21"}, + {file = "bitarray-2.8.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8367768ab797105eb97dfbd4577fcde281618de4d8d3b16ad62c477bb065f347"}, + {file = "bitarray-2.8.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:848af80518d0ed2aee782018588c7c88805f51b01271935df5b256c8d81c726e"}, + {file = "bitarray-2.8.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:c54b0af16be45de534af9d77e8a180126cd059f72db8b6550f62dda233868942"}, + {file = "bitarray-2.8.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:f30cdce22af3dc7c73e70af391bfd87c4574cc40c74d651919e20efc26e014b5"}, + {file = "bitarray-2.8.1-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:bc03bb358ae3917247d257207c79162e666d407ac473718d1b95316dac94162b"}, + {file = "bitarray-2.8.1-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:cf38871ed4cd89df9db7c70f729b948fa3e2848a07c69f78e4ddfbe4f23db63c"}, + {file = "bitarray-2.8.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:4a637bcd199c1366c65b98f18884f0d0b87403f04676b21e4635831660d722a7"}, + {file = "bitarray-2.8.1-cp310-cp310-win32.whl", hash = "sha256:904719fb7304d4115228b63c178f0cc725ad3b73e285c4b328e45a99a8e3fad6"}, + {file = "bitarray-2.8.1-cp310-cp310-win_amd64.whl", hash = "sha256:1e859c664500d57526fe07140889a3b58dca54ff3b16ac6dc6d534a65c933084"}, + {file = "bitarray-2.8.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:2d3f28a80f2e6bb96e9360a4baf3fbacb696b5aba06a14c18a15488d4b6f398f"}, + {file = "bitarray-2.8.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:4677477a406f2a9e064920463f69172b865e4d69117e1f2160064d3f5912b0bd"}, + {file = "bitarray-2.8.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:9061c0a50216f24c97fb2325de84200e5ad5555f25c854ddcb3ceb6f12136055"}, + {file = "bitarray-2.8.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:843af12991161b358b6379a8dc5f6636798f3dacdae182d30995b6a2df3b263e"}, + {file = "bitarray-2.8.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9336300fd0acf07ede92e424930176dc4b43ef1b298489e93ba9a1695e8ea752"}, + {file = "bitarray-2.8.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f0af01e1f61fe627f63648c0c6f52de8eac56710a2ef1dbce4851d867084cc7e"}, + {file = "bitarray-2.8.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2ab81c74a1805fe74330859b38e70d7525cdd80953461b59c06660046afaffcf"}, + {file = "bitarray-2.8.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b2015a9dd718393e814ff7b9e80c58190eb1cef7980f86a97a33e8440e158ce2"}, + {file = "bitarray-2.8.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:5b0493ab66c6b8e17e9fde74c646b39ee09c236cf28a787cb8cbd3a83c05bff7"}, + {file = "bitarray-2.8.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:81e83ed7e0b1c09c5a33b97712da89e7a21fd3e5598eff3975c39540f5619792"}, + {file = "bitarray-2.8.1-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:741c3a2c0997c8f8878edfc65a4a8f7aa72eede337c9bc0b7bd8a45cf6e70dbc"}, + {file = "bitarray-2.8.1-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:57aeab27120a8a50917845bb81b0976e33d4759f2156b01359e2b43d445f5127"}, + {file = "bitarray-2.8.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:17c32ba584e8fb9322419390e0e248769ed7d59de3ffa7432562a4c0ec4f1f82"}, + {file = "bitarray-2.8.1-cp311-cp311-win32.whl", hash = "sha256:b67733a240a96f09b7597af97ac4d60c59140cfcfd180f11a7221863b82f023a"}, + {file = "bitarray-2.8.1-cp311-cp311-win_amd64.whl", hash = "sha256:7b29d4bf3d3da1847f2be9e30105bf51caaf5922e94dc827653e250ed33f4e8a"}, + {file = "bitarray-2.8.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:5f6175c1cf07dadad3213d60075704cf2e2f1232975cfd4ac8328c24a05e8f78"}, + {file = "bitarray-2.8.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0cc066c7290151600b8872865708d2d00fb785c5db8a0df20d70d518e02f172b"}, + {file = "bitarray-2.8.1-cp36-cp36m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4ce2ef9291a193a0e0cd5e23970bf3b682cc8b95220561d05b775b8d616d665f"}, + {file = "bitarray-2.8.1-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c5582dd7d906e6f9ec1704f99d56d812f7d395d28c02262bc8b50834d51250c3"}, + {file = "bitarray-2.8.1-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2aa2267eb6d2b88ef7d139e79a6daaa84cd54d241b9797478f10dcb95a9cd620"}, + {file = "bitarray-2.8.1-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a04d4851e83730f03c4a6aac568c7d8b42f78f0f9cc8231d6db66192b030ce1e"}, + {file = "bitarray-2.8.1-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:f7d2ec2174d503cbb092f8353527842633c530b4e03b9922411640ac9c018a19"}, + {file = "bitarray-2.8.1-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:b65a04b2e029b0694b52d60786732afd15b1ec6517de61a36afbb7808a2ffac1"}, + {file = "bitarray-2.8.1-cp36-cp36m-musllinux_1_1_ppc64le.whl", hash = "sha256:55020d6fb9b72bd3606969f5431386c592ed3666133bd475af945aa0fa9e84ec"}, + {file = "bitarray-2.8.1-cp36-cp36m-musllinux_1_1_s390x.whl", hash = "sha256:797de3465f5f6c6be9a412b4e99eb6e8cdb86b83b6756655c4d83a65d0b9a376"}, + {file = "bitarray-2.8.1-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:f9a66745682e175e143a180524a63e692acb2b8c86941073f6dd4ee906e69608"}, + {file = "bitarray-2.8.1-cp36-cp36m-win32.whl", hash = "sha256:443726af4bd60515e4e41ea36c5dbadb29a59bc799bcbf431011d1c6fd4363e3"}, + {file = "bitarray-2.8.1-cp36-cp36m-win_amd64.whl", hash = "sha256:2b0f754a5791635b8239abdcc0258378111b8ee7a8eb3e2bbc24bcc48a0f0b08"}, + {file = "bitarray-2.8.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:d175e16419a52d54c0ac44c93309ba76dc2cfd33ee9d20624f1a5eb86b8e162e"}, + {file = "bitarray-2.8.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f3128234bde3629ab301a501950587e847d30031a9cbf04d95f35cbf44469a9e"}, + {file = "bitarray-2.8.1-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:75104c3076676708c1ac2484ebf5c26464fb3850312de33a5b5bf61bfa7dbec5"}, + {file = "bitarray-2.8.1-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:82bfb6ab9b1b5451a5483c9a2ae2a8f83799d7503b384b54f6ab56ea74abb305"}, + {file = "bitarray-2.8.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2dc064a63445366f6b26eaf77230d326b9463e903ba59d6ff5efde0c5ec1ea0e"}, + {file = "bitarray-2.8.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:cbe54685cf6b17b3e15faf6c4b76773bc1c484bc447020737d2550a9dde5f6e6"}, + {file = "bitarray-2.8.1-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:9fed8aba8d1b09cf641b50f1e6dd079c31677106ea4b63ec29f4c49adfabd63f"}, + {file = "bitarray-2.8.1-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:7c17dd8fb146c2c680bf1cb28b358f9e52a14076e44141c5442148863ee95d7d"}, + {file = "bitarray-2.8.1-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:c9efcee311d9ba0c619743060585af9a9b81496e97b945843d5e954c67722a75"}, + {file = "bitarray-2.8.1-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:dc7acffee09822b334d1b46cd384e969804abdf18f892c82c05c2328066cd2ae"}, + {file = "bitarray-2.8.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:ea71e0a50060f96ad0821e0ac785e91e44807f8b69555970979d81934961d5bd"}, + {file = "bitarray-2.8.1-cp37-cp37m-win32.whl", hash = "sha256:69ab51d551d50e4d6ca35abc95c9d04b33ad28418019bb5481ab09bdbc0df15c"}, + {file = "bitarray-2.8.1-cp37-cp37m-win_amd64.whl", hash = "sha256:3024ab4c4906c3681408ca17c35833237d18813ebb9f24ae9f9e3157a4a66939"}, + {file = "bitarray-2.8.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:46fdd27c8fa4186d8b290bf74a28cbd91b94127b1b6a35c265a002e394fa9324"}, + {file = "bitarray-2.8.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:d32ccd2c0d906eae103ef84015f0545a395052b0b6eb0e02e9023ca0132557f6"}, + {file = "bitarray-2.8.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:9186cf8135ca170cd907d8c4df408a87747570d192d89ec4ff23805611c702a0"}, + {file = "bitarray-2.8.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b8d6e5ff385fea25caf26fd58b43f087deb763dcaddd18d3df2895235cf1b484"}, + {file = "bitarray-2.8.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9d6a9c72354327c7aa9890ff87904cbe86830cb1fb58c39750a0afac8df5e051"}, + {file = "bitarray-2.8.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d2f13b7d0694ce2024c82fc595e6ccc3918e7f069747c3de41b1ce72a9a1e346"}, + {file = "bitarray-2.8.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2d38ceca90ed538706e3f111513073590f723f90659a7af0b992b29776a6e816"}, + {file = "bitarray-2.8.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2b977c39e3734e73540a2e3a71501c2c6261c70c6ce59d427bb7c4ecf6331c7e"}, + {file = "bitarray-2.8.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:214c05a7642040f6174e29f3e099549d3c40ac44616405081bf230dcafb38767"}, + {file = "bitarray-2.8.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:ad440c17ef2ff42e94286186b5bcf82bf87c4026f91822675239102ebe1f7035"}, + {file = "bitarray-2.8.1-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:28dee92edd0d21655e56e1870c22468d0dabe557df18aa69f6d06b1543614180"}, + {file = "bitarray-2.8.1-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:df9d8a9a46c46950f306394705512553c552b633f8bf3c11359c4204289f11e3"}, + {file = "bitarray-2.8.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:1a0d27aad02d8abcb1d3b7d85f463877c4937e71adf9b6adb9367f2cdad91a52"}, + {file = "bitarray-2.8.1-cp38-cp38-win32.whl", hash = "sha256:6033303431a7c85a535b3f1b0ec28abc2ebc2167c263f244993b56ccb87cae6b"}, + {file = "bitarray-2.8.1-cp38-cp38-win_amd64.whl", hash = "sha256:9b65d487451e0e287565c8436cf4da45260f958f911299f6122a20d7ec76525c"}, + {file = "bitarray-2.8.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:9aad7b4670f090734b272c072c9db375c63bd503512be9a9393e657dcacfc7e2"}, + {file = "bitarray-2.8.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:bf80804014e3736515b84044c2be0e70080616b4ceddd4e38d85f3167aeb8165"}, + {file = "bitarray-2.8.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:e7f7231ef349e8f4955d9b39561f4683a418a73443cfce797a4eddbee1ba9664"}, + {file = "bitarray-2.8.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:67e8fb18df51e649adbc81359e1db0f202d72708fba61b06f5ac8db47c08d107"}, + {file = "bitarray-2.8.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9d5df3d6358425c9dfb6bdbd4f576563ec4173d24693a9042d05aadcb23c0b98"}, + {file = "bitarray-2.8.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6ea51ba4204d086d5b76e84c31d2acbb355ed1b075ded54eb9b7070b0b95415d"}, + {file = "bitarray-2.8.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1414582b3b7516d2282433f0914dd9846389b051b2aea592ae7cc165806c24ac"}, + {file = "bitarray-2.8.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5934e3a623a1d485e1dcfc1990246e3c32c6fc6e7f0fd894750800d35fdb5794"}, + {file = "bitarray-2.8.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:aa08a9b03888c768b9b2383949a942804d50d8164683b39fe62f0bfbfd9b4204"}, + {file = "bitarray-2.8.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:00ff372dfaced7dd6cc2dffd052fafc118053cf81a442992b9a23367479d77d7"}, + {file = "bitarray-2.8.1-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:dd76bbf5a4b2ab84b8ffa229f5648e80038ba76bf8d7acc5de9dd06031b38117"}, + {file = "bitarray-2.8.1-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:e88a706f92ad1e0e1e66f6811d10b6155d5f18f0de9356ee899a7966a4e41992"}, + {file = "bitarray-2.8.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:b2560475c5a1ff96fcab01fae7cf6b9a6da590f02659556b7fccc7991e401884"}, + {file = "bitarray-2.8.1-cp39-cp39-win32.whl", hash = "sha256:74cd1725d08325b6669e6e9a5d09cec29e7c41f7d58e082286af5387414d046d"}, + {file = "bitarray-2.8.1-cp39-cp39-win_amd64.whl", hash = "sha256:e48c45ea7944225bcee026c457a70eaea61db3659d9603f07fc8a643ab7e633b"}, + {file = "bitarray-2.8.1-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:c2426dc7a0d92d8254def20ab7a231626397ce5b6fb3d4f44be74cc1370a60c3"}, + {file = "bitarray-2.8.1-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d34790a919f165b6f537935280ef5224957d9ce8ab11d339f5e6d0319a683ccc"}, + {file = "bitarray-2.8.1-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6c26a923080bc211cab8f5a5e242e3657b32951fec8980db0616e9239aade482"}, + {file = "bitarray-2.8.1-pp37-pypy37_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0de1bc5f971aba46de88a4eb0dbb5779e30bbd7514f4dcbff743c209e0c02667"}, + {file = "bitarray-2.8.1-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:3bb5f2954dd897b0bac13b5449e5c977534595b688120c8af054657a08b01f46"}, + {file = "bitarray-2.8.1-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:62ac31059a3c510ef64ed93d930581b262fd4592e6d95ede79fca91e8d3d3ef6"}, + {file = "bitarray-2.8.1-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ae32ac7217e83646b9f64d7090bf7b737afaa569665621f110a05d9738ca841a"}, + {file = "bitarray-2.8.1-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3994f7dc48d21af40c0d69fca57d8040b02953f4c7c3652c2341d8947e9cbedf"}, + {file = "bitarray-2.8.1-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8c361201e1c3ee6d6b2266f8b7a645389880bccab1b29e22e7a6b7b6e7831ad5"}, + {file = "bitarray-2.8.1-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:861850d6a58e7b6a7096d0b0efed9c6d993a6ab8b9d01e781df1f4d80cc00efa"}, + {file = "bitarray-2.8.1-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:ee772c20dcb56b03d666a4e4383d0b5b942b0ccc27815e42fe0737b34cba2082"}, + {file = "bitarray-2.8.1-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:63fa75e87ad8c57d5722cc87902ca148ef8bbbba12b5c5b3c3730a1bc9ac2886"}, + {file = "bitarray-2.8.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3b999fb66980f885961d197d97d7ff5a13b7ab524ccf45ccb4704f4b82ce02e3"}, + {file = "bitarray-2.8.1-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3243e4b8279ff2fe4c6e7869f0e6930c17799ee9f8d07317f68d44a66b46281e"}, + {file = "bitarray-2.8.1-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:542358b178b025dcc95e7fb83389e9954f701c41d312cbb66bdd763cbe5414b5"}, + {file = "bitarray-2.8.1.tar.gz", hash = "sha256:e68ceef35a88625d16169550768fcc8d3894913e363c24ecbf6b8c07eb02c8f3"}, ] [[package]] @@ -732,14 +732,14 @@ test = ["hypothesis (>=4.43.0)", "mypy (==0.971)", "pytest (>=7.0.0)", "pytest-x [[package]] name = "exceptiongroup" -version = "1.1.2" +version = "1.1.3" description = "Backport of PEP 654 (exception groups)" category = "dev" optional = false python-versions = ">=3.7" files = [ - {file = "exceptiongroup-1.1.2-py3-none-any.whl", hash = "sha256:e346e69d186172ca7cf029c8c1d16235aa0e04035e5750b4b95039e65204328f"}, - {file = "exceptiongroup-1.1.2.tar.gz", hash = "sha256:12c3e887d6485d16943a309616de20ae5582633e0a2eda17f4e10fd61c1e8af5"}, + {file = "exceptiongroup-1.1.3-py3-none-any.whl", hash = "sha256:343280667a4585d195ca1cf9cef84a4e178c4b6cf2274caef9859782b567d5e3"}, + {file = "exceptiongroup-1.1.3.tar.gz", hash = "sha256:097acd85d473d75af5bb98e41b61ff7fe35efe6675e4f9370ec6ec5126d160e9"}, ] [package.extras] @@ -860,14 +860,14 @@ files = [ [[package]] name = "jsonschema" -version = "4.18.4" +version = "4.19.1" description = "An implementation of JSON Schema validation for Python" category = "main" optional = false python-versions = ">=3.8" files = [ - {file = "jsonschema-4.18.4-py3-none-any.whl", hash = "sha256:971be834317c22daaa9132340a51c01b50910724082c2c1a2ac87eeec153a3fe"}, - {file = "jsonschema-4.18.4.tar.gz", hash = "sha256:fb3642735399fa958c0d2aad7057901554596c63349f4f6b283c493cf692a25d"}, + {file = "jsonschema-4.19.1-py3-none-any.whl", hash = "sha256:cd5f1f9ed9444e554b38ba003af06c0a8c2868131e56bfbef0550fb450c0330e"}, + {file = "jsonschema-4.19.1.tar.gz", hash = "sha256:ec84cc37cfa703ef7cd4928db24f9cb31428a5d0fa77747b8b51a847458e0bbf"}, ] [package.dependencies] @@ -1140,14 +1140,14 @@ regex = ">=2022.3.15" [[package]] name = "pluggy" -version = "1.2.0" +version = "1.3.0" description = "plugin and hook calling mechanisms for python" category = "dev" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "pluggy-1.2.0-py3-none-any.whl", hash = "sha256:c2fd55a7d7a3863cba1a013e4e2414658b1d07b6bc57b3919e0c63c9abb99849"}, - {file = "pluggy-1.2.0.tar.gz", hash = "sha256:d12f0c4b579b15f5e054301bb226ee85eeeba08ffec228092f8defbaa3a4c4b3"}, + {file = "pluggy-1.3.0-py3-none-any.whl", hash = "sha256:d89c696a773f8bd377d18e5ecda92b7a3793cbe66c87060a6fb58c7b6e1061f7"}, + {file = "pluggy-1.3.0.tar.gz", hash = "sha256:cf61ae8f126ac6f7c451172cf30e3e43d3ca77615509771b3a984a0730651e12"}, ] [package.extras] @@ -1194,56 +1194,56 @@ files = [ [[package]] name = "pycryptodome" -version = "3.18.0" +version = "3.19.0" description = "Cryptographic library for Python" category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" files = [ - {file = "pycryptodome-3.18.0-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:d1497a8cd4728db0e0da3c304856cb37c0c4e3d0b36fcbabcc1600f18504fc54"}, - {file = "pycryptodome-3.18.0-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:928078c530da78ff08e10eb6cada6e0dff386bf3d9fa9871b4bbc9fbc1efe024"}, - {file = "pycryptodome-3.18.0-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:157c9b5ba5e21b375f052ca78152dd309a09ed04703fd3721dce3ff8ecced148"}, - {file = "pycryptodome-3.18.0-cp27-cp27m-manylinux2014_aarch64.whl", hash = "sha256:d20082bdac9218649f6abe0b885927be25a917e29ae0502eaf2b53f1233ce0c2"}, - {file = "pycryptodome-3.18.0-cp27-cp27m-musllinux_1_1_aarch64.whl", hash = "sha256:e8ad74044e5f5d2456c11ed4cfd3e34b8d4898c0cb201c4038fe41458a82ea27"}, - {file = "pycryptodome-3.18.0-cp27-cp27m-win32.whl", hash = "sha256:62a1e8847fabb5213ccde38915563140a5b338f0d0a0d363f996b51e4a6165cf"}, - {file = "pycryptodome-3.18.0-cp27-cp27m-win_amd64.whl", hash = "sha256:16bfd98dbe472c263ed2821284118d899c76968db1a6665ade0c46805e6b29a4"}, - {file = "pycryptodome-3.18.0-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:7a3d22c8ee63de22336679e021c7f2386f7fc465477d59675caa0e5706387944"}, - {file = "pycryptodome-3.18.0-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:78d863476e6bad2a592645072cc489bb90320972115d8995bcfbee2f8b209918"}, - {file = "pycryptodome-3.18.0-cp27-cp27mu-manylinux2014_aarch64.whl", hash = "sha256:b6a610f8bfe67eab980d6236fdc73bfcdae23c9ed5548192bb2d530e8a92780e"}, - {file = "pycryptodome-3.18.0-cp27-cp27mu-musllinux_1_1_aarch64.whl", hash = "sha256:422c89fd8df8a3bee09fb8d52aaa1e996120eafa565437392b781abec2a56e14"}, - {file = "pycryptodome-3.18.0-cp35-abi3-macosx_10_9_universal2.whl", hash = "sha256:9ad6f09f670c466aac94a40798e0e8d1ef2aa04589c29faa5b9b97566611d1d1"}, - {file = "pycryptodome-3.18.0-cp35-abi3-macosx_10_9_x86_64.whl", hash = "sha256:53aee6be8b9b6da25ccd9028caf17dcdce3604f2c7862f5167777b707fbfb6cb"}, - {file = "pycryptodome-3.18.0-cp35-abi3-manylinux2014_aarch64.whl", hash = "sha256:10da29526a2a927c7d64b8f34592f461d92ae55fc97981aab5bbcde8cb465bb6"}, - {file = "pycryptodome-3.18.0-cp35-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f21efb8438971aa16924790e1c3dba3a33164eb4000106a55baaed522c261acf"}, - {file = "pycryptodome-3.18.0-cp35-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4944defabe2ace4803f99543445c27dd1edbe86d7d4edb87b256476a91e9ffa4"}, - {file = "pycryptodome-3.18.0-cp35-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:51eae079ddb9c5f10376b4131be9589a6554f6fd84f7f655180937f611cd99a2"}, - {file = "pycryptodome-3.18.0-cp35-abi3-musllinux_1_1_i686.whl", hash = "sha256:83c75952dcf4a4cebaa850fa257d7a860644c70a7cd54262c237c9f2be26f76e"}, - {file = "pycryptodome-3.18.0-cp35-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:957b221d062d5752716923d14e0926f47670e95fead9d240fa4d4862214b9b2f"}, - {file = "pycryptodome-3.18.0-cp35-abi3-win32.whl", hash = "sha256:795bd1e4258a2c689c0b1f13ce9684fa0dd4c0e08680dcf597cf9516ed6bc0f3"}, - {file = "pycryptodome-3.18.0-cp35-abi3-win_amd64.whl", hash = "sha256:b1d9701d10303eec8d0bd33fa54d44e67b8be74ab449052a8372f12a66f93fb9"}, - {file = "pycryptodome-3.18.0-pp27-pypy_73-manylinux2010_x86_64.whl", hash = "sha256:cb1be4d5af7f355e7d41d36d8eec156ef1382a88638e8032215c215b82a4b8ec"}, - {file = "pycryptodome-3.18.0-pp27-pypy_73-win32.whl", hash = "sha256:fc0a73f4db1e31d4a6d71b672a48f3af458f548059aa05e83022d5f61aac9c08"}, - {file = "pycryptodome-3.18.0-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:f022a4fd2a5263a5c483a2bb165f9cb27f2be06f2f477113783efe3fe2ad887b"}, - {file = "pycryptodome-3.18.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:363dd6f21f848301c2dcdeb3c8ae5f0dee2286a5e952a0f04954b82076f23825"}, - {file = "pycryptodome-3.18.0-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:12600268763e6fec3cefe4c2dcdf79bde08d0b6dc1813887e789e495cb9f3403"}, - {file = "pycryptodome-3.18.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:4604816adebd4faf8810782f137f8426bf45fee97d8427fa8e1e49ea78a52e2c"}, - {file = "pycryptodome-3.18.0-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:01489bbdf709d993f3058e2996f8f40fee3f0ea4d995002e5968965fa2fe89fb"}, - {file = "pycryptodome-3.18.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3811e31e1ac3069988f7a1c9ee7331b942e605dfc0f27330a9ea5997e965efb2"}, - {file = "pycryptodome-3.18.0-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6f4b967bb11baea9128ec88c3d02f55a3e338361f5e4934f5240afcb667fdaec"}, - {file = "pycryptodome-3.18.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:9c8eda4f260072f7dbe42f473906c659dcbadd5ae6159dfb49af4da1293ae380"}, - {file = "pycryptodome-3.18.0.tar.gz", hash = "sha256:c9adee653fc882d98956e33ca2c1fb582e23a8af7ac82fee75bd6113c55a0413"}, + {file = "pycryptodome-3.19.0-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:3006c44c4946583b6de24fe0632091c2653d6256b99a02a3db71ca06472ea1e4"}, + {file = "pycryptodome-3.19.0-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:7c760c8a0479a4042111a8dd2f067d3ae4573da286c53f13cf6f5c53a5c1f631"}, + {file = "pycryptodome-3.19.0-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:08ce3558af5106c632baf6d331d261f02367a6bc3733086ae43c0f988fe042db"}, + {file = "pycryptodome-3.19.0-cp27-cp27m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:45430dfaf1f421cf462c0dd824984378bef32b22669f2635cb809357dbaab405"}, + {file = "pycryptodome-3.19.0-cp27-cp27m-musllinux_1_1_aarch64.whl", hash = "sha256:a9bcd5f3794879e91970f2bbd7d899780541d3ff439d8f2112441769c9f2ccea"}, + {file = "pycryptodome-3.19.0-cp27-cp27m-win32.whl", hash = "sha256:190c53f51e988dceb60472baddce3f289fa52b0ec38fbe5fd20dd1d0f795c551"}, + {file = "pycryptodome-3.19.0-cp27-cp27m-win_amd64.whl", hash = "sha256:22e0ae7c3a7f87dcdcf302db06ab76f20e83f09a6993c160b248d58274473bfa"}, + {file = "pycryptodome-3.19.0-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:7822f36d683f9ad7bc2145b2c2045014afdbbd1d9922a6d4ce1cbd6add79a01e"}, + {file = "pycryptodome-3.19.0-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:05e33267394aad6db6595c0ce9d427fe21552f5425e116a925455e099fdf759a"}, + {file = "pycryptodome-3.19.0-cp27-cp27mu-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:829b813b8ee00d9c8aba417621b94bc0b5efd18c928923802ad5ba4cf1ec709c"}, + {file = "pycryptodome-3.19.0-cp27-cp27mu-musllinux_1_1_aarch64.whl", hash = "sha256:fc7a79590e2b5d08530175823a242de6790abc73638cc6dc9d2684e7be2f5e49"}, + {file = "pycryptodome-3.19.0-cp35-abi3-macosx_10_9_universal2.whl", hash = "sha256:542f99d5026ac5f0ef391ba0602f3d11beef8e65aae135fa5b762f5ebd9d3bfb"}, + {file = "pycryptodome-3.19.0-cp35-abi3-macosx_10_9_x86_64.whl", hash = "sha256:61bb3ccbf4bf32ad9af32da8badc24e888ae5231c617947e0f5401077f8b091f"}, + {file = "pycryptodome-3.19.0-cp35-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d49a6c715d8cceffedabb6adb7e0cbf41ae1a2ff4adaeec9432074a80627dea1"}, + {file = "pycryptodome-3.19.0-cp35-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e249a784cc98a29c77cea9df54284a44b40cafbfae57636dd2f8775b48af2434"}, + {file = "pycryptodome-3.19.0-cp35-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d033947e7fd3e2ba9a031cb2d267251620964705a013c5a461fa5233cc025270"}, + {file = "pycryptodome-3.19.0-cp35-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:84c3e4fffad0c4988aef0d5591be3cad4e10aa7db264c65fadbc633318d20bde"}, + {file = "pycryptodome-3.19.0-cp35-abi3-musllinux_1_1_i686.whl", hash = "sha256:139ae2c6161b9dd5d829c9645d781509a810ef50ea8b657e2257c25ca20efe33"}, + {file = "pycryptodome-3.19.0-cp35-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:5b1986c761258a5b4332a7f94a83f631c1ffca8747d75ab8395bf2e1b93283d9"}, + {file = "pycryptodome-3.19.0-cp35-abi3-win32.whl", hash = "sha256:536f676963662603f1f2e6ab01080c54d8cd20f34ec333dcb195306fa7826997"}, + {file = "pycryptodome-3.19.0-cp35-abi3-win_amd64.whl", hash = "sha256:04dd31d3b33a6b22ac4d432b3274588917dcf850cc0c51c84eca1d8ed6933810"}, + {file = "pycryptodome-3.19.0-pp27-pypy_73-manylinux2010_x86_64.whl", hash = "sha256:8999316e57abcbd8085c91bc0ef75292c8618f41ca6d2b6132250a863a77d1e7"}, + {file = "pycryptodome-3.19.0-pp27-pypy_73-win32.whl", hash = "sha256:a0ab84755f4539db086db9ba9e9f3868d2e3610a3948cbd2a55e332ad83b01b0"}, + {file = "pycryptodome-3.19.0-pp310-pypy310_pp73-macosx_10_9_x86_64.whl", hash = "sha256:0101f647d11a1aae5a8ce4f5fad6644ae1b22bb65d05accc7d322943c69a74a6"}, + {file = "pycryptodome-3.19.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8c1601e04d32087591d78e0b81e1e520e57a92796089864b20e5f18c9564b3fa"}, + {file = "pycryptodome-3.19.0-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:506c686a1eee6c00df70010be3b8e9e78f406af4f21b23162bbb6e9bdf5427bc"}, + {file = "pycryptodome-3.19.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:7919ccd096584b911f2a303c593280869ce1af9bf5d36214511f5e5a1bed8c34"}, + {file = "pycryptodome-3.19.0-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:560591c0777f74a5da86718f70dfc8d781734cf559773b64072bbdda44b3fc3e"}, + {file = "pycryptodome-3.19.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c1cc2f2ae451a676def1a73c1ae9120cd31af25db3f381893d45f75e77be2400"}, + {file = "pycryptodome-3.19.0-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:17940dcf274fcae4a54ec6117a9ecfe52907ed5e2e438fe712fe7ca502672ed5"}, + {file = "pycryptodome-3.19.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:d04f5f623a280fbd0ab1c1d8ecbd753193ab7154f09b6161b0f857a1a676c15f"}, + {file = "pycryptodome-3.19.0.tar.gz", hash = "sha256:bc35d463222cdb4dbebd35e0784155c81e161b9284e567e7e933d722e533331e"}, ] [[package]] name = "pytest" -version = "7.4.0" +version = "7.4.2" description = "pytest: simple powerful testing with Python" category = "dev" optional = false python-versions = ">=3.7" files = [ - {file = "pytest-7.4.0-py3-none-any.whl", hash = "sha256:78bf16451a2eb8c7a2ea98e32dc119fd2aa758f1d5d66dbf0a59d69a3969df32"}, - {file = "pytest-7.4.0.tar.gz", hash = "sha256:b4bf8c45bd59934ed84001ad51e11b4ee40d40a1229d2c79f9c592b0a3f6bd8a"}, + {file = "pytest-7.4.2-py3-none-any.whl", hash = "sha256:1d881c6124e08ff0a1bb75ba3ec0bfd8b5354a01c194ddd5a0a870a48d99b002"}, + {file = "pytest-7.4.2.tar.gz", hash = "sha256:a766259cfab564a2ad52cb1aae1b881a75c3eb7e34ca3779697c23ed47c47069"}, ] [package.dependencies] @@ -1294,14 +1294,14 @@ files = [ [[package]] name = "referencing" -version = "0.30.0" +version = "0.30.2" description = "JSON Referencing + Python" category = "main" optional = false python-versions = ">=3.8" files = [ - {file = "referencing-0.30.0-py3-none-any.whl", hash = "sha256:c257b08a399b6c2f5a3510a50d28ab5dbc7bbde049bcaf954d43c446f83ab548"}, - {file = "referencing-0.30.0.tar.gz", hash = "sha256:47237742e990457f7512c7d27486394a9aadaf876cbfaa4be65b27b4f4d47c6b"}, + {file = "referencing-0.30.2-py3-none-any.whl", hash = "sha256:449b6669b6121a9e96a7f9e410b245d471e8d48964c67113ce9afe50c8dd7bdf"}, + {file = "referencing-0.30.2.tar.gz", hash = "sha256:794ad8003c65938edcdbc027f1933215e0d0ccc0291e3ce20a4d87432b59efc0"}, ] [package.dependencies] @@ -1452,109 +1452,109 @@ test = ["hypothesis (==5.19.0)", "pytest (>=6.2.5,<7)", "tox (>=2.9.1,<3)"] [[package]] name = "rpds-py" -version = "0.9.2" +version = "0.10.3" description = "Python bindings to Rust's persistent data structures (rpds)" category = "main" optional = false python-versions = ">=3.8" files = [ - {file = "rpds_py-0.9.2-cp310-cp310-macosx_10_7_x86_64.whl", hash = "sha256:ab6919a09c055c9b092798ce18c6c4adf49d24d4d9e43a92b257e3f2548231e7"}, - {file = "rpds_py-0.9.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:d55777a80f78dd09410bd84ff8c95ee05519f41113b2df90a69622f5540c4f8b"}, - {file = "rpds_py-0.9.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a216b26e5af0a8e265d4efd65d3bcec5fba6b26909014effe20cd302fd1138fa"}, - {file = "rpds_py-0.9.2-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:29cd8bfb2d716366a035913ced99188a79b623a3512292963d84d3e06e63b496"}, - {file = "rpds_py-0.9.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:44659b1f326214950a8204a248ca6199535e73a694be8d3e0e869f820767f12f"}, - {file = "rpds_py-0.9.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:745f5a43fdd7d6d25a53ab1a99979e7f8ea419dfefebcab0a5a1e9095490ee5e"}, - {file = "rpds_py-0.9.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a987578ac5214f18b99d1f2a3851cba5b09f4a689818a106c23dbad0dfeb760f"}, - {file = "rpds_py-0.9.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:bf4151acb541b6e895354f6ff9ac06995ad9e4175cbc6d30aaed08856558201f"}, - {file = "rpds_py-0.9.2-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:03421628f0dc10a4119d714a17f646e2837126a25ac7a256bdf7c3943400f67f"}, - {file = "rpds_py-0.9.2-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:13b602dc3e8dff3063734f02dcf05111e887f301fdda74151a93dbbc249930fe"}, - {file = "rpds_py-0.9.2-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:fae5cb554b604b3f9e2c608241b5d8d303e410d7dfb6d397c335f983495ce7f6"}, - {file = "rpds_py-0.9.2-cp310-none-win32.whl", hash = "sha256:47c5f58a8e0c2c920cc7783113df2fc4ff12bf3a411d985012f145e9242a2764"}, - {file = "rpds_py-0.9.2-cp310-none-win_amd64.whl", hash = "sha256:4ea6b73c22d8182dff91155af018b11aac9ff7eca085750455c5990cb1cfae6e"}, - {file = "rpds_py-0.9.2-cp311-cp311-macosx_10_7_x86_64.whl", hash = "sha256:e564d2238512c5ef5e9d79338ab77f1cbbda6c2d541ad41b2af445fb200385e3"}, - {file = "rpds_py-0.9.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f411330a6376fb50e5b7a3e66894e4a39e60ca2e17dce258d53768fea06a37bd"}, - {file = "rpds_py-0.9.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0e7521f5af0233e89939ad626b15278c71b69dc1dfccaa7b97bd4cdf96536bb7"}, - {file = "rpds_py-0.9.2-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:8d3335c03100a073883857e91db9f2e0ef8a1cf42dc0369cbb9151c149dbbc1b"}, - {file = "rpds_py-0.9.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d25b1c1096ef0447355f7293fbe9ad740f7c47ae032c2884113f8e87660d8f6e"}, - {file = "rpds_py-0.9.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6a5d3fbd02efd9cf6a8ffc2f17b53a33542f6b154e88dd7b42ef4a4c0700fdad"}, - {file = "rpds_py-0.9.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c5934e2833afeaf36bd1eadb57256239785f5af0220ed8d21c2896ec4d3a765f"}, - {file = "rpds_py-0.9.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:095b460e117685867d45548fbd8598a8d9999227e9061ee7f012d9d264e6048d"}, - {file = "rpds_py-0.9.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:91378d9f4151adc223d584489591dbb79f78814c0734a7c3bfa9c9e09978121c"}, - {file = "rpds_py-0.9.2-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:24a81c177379300220e907e9b864107614b144f6c2a15ed5c3450e19cf536fae"}, - {file = "rpds_py-0.9.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:de0b6eceb46141984671802d412568d22c6bacc9b230174f9e55fc72ef4f57de"}, - {file = "rpds_py-0.9.2-cp311-none-win32.whl", hash = "sha256:700375326ed641f3d9d32060a91513ad668bcb7e2cffb18415c399acb25de2ab"}, - {file = "rpds_py-0.9.2-cp311-none-win_amd64.whl", hash = "sha256:0766babfcf941db8607bdaf82569ec38107dbb03c7f0b72604a0b346b6eb3298"}, - {file = "rpds_py-0.9.2-cp312-cp312-macosx_10_7_x86_64.whl", hash = "sha256:b1440c291db3f98a914e1afd9d6541e8fc60b4c3aab1a9008d03da4651e67386"}, - {file = "rpds_py-0.9.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:0f2996fbac8e0b77fd67102becb9229986396e051f33dbceada3debaacc7033f"}, - {file = "rpds_py-0.9.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9f30d205755566a25f2ae0382944fcae2f350500ae4df4e795efa9e850821d82"}, - {file = "rpds_py-0.9.2-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:159fba751a1e6b1c69244e23ba6c28f879a8758a3e992ed056d86d74a194a0f3"}, - {file = "rpds_py-0.9.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a1f044792e1adcea82468a72310c66a7f08728d72a244730d14880cd1dabe36b"}, - {file = "rpds_py-0.9.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9251eb8aa82e6cf88510530b29eef4fac825a2b709baf5b94a6094894f252387"}, - {file = "rpds_py-0.9.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:01899794b654e616c8625b194ddd1e5b51ef5b60ed61baa7a2d9c2ad7b2a4238"}, - {file = "rpds_py-0.9.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:b0c43f8ae8f6be1d605b0465671124aa8d6a0e40f1fb81dcea28b7e3d87ca1e1"}, - {file = "rpds_py-0.9.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:207f57c402d1f8712618f737356e4b6f35253b6d20a324d9a47cb9f38ee43a6b"}, - {file = "rpds_py-0.9.2-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:b52e7c5ae35b00566d244ffefba0f46bb6bec749a50412acf42b1c3f402e2c90"}, - {file = "rpds_py-0.9.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:978fa96dbb005d599ec4fd9ed301b1cc45f1a8f7982d4793faf20b404b56677d"}, - {file = "rpds_py-0.9.2-cp38-cp38-macosx_10_7_x86_64.whl", hash = "sha256:6aa8326a4a608e1c28da191edd7c924dff445251b94653988efb059b16577a4d"}, - {file = "rpds_py-0.9.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:aad51239bee6bff6823bbbdc8ad85136c6125542bbc609e035ab98ca1e32a192"}, - {file = "rpds_py-0.9.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4bd4dc3602370679c2dfb818d9c97b1137d4dd412230cfecd3c66a1bf388a196"}, - {file = "rpds_py-0.9.2-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:dd9da77c6ec1f258387957b754f0df60766ac23ed698b61941ba9acccd3284d1"}, - {file = "rpds_py-0.9.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:190ca6f55042ea4649ed19c9093a9be9d63cd8a97880106747d7147f88a49d18"}, - {file = "rpds_py-0.9.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:876bf9ed62323bc7dcfc261dbc5572c996ef26fe6406b0ff985cbcf460fc8a4c"}, - {file = "rpds_py-0.9.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fa2818759aba55df50592ecbc95ebcdc99917fa7b55cc6796235b04193eb3c55"}, - {file = "rpds_py-0.9.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:9ea4d00850ef1e917815e59b078ecb338f6a8efda23369677c54a5825dbebb55"}, - {file = "rpds_py-0.9.2-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:5855c85eb8b8a968a74dc7fb014c9166a05e7e7a8377fb91d78512900aadd13d"}, - {file = "rpds_py-0.9.2-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:14c408e9d1a80dcb45c05a5149e5961aadb912fff42ca1dd9b68c0044904eb32"}, - {file = "rpds_py-0.9.2-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:65a0583c43d9f22cb2130c7b110e695fff834fd5e832a776a107197e59a1898e"}, - {file = "rpds_py-0.9.2-cp38-none-win32.whl", hash = "sha256:71f2f7715935a61fa3e4ae91d91b67e571aeb5cb5d10331ab681256bda2ad920"}, - {file = "rpds_py-0.9.2-cp38-none-win_amd64.whl", hash = "sha256:674c704605092e3ebbbd13687b09c9f78c362a4bc710343efe37a91457123044"}, - {file = "rpds_py-0.9.2-cp39-cp39-macosx_10_7_x86_64.whl", hash = "sha256:07e2c54bef6838fa44c48dfbc8234e8e2466d851124b551fc4e07a1cfeb37260"}, - {file = "rpds_py-0.9.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:f7fdf55283ad38c33e35e2855565361f4bf0abd02470b8ab28d499c663bc5d7c"}, - {file = "rpds_py-0.9.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:890ba852c16ace6ed9f90e8670f2c1c178d96510a21b06d2fa12d8783a905193"}, - {file = "rpds_py-0.9.2-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:50025635ba8b629a86d9d5474e650da304cb46bbb4d18690532dd79341467846"}, - {file = "rpds_py-0.9.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:517cbf6e67ae3623c5127206489d69eb2bdb27239a3c3cc559350ef52a3bbf0b"}, - {file = "rpds_py-0.9.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0836d71ca19071090d524739420a61580f3f894618d10b666cf3d9a1688355b1"}, - {file = "rpds_py-0.9.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9c439fd54b2b9053717cca3de9583be6584b384d88d045f97d409f0ca867d80f"}, - {file = "rpds_py-0.9.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f68996a3b3dc9335037f82754f9cdbe3a95db42bde571d8c3be26cc6245f2324"}, - {file = "rpds_py-0.9.2-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:7d68dc8acded354c972116f59b5eb2e5864432948e098c19fe6994926d8e15c3"}, - {file = "rpds_py-0.9.2-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:f963c6b1218b96db85fc37a9f0851eaf8b9040aa46dec112611697a7023da535"}, - {file = "rpds_py-0.9.2-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:5a46859d7f947061b4010e554ccd1791467d1b1759f2dc2ec9055fa239f1bc26"}, - {file = "rpds_py-0.9.2-cp39-none-win32.whl", hash = "sha256:e07e5dbf8a83c66783a9fe2d4566968ea8c161199680e8ad38d53e075df5f0d0"}, - {file = "rpds_py-0.9.2-cp39-none-win_amd64.whl", hash = "sha256:682726178138ea45a0766907957b60f3a1bf3acdf212436be9733f28b6c5af3c"}, - {file = "rpds_py-0.9.2-pp310-pypy310_pp73-macosx_10_7_x86_64.whl", hash = "sha256:196cb208825a8b9c8fc360dc0f87993b8b260038615230242bf18ec84447c08d"}, - {file = "rpds_py-0.9.2-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:c7671d45530fcb6d5e22fd40c97e1e1e01965fc298cbda523bb640f3d923b387"}, - {file = "rpds_py-0.9.2-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:83b32f0940adec65099f3b1c215ef7f1d025d13ff947975a055989cb7fd019a4"}, - {file = "rpds_py-0.9.2-pp310-pypy310_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:7f67da97f5b9eac838b6980fc6da268622e91f8960e083a34533ca710bec8611"}, - {file = "rpds_py-0.9.2-pp310-pypy310_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:03975db5f103997904c37e804e5f340c8fdabbb5883f26ee50a255d664eed58c"}, - {file = "rpds_py-0.9.2-pp310-pypy310_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:987b06d1cdb28f88a42e4fb8a87f094e43f3c435ed8e486533aea0bf2e53d931"}, - {file = "rpds_py-0.9.2-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c861a7e4aef15ff91233751619ce3a3d2b9e5877e0fcd76f9ea4f6847183aa16"}, - {file = "rpds_py-0.9.2-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:02938432352359805b6da099c9c95c8a0547fe4b274ce8f1a91677401bb9a45f"}, - {file = "rpds_py-0.9.2-pp310-pypy310_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:ef1f08f2a924837e112cba2953e15aacfccbbfcd773b4b9b4723f8f2ddded08e"}, - {file = "rpds_py-0.9.2-pp310-pypy310_pp73-musllinux_1_2_i686.whl", hash = "sha256:35da5cc5cb37c04c4ee03128ad59b8c3941a1e5cd398d78c37f716f32a9b7f67"}, - {file = "rpds_py-0.9.2-pp310-pypy310_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:141acb9d4ccc04e704e5992d35472f78c35af047fa0cfae2923835d153f091be"}, - {file = "rpds_py-0.9.2-pp38-pypy38_pp73-macosx_10_7_x86_64.whl", hash = "sha256:79f594919d2c1a0cc17d1988a6adaf9a2f000d2e1048f71f298b056b1018e872"}, - {file = "rpds_py-0.9.2-pp38-pypy38_pp73-macosx_11_0_arm64.whl", hash = "sha256:a06418fe1155e72e16dddc68bb3780ae44cebb2912fbd8bb6ff9161de56e1798"}, - {file = "rpds_py-0.9.2-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8b2eb034c94b0b96d5eddb290b7b5198460e2d5d0c421751713953a9c4e47d10"}, - {file = "rpds_py-0.9.2-pp38-pypy38_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:8b08605d248b974eb02f40bdcd1a35d3924c83a2a5e8f5d0fa5af852c4d960af"}, - {file = "rpds_py-0.9.2-pp38-pypy38_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a0805911caedfe2736935250be5008b261f10a729a303f676d3d5fea6900c96a"}, - {file = "rpds_py-0.9.2-pp38-pypy38_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ab2299e3f92aa5417d5e16bb45bb4586171c1327568f638e8453c9f8d9e0f020"}, - {file = "rpds_py-0.9.2-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8c8d7594e38cf98d8a7df25b440f684b510cf4627fe038c297a87496d10a174f"}, - {file = "rpds_py-0.9.2-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:8b9ec12ad5f0a4625db34db7e0005be2632c1013b253a4a60e8302ad4d462afd"}, - {file = "rpds_py-0.9.2-pp38-pypy38_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:1fcdee18fea97238ed17ab6478c66b2095e4ae7177e35fb71fbe561a27adf620"}, - {file = "rpds_py-0.9.2-pp38-pypy38_pp73-musllinux_1_2_i686.whl", hash = "sha256:933a7d5cd4b84f959aedeb84f2030f0a01d63ae6cf256629af3081cf3e3426e8"}, - {file = "rpds_py-0.9.2-pp38-pypy38_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:686ba516e02db6d6f8c279d1641f7067ebb5dc58b1d0536c4aaebb7bf01cdc5d"}, - {file = "rpds_py-0.9.2-pp39-pypy39_pp73-macosx_10_7_x86_64.whl", hash = "sha256:0173c0444bec0a3d7d848eaeca2d8bd32a1b43f3d3fde6617aac3731fa4be05f"}, - {file = "rpds_py-0.9.2-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:d576c3ef8c7b2d560e301eb33891d1944d965a4d7a2eacb6332eee8a71827db6"}, - {file = "rpds_py-0.9.2-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ed89861ee8c8c47d6beb742a602f912b1bb64f598b1e2f3d758948721d44d468"}, - {file = "rpds_py-0.9.2-pp39-pypy39_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:1054a08e818f8e18910f1bee731583fe8f899b0a0a5044c6e680ceea34f93876"}, - {file = "rpds_py-0.9.2-pp39-pypy39_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:99e7c4bb27ff1aab90dcc3e9d37ee5af0231ed98d99cb6f5250de28889a3d502"}, - {file = "rpds_py-0.9.2-pp39-pypy39_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c545d9d14d47be716495076b659db179206e3fd997769bc01e2d550eeb685596"}, - {file = "rpds_py-0.9.2-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9039a11bca3c41be5a58282ed81ae422fa680409022b996032a43badef2a3752"}, - {file = "rpds_py-0.9.2-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:fb39aca7a64ad0c9490adfa719dbeeb87d13be137ca189d2564e596f8ba32c07"}, - {file = "rpds_py-0.9.2-pp39-pypy39_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:2d8b3b3a2ce0eaa00c5bbbb60b6713e94e7e0becab7b3db6c5c77f979e8ed1f1"}, - {file = "rpds_py-0.9.2-pp39-pypy39_pp73-musllinux_1_2_i686.whl", hash = "sha256:99b1c16f732b3a9971406fbfe18468592c5a3529585a45a35adbc1389a529a03"}, - {file = "rpds_py-0.9.2-pp39-pypy39_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:c27ee01a6c3223025f4badd533bea5e87c988cb0ba2811b690395dfe16088cfe"}, - {file = "rpds_py-0.9.2.tar.gz", hash = "sha256:8d70e8f14900f2657c249ea4def963bed86a29b81f81f5b76b5a9215680de945"}, + {file = "rpds_py-0.10.3-cp310-cp310-macosx_10_7_x86_64.whl", hash = "sha256:485747ee62da83366a44fbba963c5fe017860ad408ccd6cd99aa66ea80d32b2e"}, + {file = "rpds_py-0.10.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c55f9821f88e8bee4b7a72c82cfb5ecd22b6aad04033334f33c329b29bfa4da0"}, + {file = "rpds_py-0.10.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d3b52a67ac66a3a64a7e710ba629f62d1e26ca0504c29ee8cbd99b97df7079a8"}, + {file = "rpds_py-0.10.3-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:3aed39db2f0ace76faa94f465d4234aac72e2f32b009f15da6492a561b3bbebd"}, + {file = "rpds_py-0.10.3-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:271c360fdc464fe6a75f13ea0c08ddf71a321f4c55fc20a3fe62ea3ef09df7d9"}, + {file = "rpds_py-0.10.3-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ef5fddfb264e89c435be4adb3953cef5d2936fdeb4463b4161a6ba2f22e7b740"}, + {file = "rpds_py-0.10.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a771417c9c06c56c9d53d11a5b084d1de75de82978e23c544270ab25e7c066ff"}, + {file = "rpds_py-0.10.3-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:52b5cbc0469328e58180021138207e6ec91d7ca2e037d3549cc9e34e2187330a"}, + {file = "rpds_py-0.10.3-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:6ac3fefb0d168c7c6cab24fdfc80ec62cd2b4dfd9e65b84bdceb1cb01d385c33"}, + {file = "rpds_py-0.10.3-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:8d54bbdf5d56e2c8cf81a1857250f3ea132de77af543d0ba5dce667183b61fec"}, + {file = "rpds_py-0.10.3-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:cd2163f42868865597d89399a01aa33b7594ce8e2c4a28503127c81a2f17784e"}, + {file = "rpds_py-0.10.3-cp310-none-win32.whl", hash = "sha256:ea93163472db26ac6043e8f7f93a05d9b59e0505c760da2a3cd22c7dd7111391"}, + {file = "rpds_py-0.10.3-cp310-none-win_amd64.whl", hash = "sha256:7cd020b1fb41e3ab7716d4d2c3972d4588fdfbab9bfbbb64acc7078eccef8860"}, + {file = "rpds_py-0.10.3-cp311-cp311-macosx_10_7_x86_64.whl", hash = "sha256:1d9b5ee46dcb498fa3e46d4dfabcb531e1f2e76b477e0d99ef114f17bbd38453"}, + {file = "rpds_py-0.10.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:563646d74a4b4456d0cf3b714ca522e725243c603e8254ad85c3b59b7c0c4bf0"}, + {file = "rpds_py-0.10.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e626b864725680cd3904414d72e7b0bd81c0e5b2b53a5b30b4273034253bb41f"}, + {file = "rpds_py-0.10.3-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:485301ee56ce87a51ccb182a4b180d852c5cb2b3cb3a82f7d4714b4141119d8c"}, + {file = "rpds_py-0.10.3-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:42f712b4668831c0cd85e0a5b5a308700fe068e37dcd24c0062904c4e372b093"}, + {file = "rpds_py-0.10.3-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6c9141af27a4e5819d74d67d227d5047a20fa3c7d4d9df43037a955b4c748ec5"}, + {file = "rpds_py-0.10.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ef750a20de1b65657a1425f77c525b0183eac63fe7b8f5ac0dd16f3668d3e64f"}, + {file = "rpds_py-0.10.3-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:e1a0ffc39f51aa5f5c22114a8f1906b3c17eba68c5babb86c5f77d8b1bba14d1"}, + {file = "rpds_py-0.10.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:f4c179a7aeae10ddf44c6bac87938134c1379c49c884529f090f9bf05566c836"}, + {file = "rpds_py-0.10.3-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:176287bb998fd1e9846a9b666e240e58f8d3373e3bf87e7642f15af5405187b8"}, + {file = "rpds_py-0.10.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:6446002739ca29249f0beaaf067fcbc2b5aab4bc7ee8fb941bd194947ce19aff"}, + {file = "rpds_py-0.10.3-cp311-none-win32.whl", hash = "sha256:c7aed97f2e676561416c927b063802c8a6285e9b55e1b83213dfd99a8f4f9e48"}, + {file = "rpds_py-0.10.3-cp311-none-win_amd64.whl", hash = "sha256:8bd01ff4032abaed03f2db702fa9a61078bee37add0bd884a6190b05e63b028c"}, + {file = "rpds_py-0.10.3-cp312-cp312-macosx_10_7_x86_64.whl", hash = "sha256:4cf0855a842c5b5c391dd32ca273b09e86abf8367572073bd1edfc52bc44446b"}, + {file = "rpds_py-0.10.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:69b857a7d8bd4f5d6e0db4086da8c46309a26e8cefdfc778c0c5cc17d4b11e08"}, + {file = "rpds_py-0.10.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:975382d9aa90dc59253d6a83a5ca72e07f4ada3ae3d6c0575ced513db322b8ec"}, + {file = "rpds_py-0.10.3-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:35fbd23c1c8732cde7a94abe7fb071ec173c2f58c0bd0d7e5b669fdfc80a2c7b"}, + {file = "rpds_py-0.10.3-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:106af1653007cc569d5fbb5f08c6648a49fe4de74c2df814e234e282ebc06957"}, + {file = "rpds_py-0.10.3-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ce5e7504db95b76fc89055c7f41e367eaadef5b1d059e27e1d6eabf2b55ca314"}, + {file = "rpds_py-0.10.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5aca759ada6b1967fcfd4336dcf460d02a8a23e6abe06e90ea7881e5c22c4de6"}, + {file = "rpds_py-0.10.3-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:b5d4bdd697195f3876d134101c40c7d06d46c6ab25159ed5cbd44105c715278a"}, + {file = "rpds_py-0.10.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:a657250807b6efd19b28f5922520ae002a54cb43c2401e6f3d0230c352564d25"}, + {file = "rpds_py-0.10.3-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:177c9dd834cdf4dc39c27436ade6fdf9fe81484758885f2d616d5d03c0a83bd2"}, + {file = "rpds_py-0.10.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:e22491d25f97199fc3581ad8dd8ce198d8c8fdb8dae80dea3512e1ce6d5fa99f"}, + {file = "rpds_py-0.10.3-cp38-cp38-macosx_10_7_x86_64.whl", hash = "sha256:2f3e1867dd574014253b4b8f01ba443b9c914e61d45f3674e452a915d6e929a3"}, + {file = "rpds_py-0.10.3-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:c22211c165166de6683de8136229721f3d5c8606cc2c3d1562da9a3a5058049c"}, + {file = "rpds_py-0.10.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:40bc802a696887b14c002edd43c18082cb7b6f9ee8b838239b03b56574d97f71"}, + {file = "rpds_py-0.10.3-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5e271dd97c7bb8eefda5cca38cd0b0373a1fea50f71e8071376b46968582af9b"}, + {file = "rpds_py-0.10.3-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:95cde244e7195b2c07ec9b73fa4c5026d4a27233451485caa1cd0c1b55f26dbd"}, + {file = "rpds_py-0.10.3-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:08a80cf4884920863623a9ee9a285ee04cef57ebedc1cc87b3e3e0f24c8acfe5"}, + {file = "rpds_py-0.10.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:763ad59e105fca09705d9f9b29ecffb95ecdc3b0363be3bb56081b2c6de7977a"}, + {file = "rpds_py-0.10.3-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:187700668c018a7e76e89424b7c1042f317c8df9161f00c0c903c82b0a8cac5c"}, + {file = "rpds_py-0.10.3-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:5267cfda873ad62591b9332fd9472d2409f7cf02a34a9c9cb367e2c0255994bf"}, + {file = "rpds_py-0.10.3-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:2ed83d53a8c5902ec48b90b2ac045e28e1698c0bea9441af9409fc844dc79496"}, + {file = "rpds_py-0.10.3-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:255f1a10ae39b52122cce26ce0781f7a616f502feecce9e616976f6a87992d6b"}, + {file = "rpds_py-0.10.3-cp38-none-win32.whl", hash = "sha256:a019a344312d0b1f429c00d49c3be62fa273d4a1094e1b224f403716b6d03be1"}, + {file = "rpds_py-0.10.3-cp38-none-win_amd64.whl", hash = "sha256:efb9ece97e696bb56e31166a9dd7919f8f0c6b31967b454718c6509f29ef6fee"}, + {file = "rpds_py-0.10.3-cp39-cp39-macosx_10_7_x86_64.whl", hash = "sha256:570cc326e78ff23dec7f41487aa9c3dffd02e5ee9ab43a8f6ccc3df8f9327623"}, + {file = "rpds_py-0.10.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:cff7351c251c7546407827b6a37bcef6416304fc54d12d44dbfecbb717064717"}, + {file = "rpds_py-0.10.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:177914f81f66c86c012311f8c7f46887ec375cfcfd2a2f28233a3053ac93a569"}, + {file = "rpds_py-0.10.3-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:448a66b8266de0b581246ca7cd6a73b8d98d15100fb7165974535fa3b577340e"}, + {file = "rpds_py-0.10.3-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3bbac1953c17252f9cc675bb19372444aadf0179b5df575ac4b56faaec9f6294"}, + {file = "rpds_py-0.10.3-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9dd9d9d9e898b9d30683bdd2b6c1849449158647d1049a125879cb397ee9cd12"}, + {file = "rpds_py-0.10.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e8c71ea77536149e36c4c784f6d420ffd20bea041e3ba21ed021cb40ce58e2c9"}, + {file = "rpds_py-0.10.3-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:16a472300bc6c83fe4c2072cc22b3972f90d718d56f241adabc7ae509f53f154"}, + {file = "rpds_py-0.10.3-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:b9255e7165083de7c1d605e818025e8860636348f34a79d84ec533546064f07e"}, + {file = "rpds_py-0.10.3-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:53d7a3cd46cdc1689296348cb05ffd4f4280035770aee0c8ead3bbd4d6529acc"}, + {file = "rpds_py-0.10.3-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:22da15b902f9f8e267020d1c8bcfc4831ca646fecb60254f7bc71763569f56b1"}, + {file = "rpds_py-0.10.3-cp39-none-win32.whl", hash = "sha256:850c272e0e0d1a5c5d73b1b7871b0a7c2446b304cec55ccdb3eaac0d792bb065"}, + {file = "rpds_py-0.10.3-cp39-none-win_amd64.whl", hash = "sha256:de61e424062173b4f70eec07e12469edde7e17fa180019a2a0d75c13a5c5dc57"}, + {file = "rpds_py-0.10.3-pp310-pypy310_pp73-macosx_10_7_x86_64.whl", hash = "sha256:af247fd4f12cca4129c1b82090244ea5a9d5bb089e9a82feb5a2f7c6a9fe181d"}, + {file = "rpds_py-0.10.3-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:3ad59efe24a4d54c2742929001f2d02803aafc15d6d781c21379e3f7f66ec842"}, + {file = "rpds_py-0.10.3-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:642ed0a209ced4be3a46f8cb094f2d76f1f479e2a1ceca6de6346a096cd3409d"}, + {file = "rpds_py-0.10.3-pp310-pypy310_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:37d0c59548ae56fae01c14998918d04ee0d5d3277363c10208eef8c4e2b68ed6"}, + {file = "rpds_py-0.10.3-pp310-pypy310_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:aad6ed9e70ddfb34d849b761fb243be58c735be6a9265b9060d6ddb77751e3e8"}, + {file = "rpds_py-0.10.3-pp310-pypy310_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8f94fdd756ba1f79f988855d948ae0bad9ddf44df296770d9a58c774cfbcca72"}, + {file = "rpds_py-0.10.3-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:77076bdc8776a2b029e1e6ffbe6d7056e35f56f5e80d9dc0bad26ad4a024a762"}, + {file = "rpds_py-0.10.3-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:87d9b206b1bd7a0523375dc2020a6ce88bca5330682ae2fe25e86fd5d45cea9c"}, + {file = "rpds_py-0.10.3-pp310-pypy310_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:8efaeb08ede95066da3a3e3c420fcc0a21693fcd0c4396d0585b019613d28515"}, + {file = "rpds_py-0.10.3-pp310-pypy310_pp73-musllinux_1_2_i686.whl", hash = "sha256:a4d9bfda3f84fc563868fe25ca160c8ff0e69bc4443c5647f960d59400ce6557"}, + {file = "rpds_py-0.10.3-pp310-pypy310_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:d27aa6bbc1f33be920bb7adbb95581452cdf23005d5611b29a12bb6a3468cc95"}, + {file = "rpds_py-0.10.3-pp38-pypy38_pp73-macosx_10_7_x86_64.whl", hash = "sha256:ed8313809571a5463fd7db43aaca68ecb43ca7a58f5b23b6e6c6c5d02bdc7882"}, + {file = "rpds_py-0.10.3-pp38-pypy38_pp73-macosx_11_0_arm64.whl", hash = "sha256:e10e6a1ed2b8661201e79dff5531f8ad4cdd83548a0f81c95cf79b3184b20c33"}, + {file = "rpds_py-0.10.3-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:015de2ce2af1586ff5dc873e804434185199a15f7d96920ce67e50604592cae9"}, + {file = "rpds_py-0.10.3-pp38-pypy38_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ae87137951bb3dc08c7d8bfb8988d8c119f3230731b08a71146e84aaa919a7a9"}, + {file = "rpds_py-0.10.3-pp38-pypy38_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:0bb4f48bd0dd18eebe826395e6a48b7331291078a879295bae4e5d053be50d4c"}, + {file = "rpds_py-0.10.3-pp38-pypy38_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:09362f86ec201288d5687d1dc476b07bf39c08478cde837cb710b302864e7ec9"}, + {file = "rpds_py-0.10.3-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:821392559d37759caa67d622d0d2994c7a3f2fb29274948ac799d496d92bca73"}, + {file = "rpds_py-0.10.3-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:7170cbde4070dc3c77dec82abf86f3b210633d4f89550fa0ad2d4b549a05572a"}, + {file = "rpds_py-0.10.3-pp38-pypy38_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:5de11c041486681ce854c814844f4ce3282b6ea1656faae19208ebe09d31c5b8"}, + {file = "rpds_py-0.10.3-pp38-pypy38_pp73-musllinux_1_2_i686.whl", hash = "sha256:4ed172d0c79f156c1b954e99c03bc2e3033c17efce8dd1a7c781bc4d5793dfac"}, + {file = "rpds_py-0.10.3-pp38-pypy38_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:11fdd1192240dda8d6c5d18a06146e9045cb7e3ba7c06de6973000ff035df7c6"}, + {file = "rpds_py-0.10.3-pp39-pypy39_pp73-macosx_10_7_x86_64.whl", hash = "sha256:f602881d80ee4228a2355c68da6b296a296cd22bbb91e5418d54577bbf17fa7c"}, + {file = "rpds_py-0.10.3-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:691d50c99a937709ac4c4cd570d959a006bd6a6d970a484c84cc99543d4a5bbb"}, + {file = "rpds_py-0.10.3-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:24cd91a03543a0f8d09cb18d1cb27df80a84b5553d2bd94cba5979ef6af5c6e7"}, + {file = "rpds_py-0.10.3-pp39-pypy39_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:fc2200e79d75b5238c8d69f6a30f8284290c777039d331e7340b6c17cad24a5a"}, + {file = "rpds_py-0.10.3-pp39-pypy39_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ea65b59882d5fa8c74a23f8960db579e5e341534934f43f3b18ec1839b893e41"}, + {file = "rpds_py-0.10.3-pp39-pypy39_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:829e91f3a8574888b73e7a3feb3b1af698e717513597e23136ff4eba0bc8387a"}, + {file = "rpds_py-0.10.3-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eab75a8569a095f2ad470b342f2751d9902f7944704f0571c8af46bede438475"}, + {file = "rpds_py-0.10.3-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:061c3ff1f51ecec256e916cf71cc01f9975af8fb3af9b94d3c0cc8702cfea637"}, + {file = "rpds_py-0.10.3-pp39-pypy39_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:39d05e65f23a0fe897b6ac395f2a8d48c56ac0f583f5d663e0afec1da89b95da"}, + {file = "rpds_py-0.10.3-pp39-pypy39_pp73-musllinux_1_2_i686.whl", hash = "sha256:4eca20917a06d2fca7628ef3c8b94a8c358f6b43f1a621c9815243462dcccf97"}, + {file = "rpds_py-0.10.3-pp39-pypy39_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:e8d0f0eca087630d58b8c662085529781fd5dc80f0a54eda42d5c9029f812599"}, + {file = "rpds_py-0.10.3.tar.gz", hash = "sha256:fcc1ebb7561a3e24a6588f7c6ded15d80aec22c66a070c757559b57b17ffd1cb"}, ] [[package]] @@ -1610,14 +1610,14 @@ files = [ [[package]] name = "urllib3" -version = "2.0.4" +version = "2.0.5" description = "HTTP library with thread-safe connection pooling, file post, and more." category = "main" optional = false python-versions = ">=3.7" files = [ - {file = "urllib3-2.0.4-py3-none-any.whl", hash = "sha256:de7df1803967d2c2a98e4b11bb7d6bd9210474c46e8a0401514e3a42a75ebde4"}, - {file = "urllib3-2.0.4.tar.gz", hash = "sha256:8d22f86aae8ef5e410d4f539fde9ce6b2113a001bb4d189e0aed70642d602b11"}, + {file = "urllib3-2.0.5-py3-none-any.whl", hash = "sha256:ef16afa8ba34a1f989db38e1dbbe0c302e4289a47856990d0682e374563ce35e"}, + {file = "urllib3-2.0.5.tar.gz", hash = "sha256:13abf37382ea2ce6fb744d4dad67838eec857c9f4f57009891805e0b5e123594"}, ] [package.extras] @@ -1679,18 +1679,18 @@ web3 = ">=5.22.0,<7" [[package]] name = "websocket-client" -version = "1.6.1" +version = "1.6.3" description = "WebSocket client for Python with low level API options" category = "main" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "websocket-client-1.6.1.tar.gz", hash = "sha256:c951af98631d24f8df89ab1019fc365f2227c0892f12fd150e935607c79dd0dd"}, - {file = "websocket_client-1.6.1-py3-none-any.whl", hash = "sha256:f1f9f2ad5291f0225a49efad77abf9e700b6fef553900623060dad6e26503b9d"}, + {file = "websocket-client-1.6.3.tar.gz", hash = "sha256:3aad25d31284266bcfcfd1fd8a743f63282305a364b8d0948a43bd606acc652f"}, + {file = "websocket_client-1.6.3-py3-none-any.whl", hash = "sha256:6cfc30d051ebabb73a5fa246efdcc14c8fbebbd0330f8984ac3bb6d9edd2ad03"}, ] [package.extras] -docs = ["Sphinx (>=3.4)", "sphinx-rtd-theme (>=0.5)"] +docs = ["Sphinx (>=6.0)", "sphinx-rtd-theme (>=1.1.0)"] optional = ["python-socks", "wsaccel"] test = ["websockets"] diff --git a/tests/fixtures/provider.py b/tests/fixtures/provider.py index 7d3559fd..b1e24362 100644 --- a/tests/fixtures/provider.py +++ b/tests/fixtures/provider.py @@ -61,10 +61,16 @@ def web3_with_dvt_module(web3_provider_integration): assert r.status_code == 200 - r = requests.post(CHRONIX_URL + 'v1/env/' + str(port) + '/simple-dvt/add-node-operators-with-state/') + r = requests.post(CHRONIX_URL + 'v1/env/' + str(port) + '/simple-dvt/add-node-operator/', json={ + 'name': 'NOname', + 'norAddress': '0x70997970C51812dc3A010C7d01b50e0d17dc79C8', + 'rewardAddress': '0x70997970C51812dc3A010C7d01b50e0d17dc79C8', + }) assert r.status_code == 200 + r = requests.post(CHRONIX_URL + 'v1/env/' + str(port) + '/simple-dvt/add-node-operator-keys/') + yield web3_provider_integration From b6850e9cb30f7bcaf488091223715fb279614b82 Mon Sep 17 00:00:00 2001 From: Raman Siamionau Date: Mon, 2 Oct 2023 17:18:13 +0200 Subject: [PATCH 35/42] fix tests --- .github/workflows/tests_and_checks.yml | 4 +- package.json | 6 +-- .../contracts/deposit_security_module.py | 12 ++++++ .../prefered_module_to_deposit.py | 5 ++- .../contracts/test_deposit_security_module.py | 1 + tests/bots/test_depositor.py | 6 +-- tests/fixtures/provider.py | 41 +++++++++++++++---- yarn.lock | 16 ++++---- 8 files changed, 65 insertions(+), 26 deletions(-) diff --git a/.github/workflows/tests_and_checks.yml b/.github/workflows/tests_and_checks.yml index 9d6fb8d0..34df20b1 100644 --- a/.github/workflows/tests_and_checks.yml +++ b/.github/workflows/tests_and_checks.yml @@ -39,9 +39,9 @@ jobs: - name: Install dependencies run: yarn install --immutable - - name: Run hardhat + - name: Run chronix run: | - yarn hardhat node --fork ${{ secrets.WEB3_RPC_ENDPOINT }} & + yarn chronix start - name: Integration Tests with pytest run: | diff --git a/package.json b/package.json index 51338df5..777c70b5 100644 --- a/package.json +++ b/package.json @@ -1,9 +1,9 @@ { "devDependencies": { - "chronix": "0.0.2-beta-plugin-v12", + "chronix": "0.0.8", + "simple-dvt-v1": "0.0.9", "dotenv": "^16.3.1", - "hardhat": "^2.17.3", - "simple-dvt-v1": "0.0.5" + "hardhat": "^2.17.3" }, "scripts": { "postinstall": "chronix compile" diff --git a/src/blockchain/contracts/deposit_security_module.py b/src/blockchain/contracts/deposit_security_module.py index ea4c1a30..e068c384 100644 --- a/src/blockchain/contracts/deposit_security_module.py +++ b/src/blockchain/contracts/deposit_security_module.py @@ -126,3 +126,15 @@ def pause_deposits( guardian_signature, )}) return tx + + def get_max_deposits(self, block_identifier: BlockIdentifier = 'latest'): + """ + Returns maxDepositsPerBlock + """ + response = self.functions.getMaxDeposits().call(block_identifier=block_identifier) + logger.info({ + 'msg': f'Call `getMaxDeposits()`.', + 'value': response, + 'block_identifier': block_identifier.__repr__(), + }) + return response diff --git a/src/blockchain/deposit_strategy/prefered_module_to_deposit.py b/src/blockchain/deposit_strategy/prefered_module_to_deposit.py index 82118816..01df82be 100644 --- a/src/blockchain/deposit_strategy/prefered_module_to_deposit.py +++ b/src/blockchain/deposit_strategy/prefered_module_to_deposit.py @@ -36,9 +36,12 @@ def get_active_modules(w3: Web3, whitelist_modules: list[int]) -> list[int]: def get_modules_stats(w3: Web3, modules: list[int]) -> list[tuple[int, int]]: depositable_ether = w3.lido.lido.get_depositable_ether() + max_deposits = w3.lido.deposit_security_module.get_max_deposits() + + max_depositable_ether = min(max_deposits * 32 * 10**18, depositable_ether) module_stats = [( - w3.lido.staking_router.get_staking_module_max_deposits_count(module, depositable_ether), + w3.lido.staking_router.get_staking_module_max_deposits_count(module, max_depositable_ether), module, ) for module in modules ] diff --git a/tests/blockchain/contracts/test_deposit_security_module.py b/tests/blockchain/contracts/test_deposit_security_module.py index 9e329945..8309ffa7 100644 --- a/tests/blockchain/contracts/test_deposit_security_module.py +++ b/tests/blockchain/contracts/test_deposit_security_module.py @@ -16,6 +16,7 @@ def test_deposit_security_module_call(deposit_security_module, caplog): ('can_deposit', (1,), lambda response: check_value_type(response, bool)), ('get_pause_message_prefix', None, lambda response: check_value_type(response, bytes)), ('get_pause_intent_validity_period_blocks', None, lambda response: check_value_type(response, int)), + ('get_max_deposits', None, lambda response: check_value_type(response, int)), ], caplog, ) diff --git a/tests/bots/test_depositor.py b/tests/bots/test_depositor.py index 60e38b03..b355dae3 100644 --- a/tests/bots/test_depositor.py +++ b/tests/bots/test_depositor.py @@ -309,7 +309,7 @@ def test_depositor_bot(web3_lido_integration, add_accounts_to_guardian): @pytest.mark.integration -def test_deposit_to_second_module(web3_with_dvt_module, web3_lido_integration): +def test_deposit_to_second_module(web3_with_dvt_module, web3_lido_integration, add_accounts_to_guardian): variables.DEPOSIT_MODULES_WHITELIST = [1, 2] make_deposit(web3_lido_integration, 2) @@ -321,7 +321,7 @@ def make_deposit(web3_lido_integration, module_id): ]) max_deposits = web3_lido_integration.lido.deposit_security_module.functions.getMaxDeposits().call() - web3_lido_integration.lido.deposit_security_module.functions.setMaxDeposits(2).transact({'from': DSM_OWNER}) + web3_lido_integration.lido.deposit_security_module.functions.setMaxDeposits(100).transact({'from': DSM_OWNER}) latest = web3_lido_integration.eth.get_block('latest') @@ -332,7 +332,7 @@ def make_deposit(web3_lido_integration, module_id): deposit_message_3 = get_deposit_message(web3_lido_integration, COUNCIL_ADDRESS_2, COUNCIL_PK_2, module_id) db = DepositorBot(web3_lido_integration) - db.message_storage.messages = [deposit_message_2, deposit_message_3] + db.message_storage.messages = [] db.execute(latest) assert web3_lido_integration.lido.staking_router.get_staking_module_nonce(module_id) == old_module_nonce diff --git a/tests/fixtures/provider.py b/tests/fixtures/provider.py index b1e24362..59e101f1 100644 --- a/tests/fixtures/provider.py +++ b/tests/fixtures/provider.py @@ -1,3 +1,4 @@ +import json from unittest.mock import Mock from urllib.parse import urlparse @@ -31,7 +32,7 @@ def web3_lido_unit(): def web3_provider_integration(): hardhat_path = 'v1/env/hardhat/' - response = requests.put( + response = requests.post( CHRONIX_URL + hardhat_path, json={ 'chainId': 1, @@ -48,28 +49,50 @@ def web3_provider_integration(): port = response.json()['data']['port'] - yield Web3(FallbackProvider([f'http://0.0.0.0:{port}/'])) + yield Web3(FallbackProvider([f'http://0.0.0.0:{port}/'], request_kwargs={'timeout': 3600})) - requests.delete(CHRONIX_URL + hardhat_path, json={'port': port}) + r = requests.delete(CHRONIX_URL + hardhat_path + f'{port}/') + + assert r.status_code == 200 @pytest.fixture(scope="module") def web3_with_dvt_module(web3_provider_integration): port = urlparse(web3_provider_integration.provider._hosts_uri[0]).port - r = requests.post(CHRONIX_URL + 'v1/env/' + str(port) + '/simple-dvt/deploy/') + r1 = requests.post(CHRONIX_URL + 'v1/env/' + str(port) + '/simple-dvt/deploy/') - assert r.status_code == 200 + assert r1.status_code == 200 - r = requests.post(CHRONIX_URL + 'v1/env/' + str(port) + '/simple-dvt/add-node-operator/', json={ + r2 = requests.post(CHRONIX_URL + 'v1/env/' + str(port) + '/simple-dvt/add-node-operator/', json={ 'name': 'NOname', - 'norAddress': '0x70997970C51812dc3A010C7d01b50e0d17dc79C8', + 'norAddress': r1.json()['data']['stakingRouterData']['stakingModules'][1]['stakingModuleAddress'], 'rewardAddress': '0x70997970C51812dc3A010C7d01b50e0d17dc79C8', }) - assert r.status_code == 200 + assert r2.status_code == 200 + + r3 = requests.post(CHRONIX_URL + 'v1/env/' + str(port) + '/simple-dvt/add-node-operator-keys/', json={ + 'noId': r2.json()['data']['nodeOperatorId'], + 'norAddress': r1.json()['data']['stakingRouterData']['stakingModules'][1]['stakingModuleAddress'], + 'keysCount': 100, + 'keys': '0x' + 'a04f11ab318a981d4b629ac91662b865b89d6cb2ae4661daeec5fb92b2d332028732f461eb685f522ace9953d48f72fe' * 100, + 'signatures': '0x' + 'b5cc6f8d28eed18bef327781a804b4137cabdf289c9d65101439ba5c937b6d313125053faa896be9f3730add8d107ed5055ed9e16993b190d21f51ce36d71921985f7831239e07760f00dd298b3b4e7f5b13131649fe0c33b0388cd2c7719b56' * 100, + }) + assert r3.status_code == 200 + + with open('interfaces/NodeOperatorRegistry.json', 'r') as f: + staking_module = web3_provider_integration.eth.contract( + r1.json()['data']['stakingRouterData']['stakingModules'][1]['stakingModuleAddress'], + abi=json.loads(f.read()) + ) + + staking_module.functions.setNodeOperatorStakingLimit(r2.json()['data']['nodeOperatorId'], 100).transact({ + 'from': '0x2e59A20f205bB85a89C53f1936454680651E618e' + }) - r = requests.post(CHRONIX_URL + 'v1/env/' + str(port) + '/simple-dvt/add-node-operator-keys/') + for _ in range(25): + web3_provider_integration.provider.make_request('hardhat_mine', []) yield web3_provider_integration diff --git a/yarn.lock b/yarn.lock index 7e9b6ea9..973f5a5d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2617,10 +2617,10 @@ chokidar@3.5.3, chokidar@^3.4.0: optionalDependencies: fsevents "~2.3.2" -chronix@0.0.2-beta-plugin-v12: - version "0.0.2-beta-plugin-v12" - resolved "https://registry.yarnpkg.com/chronix/-/chronix-0.0.2-beta-plugin-v12.tgz#45975ddf9c916528e1185cdef045950ba3888e0e" - integrity sha512-z5vMM9cNGqMxxWllN6GZJ+RdoX2KT5/P+PkQ8RQ+Va6N++OJ6byrPJ+WCSorRXyZ9SeAF/QiXfL7ToGcICg98A== +chronix@0.0.8: + version "0.0.8" + resolved "https://registry.yarnpkg.com/chronix/-/chronix-0.0.8.tgz#b2f2649eef234fbbb529eeb0f4c0b516c7cde201" + integrity sha512-juTNNwBSe4/tY+6YyQiHLCnzVcjPRS2+2wRoDtgSFp1o+DeULHJJLMIpcoFMGpHFnI7KVZsrlSsNfOgKkew2Bw== dependencies: "@aragon/os" "^4.4.0" "@nomiclabs/hardhat-ethers" "^2.2.3" @@ -6604,10 +6604,10 @@ simple-concat@^1.0.0: resolved "https://registry.yarnpkg.com/simple-concat/-/simple-concat-1.0.1.tgz#f46976082ba35c2263f1c8ab5edfe26c41c9552f" integrity sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q== -simple-dvt-v1@0.0.5: - version "0.0.5" - resolved "https://registry.yarnpkg.com/simple-dvt-v1/-/simple-dvt-v1-0.0.5.tgz#6c221ab3757931c62736117388a3db4da340589c" - integrity sha512-NEtatJ7KZFWjSyKzDD03V1wxbHXvi2oi65SVZ+LVHQNKIUO/tYIOtTRa01y6AH20wEl3hL/W68GS3+/wOLOH6g== +simple-dvt-v1@0.0.9: + version "0.0.9" + resolved "https://registry.yarnpkg.com/simple-dvt-v1/-/simple-dvt-v1-0.0.9.tgz#53d220067f4d03cc8e848349c8a391af58dfd637" + integrity sha512-+F8W9rDruFAkeJoc88vY1mlXvGVb7Er3EX7x8my0mi0JAaRwN5w70fqlj2z/JSahBOYpy23OVXvKvq2d40rqlQ== dependencies: "@aragon/apps-agent" "^2.1.0" "@aragon/apps-finance" "^3.0.0" From 62e19ff2a4269734834d8229c212117fee1ee0d1 Mon Sep 17 00:00:00 2001 From: Raman Siamionau Date: Mon, 2 Oct 2023 18:55:27 +0200 Subject: [PATCH 36/42] some changes to depositor bot --- .../prefered_module_to_deposit.py | 21 +++++++------ src/bots/depositor.py | 5 +++- .../test_get_prefered_module_to_deposit.py | 13 ++++++++ tests/fixtures/provider.py | 30 +++++++++---------- 4 files changed, 42 insertions(+), 27 deletions(-) diff --git a/src/blockchain/deposit_strategy/prefered_module_to_deposit.py b/src/blockchain/deposit_strategy/prefered_module_to_deposit.py index 01df82be..e108fbd4 100644 --- a/src/blockchain/deposit_strategy/prefered_module_to_deposit.py +++ b/src/blockchain/deposit_strategy/prefered_module_to_deposit.py @@ -25,23 +25,22 @@ def get_active_modules(w3: Web3, whitelist_modules: list[int]) -> list[int]: # Get all module ids modules = w3.lido.staking_router.get_staking_module_ids() - # Filter not-whitelisted modules - modules = [module for module in modules if module in whitelist_modules] - - # Filter not-active modules - modules = [module for module in modules if w3.lido.staking_router.is_staking_module_active(module)] - - return modules + return [ + module for module in modules + # Filter not-whitelisted modules + if module in whitelist_modules and + # Filter not-active modules + w3.lido.staking_router.is_staking_module_active(module) and + # Filter non-depositable module + w3.lido.deposit_security_module.can_deposit(module) + ] def get_modules_stats(w3: Web3, modules: list[int]) -> list[tuple[int, int]]: depositable_ether = w3.lido.lido.get_depositable_ether() - max_deposits = w3.lido.deposit_security_module.get_max_deposits() - - max_depositable_ether = min(max_deposits * 32 * 10**18, depositable_ether) module_stats = [( - w3.lido.staking_router.get_staking_module_max_deposits_count(module, max_depositable_ether), + w3.lido.staking_router.get_staking_module_max_deposits_count(module, depositable_ether), module, ) for module in modules ] diff --git a/src/bots/depositor.py b/src/bots/depositor.py index c01c4f9e..df7f5f60 100644 --- a/src/bots/depositor.py +++ b/src/bots/depositor.py @@ -102,6 +102,9 @@ def _deposit_to_module(self, module_id: int) -> bool: quorum = self._get_quorum(module_id) logger.info({'msg': 'Build quorum.', 'value': quorum}) + can_deposit = self.w3.lido.deposit_security_module.can_deposit(module_id) + logger.info({'msg': 'Can deposit to module.', 'value': can_deposit}) + module_strategy = self._get_module_strategy(module_id) gas_is_ok = module_strategy.is_gas_price_ok() @@ -110,7 +113,7 @@ def _deposit_to_module(self, module_id: int) -> bool: keys_amount_is_profitable = module_strategy.is_deposited_keys_amount_ok() logger.info({'msg': 'Calculations deposit recommendations.', 'value': keys_amount_is_profitable}) - if is_depositable and quorum and gas_is_ok and keys_amount_is_profitable: + if is_depositable and quorum and can_deposit and gas_is_ok and keys_amount_is_profitable: logger.info({'msg': 'Checks passed. Prepare deposit tx.'}) return self._build_and_send_deposit_tx(quorum) diff --git a/tests/blockchain/deposit_strategy/test_get_prefered_module_to_deposit.py b/tests/blockchain/deposit_strategy/test_get_prefered_module_to_deposit.py index cc9eb5aa..6f2c417c 100644 --- a/tests/blockchain/deposit_strategy/test_get_prefered_module_to_deposit.py +++ b/tests/blockchain/deposit_strategy/test_get_prefered_module_to_deposit.py @@ -16,6 +16,7 @@ def test_get_preferred_to_deposit_module(web3_lido_unit): web3_lido_unit.lido.lido.get_depositable_ether = Mock(return_value=10 * 32 * 10 ** 18) web3_lido_unit.lido.staking_router.get_staking_module_ids = Mock(return_value=modules) web3_lido_unit.lido.staking_router.get_staking_module_max_deposits_count = Mock(return_value=0) + web3_lido_unit.lido.deposit_security_module.get_max_deposits = Mock(return_value=100) result = get_preferred_to_deposit_module(web3_lido_unit, modules[:-2]) @@ -32,10 +33,22 @@ def test_active_modules(web3_lido_unit): assert modules_list == [1, 3] +@pytest.mark.unit +def test_non_active_module(web3_lido_unit): + web3_lido_unit.lido.staking_router.get_staking_module_ids = Mock(return_value=[1, 2, 3, 4, 5, 6]) + web3_lido_unit.lido.staking_router.is_staking_module_active = lambda x: x % 4 + web3_lido_unit.lido.deposit_security_module.can_deposit = lambda x: x % 3 + + modules_list = get_active_modules(web3_lido_unit, [1, 2, 3, 4]) + + assert modules_list == [1, 2] + + @pytest.mark.unit def test_get_module_stats(web3_lido_unit): web3_lido_unit.lido.lido.get_depositable_ether = Mock(return_value=10 * 32 * 10 ** 18) web3_lido_unit.lido.staking_router.get_staking_module_max_deposits_count = lambda x, y: x % 3 + web3_lido_unit.lido.deposit_security_module.get_max_deposits = Mock(return_value=100) stats = get_modules_stats(web3_lido_unit, modules=list(range(8))) diff --git a/tests/fixtures/provider.py b/tests/fixtures/provider.py index 59e101f1..7c1087a3 100644 --- a/tests/fixtures/provider.py +++ b/tests/fixtures/provider.py @@ -57,8 +57,17 @@ def web3_provider_integration(): @pytest.fixture(scope="module") -def web3_with_dvt_module(web3_provider_integration): - port = urlparse(web3_provider_integration.provider._hosts_uri[0]).port +def web3_lido_integration(web3_provider_integration): + web3_provider_integration.attach_modules({ + 'lido': LidoContracts, + 'transaction': TransactionUtils, + }) + yield web3_provider_integration + + +@pytest.fixture(scope="module") +def web3_with_dvt_module(web3_lido_integration): + port = urlparse(web3_lido_integration.provider._hosts_uri[0]).port r1 = requests.post(CHRONIX_URL + 'v1/env/' + str(port) + '/simple-dvt/deploy/') @@ -82,7 +91,7 @@ def web3_with_dvt_module(web3_provider_integration): assert r3.status_code == 200 with open('interfaces/NodeOperatorRegistry.json', 'r') as f: - staking_module = web3_provider_integration.eth.contract( + staking_module = web3_lido_integration.eth.contract( r1.json()['data']['stakingRouterData']['stakingModules'][1]['stakingModuleAddress'], abi=json.loads(f.read()) ) @@ -91,16 +100,7 @@ def web3_with_dvt_module(web3_provider_integration): 'from': '0x2e59A20f205bB85a89C53f1936454680651E618e' }) - for _ in range(25): - web3_provider_integration.provider.make_request('hardhat_mine', []) + for _ in range(web3_lido_integration.lido.deposit_security_module.functions.getMinDepositBlockDistance().call()): + web3_lido_integration.provider.make_request('hardhat_mine', []) - yield web3_provider_integration - - -@pytest.fixture(scope="module") -def web3_lido_integration(web3_provider_integration): - web3_provider_integration.attach_modules({ - 'lido': LidoContracts, - 'transaction': TransactionUtils, - }) - yield web3_provider_integration + yield web3_lido_integration From 43495fee1f9ed8231720621bd2970e7b4169ead4 Mon Sep 17 00:00:00 2001 From: Raman Siamionau Date: Tue, 3 Oct 2023 11:03:22 +0200 Subject: [PATCH 37/42] & --- .github/workflows/tests_and_checks.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/tests_and_checks.yml b/.github/workflows/tests_and_checks.yml index 34df20b1..72438189 100644 --- a/.github/workflows/tests_and_checks.yml +++ b/.github/workflows/tests_and_checks.yml @@ -41,7 +41,7 @@ jobs: - name: Run chronix run: | - yarn chronix start + yarn chronix start & - name: Integration Tests with pytest run: | From 0675d93351e9c266424fa5a3e5cfbda7d54604ad Mon Sep 17 00:00:00 2001 From: F4ever <1590415904a@gmail.com> Date: Wed, 4 Oct 2023 14:27:42 +0200 Subject: [PATCH 38/42] remove hardhat conf --- hardhat.config.js | 15 --------------- tests/fixtures/provider.py | 2 ++ 2 files changed, 2 insertions(+), 15 deletions(-) delete mode 100644 hardhat.config.js diff --git a/hardhat.config.js b/hardhat.config.js deleted file mode 100644 index 37df865c..00000000 --- a/hardhat.config.js +++ /dev/null @@ -1,15 +0,0 @@ -/** @type import('hardhat/config').HardhatUserConfig */ -module.exports = { - solidity: "0.8.19", - networks: { - hardhat: { - mining: { - auto: true, - interval: 12000 - } - } - }, - localhost: { - timeout: 100_000 - }, -}; diff --git a/tests/fixtures/provider.py b/tests/fixtures/provider.py index 7c1087a3..588812b9 100644 --- a/tests/fixtures/provider.py +++ b/tests/fixtures/provider.py @@ -71,6 +71,7 @@ def web3_with_dvt_module(web3_lido_integration): r1 = requests.post(CHRONIX_URL + 'v1/env/' + str(port) + '/simple-dvt/deploy/') + print(r1.text) assert r1.status_code == 200 r2 = requests.post(CHRONIX_URL + 'v1/env/' + str(port) + '/simple-dvt/add-node-operator/', json={ @@ -79,6 +80,7 @@ def web3_with_dvt_module(web3_lido_integration): 'rewardAddress': '0x70997970C51812dc3A010C7d01b50e0d17dc79C8', }) + print(r2.text) assert r2.status_code == 200 r3 = requests.post(CHRONIX_URL + 'v1/env/' + str(port) + '/simple-dvt/add-node-operator-keys/', json={ From ccf2eb60a533eb3e3275d703c7176e1392797109 Mon Sep 17 00:00:00 2001 From: F4ever <1590415904a@gmail.com> Date: Fri, 6 Oct 2023 11:22:45 +0200 Subject: [PATCH 39/42] fix tests --- .../deposit_strategy/prefered_module_to_deposit.py | 4 +++- tests/bots/test_depositor.py | 1 + tests/fixtures/provider.py | 7 ++++++- 3 files changed, 10 insertions(+), 2 deletions(-) diff --git a/src/blockchain/deposit_strategy/prefered_module_to_deposit.py b/src/blockchain/deposit_strategy/prefered_module_to_deposit.py index e108fbd4..69bf2eb9 100644 --- a/src/blockchain/deposit_strategy/prefered_module_to_deposit.py +++ b/src/blockchain/deposit_strategy/prefered_module_to_deposit.py @@ -38,9 +38,11 @@ def get_active_modules(w3: Web3, whitelist_modules: list[int]) -> list[int]: def get_modules_stats(w3: Web3, modules: list[int]) -> list[tuple[int, int]]: depositable_ether = w3.lido.lido.get_depositable_ether() + max_deposits = w3.lido.deposit_security_module.get_max_deposits() + max_depositable_ether = min(max_deposits * 32 * 10**18, depositable_ether) module_stats = [( - w3.lido.staking_router.get_staking_module_max_deposits_count(module, depositable_ether), + w3.lido.staking_router.get_staking_module_max_deposits_count(module, max_depositable_ether), module, ) for module in modules ] diff --git a/tests/bots/test_depositor.py b/tests/bots/test_depositor.py index b355dae3..1e643551 100644 --- a/tests/bots/test_depositor.py +++ b/tests/bots/test_depositor.py @@ -55,6 +55,7 @@ def test_depositor_one_module_deposited(depositor_bot, block_data): depositor_bot.w3.lido.lido.get_depositable_ether = Mock(return_value=10 * 32 * 10 ** 18) depositor_bot.w3.lido.staking_router.get_staking_module_ids = Mock(return_value=modules) depositor_bot.w3.lido.staking_router.get_staking_module_max_deposits_count = Mock(return_value=0) + depositor_bot.w3.lido.deposit_security_module.get_max_deposits = Mock(return_value=10) depositor_bot._deposit_to_module = Mock(return_value=True) depositor_bot.execute(block_data) diff --git a/tests/fixtures/provider.py b/tests/fixtures/provider.py index 588812b9..84af5bd3 100644 --- a/tests/fixtures/provider.py +++ b/tests/fixtures/provider.py @@ -39,7 +39,12 @@ def web3_provider_integration(): 'fork': variables.WEB3_RPC_ENDPOINTS[0], 'mining': { 'auto': True, - 'interval': 12000 + 'interval': 12000, + }, + 'forking': { + # Is valid only for mainnet fork + 'url': variables.WEB3_RPC_ENDPOINTS[0], + 'blockNumber': 18275269, } }, headers={ From 0ca63f5c93d40889de597aced2f12ce0aea49652 Mon Sep 17 00:00:00 2001 From: F4ever <1590415904a@gmail.com> Date: Fri, 6 Oct 2023 16:03:09 +0200 Subject: [PATCH 40/42] add auction bundle relays --- .../web3_extentions/bundle/__init__.py | 28 ++ .../web3_extentions/bundle/middleware.py | 42 ++ .../web3_extentions/bundle/provider.py | 57 +++ .../web3_extentions/bundle/relay.py | 437 ++++++++++++++++++ .../web3_extentions/bundle/types.py | 88 ++++ src/blockchain/web3_extentions/transaction.py | 11 +- src/depositor.py | 5 +- src/variables.py | 3 + 8 files changed, 663 insertions(+), 8 deletions(-) create mode 100644 src/blockchain/web3_extentions/bundle/__init__.py create mode 100644 src/blockchain/web3_extentions/bundle/middleware.py create mode 100644 src/blockchain/web3_extentions/bundle/provider.py create mode 100644 src/blockchain/web3_extentions/bundle/relay.py create mode 100644 src/blockchain/web3_extentions/bundle/types.py diff --git a/src/blockchain/web3_extentions/bundle/__init__.py b/src/blockchain/web3_extentions/bundle/__init__.py new file mode 100644 index 00000000..7313bf70 --- /dev/null +++ b/src/blockchain/web3_extentions/bundle/__init__.py @@ -0,0 +1,28 @@ +from typing import Union + +from eth_account.signers.local import LocalAccount +from eth_typing import URI +from web3 import Web3 +from web3._utils.module import attach_modules + +from .middleware import construct_relay_middleware +from .provider import RelayProvider +from .relay import Relay + + +def activate_relay( + w3: Web3, + signature_account: LocalAccount, + endpoint_uris: list[Union[URI, str]] = None, +): + """ + Injects the flashbots module and middleware to w3. + """ + + relay_provider = RelayProvider(signature_account, endpoint_uris) + + relay_middleware = construct_relay_middleware(relay_provider) + w3.middleware_onion.add(relay_middleware) + + # attach modules to add the new namespace commands + attach_modules(w3, {"relay": (Relay,)}) diff --git a/src/blockchain/web3_extentions/bundle/middleware.py b/src/blockchain/web3_extentions/bundle/middleware.py new file mode 100644 index 00000000..5211fd7c --- /dev/null +++ b/src/blockchain/web3_extentions/bundle/middleware.py @@ -0,0 +1,42 @@ +from typing import Any +from typing import Callable + +from web3 import Web3 +from web3.middleware import Middleware +from web3.types import RPCEndpoint, RPCResponse + +from .provider import RelayProvider + +RELAY_METHODS = [ + "eth_sendBundle", + "eth_callBundle", + "eth_cancelBundle", + "eth_sendPrivateTransaction", + "eth_cancelPrivateTransaction", +] + + +def construct_relay_middleware( + relay_provider: RelayProvider, +) -> Middleware: + """Captures Flashbots RPC requests and sends them to the Flashbots endpoint + while also injecting the required authorization headers + + Keyword arguments: + flashbots_provider -- An HTTP provider instantiated with any authorization headers + required + """ + + def relay_middleware( + make_request: Callable[[RPCEndpoint, Any], Any], w3: Web3 + ) -> Callable[[RPCEndpoint, Any], RPCResponse]: + def middleware(method: RPCEndpoint, params: Any) -> RPCResponse: + if method not in RELAY_METHODS: + return make_request(method, params) + else: + # otherwise intercept it and POST it to all provided relays + return relay_provider.make_request(method, params, request_all=True) + + return middleware + + return relay_middleware diff --git a/src/blockchain/web3_extentions/bundle/provider.py b/src/blockchain/web3_extentions/bundle/provider.py new file mode 100644 index 00000000..ca5977a1 --- /dev/null +++ b/src/blockchain/web3_extentions/bundle/provider.py @@ -0,0 +1,57 @@ +import logging +from typing import Any, Union, Optional + +from eth_account import messages +from eth_account.signers.local import LocalAccount +from eth_typing import URI +from web3 import HTTPProvider +from web3 import Web3 +from web3._utils.request import make_post_request +from web3.types import RPCEndpoint, RPCResponse + +logger = logging.getLogger(__name__) + + +class RelayProvider(HTTPProvider): + def __init__( + self, + signature_account: LocalAccount, + endpoint_uris: list[Union[URI, str]] = None, + request_kwargs: Optional[Any] = None, + session: Optional[Any] = None, + ): + if not endpoint_uris: + raise ValueError('endpoint_uris should not be empty') + + self.endpoint_uris = endpoint_uris + + super().__init__(endpoint_uris[0], request_kwargs, session) + self.signature_account = signature_account + + def make_request(self, method: RPCEndpoint, params: Any, request_all: bool = False) -> RPCResponse: + self.logger.debug("Making request HTTP. URI: %s, Method: %s", self.endpoint_uri, method) + request_data = self.encode_rpc_request(method, params) + + message = messages.encode_defunct(text=Web3.keccak(text=request_data.decode("utf-8")).hex()) + signed_message = self.signature_account.sign_message(message) + + headers = self.get_request_headers() | { + "X-Flashbots-Signature": f"{self.signature_account.address}:{signed_message.signature.hex()}" + } + + if request_all: + for endpoint_uri in self.endpoint_uris: + raw_response = make_post_request(endpoint_uri, request_data, headers=headers) + else: + raw_response = make_post_request( + self.endpoint_uri, request_data, headers=headers + ) + + response = self.decode_rpc_response(raw_response) + self.logger.debug( + "Getting response HTTP. URI: %s, " "Method: %s, Response: %s", + self.endpoint_uri, + method, + response, + ) + return response diff --git a/src/blockchain/web3_extentions/bundle/relay.py b/src/blockchain/web3_extentions/bundle/relay.py new file mode 100644 index 00000000..c3f777f4 --- /dev/null +++ b/src/blockchain/web3_extentions/bundle/relay.py @@ -0,0 +1,437 @@ +import time +from functools import reduce +from typing import Any, Dict, List, Optional, Callable, Union + +import rlp +from eth_account import Account +from eth_account._utils.legacy_transactions import ( + Transaction, + encode_transaction, + serializable_unsigned_transaction_from_dict, +) +from eth_account._utils.typed_transactions import ( + AccessListTransaction, + DynamicFeeTransaction, +) +from eth_typing import HexStr +from hexbytes import HexBytes +from toolz import dissoc +from web3 import Web3 +from web3.exceptions import TransactionNotFound +from web3.method import Method +from web3.module import Module +from web3.types import RPCEndpoint, Nonce, TxParams + +from .types import ( + RelayOpts, + RelayBundleRawTx, + RelayBundleTx, + RelayBundleDictTx, + SignedTxAndHash, + TxReceipt, +) + +SECONDS_PER_BLOCK = 12 + + +class RelayRPC: + eth_sendBundle = RPCEndpoint("eth_sendBundle") + eth_callBundle = RPCEndpoint("eth_callBundle") + eth_cancelBundle = RPCEndpoint("eth_cancelBundle") + eth_sendPrivateTransaction = RPCEndpoint("eth_sendPrivateTransaction") + eth_cancelPrivateTransaction = RPCEndpoint("eth_cancelPrivateTransaction") + + +class RelayBundleResponse: + w3: Web3 + bundle: List[SignedTxAndHash] + target_block_number: int + + def __init__(self, w3: Web3, txs: List[HexBytes], target_block_number: int): + self.w3 = w3 + + def parse_tx(tx): + return { + "signed_transaction": tx, + "hash": self.w3.keccak(tx), + } + + self.bundle = list(map(parse_tx, txs)) + self.target_block_number = target_block_number + + def wait(self) -> None: + """Waits until the target block has been reached""" + while self.w3.eth.block_number < self.target_block_number: + time.sleep(1) + + def receipts(self) -> List[TxReceipt]: + """Returns all the transaction receipts from the submitted bundle""" + self.wait() + return list( + map(lambda tx: self.w3.eth.get_transaction_receipt(tx["hash"]), self.bundle) + ) + + def bundle_hash(self) -> str: + """Calculates bundle hash""" + concat_hashes = reduce( + lambda a, b: a + b, + map(lambda tx: tx["hash"], self.bundle), + ) + return self.w3.keccak(concat_hashes) + + +class RelayTransactionResponse: + w3: Web3 + tx: SignedTxAndHash + max_block_number: int + + def __init__(self, w3: Web3, signed_tx: HexBytes, max_block_number: int): + self.w3 = w3 + self.max_block_number = max_block_number + self.tx = { + "signed_transaction": signed_tx, + "hash": self.w3.sha3(signed_tx), + } + + def wait(self) -> bool: + """Waits up to max block number, returns `True` if/when tx has been mined. + + If tx has not been mined by the time the current block > max_block_number, returns `False`.""" + while True: + try: + self.w3.eth.get_transaction(self.tx["hash"]) + return True + except TransactionNotFound: + if self.w3.eth.block_number > self.max_block_number: + return False + time.sleep(1) + + def receipt(self) -> Optional[TxReceipt]: + """Gets private tx receipt if tx has been mined. If tx is not mined within `max_block_number` period, returns None.""" + if self.wait(): + return self.w3.eth.get_transaction_receipt(self.tx["hash"]) + else: + return None + + +class Relay(Module): + signed_txs: List[HexBytes] + response: Union[RelayBundleResponse, RelayTransactionResponse] + + def sign_bundle( + self, + bundled_transactions: List[ + Union[RelayBundleTx, RelayBundleRawTx, RelayBundleDictTx] + ], + ) -> List[HexBytes]: + """Given a bundle of signed and unsigned transactions, it signs them all""" + nonces: Dict[HexStr, Nonce] = {} + signed_transactions: List[HexBytes] = [] + + for tx in bundled_transactions: + if "signed_transaction" in tx: # FlashbotsBundleRawTx + tx_params = _parse_signed_tx(tx["signed_transaction"]) + nonces[tx_params["from"]] = tx_params["nonce"] + 1 + signed_transactions.append(tx["signed_transaction"]) + + elif "signer" in tx: # FlashbotsBundleTx + signer, tx = tx["signer"], tx["transaction"] + tx["from"] = signer.address + + if tx.get("nonce") is None: + tx["nonce"] = nonces.get( + signer.address, + self.w3.eth.get_transaction_count(signer.address), + ) + nonces[signer.address] = tx["nonce"] + 1 + + if "gas" not in tx: + tx["gas"] = self.w3.eth.estimate_gas(tx) + + signed_tx = signer.sign_transaction(tx) + signed_transactions.append(signed_tx.rawTransaction) + + elif all(key in tx for key in ["v", "r", "s"]): # FlashbotsBundleDictTx + v, r, s = ( + tx["v"], + int(tx["r"].hex(), base=16), + int(tx["s"].hex(), base=16), + ) + + tx_dict = { + "nonce": tx["nonce"], + "data": HexBytes(tx["input"]), + "value": tx["value"], + "gas": tx["gas"], + } + + if "maxFeePerGas" in tx or "maxPriorityFeePerGas" in tx: + assert "maxFeePerGas" in tx and "maxPriorityFeePerGas" in tx + tx_dict["maxFeePerGas"], tx_dict["maxPriorityFeePerGas"] = ( + tx["maxFeePerGas"], + tx["maxPriorityFeePerGas"], + ) + else: + assert "gasPrice" in tx + tx_dict["gasPrice"] = tx["gasPrice"] + + if tx.get("accessList"): + tx_dict["accessList"] = tx["accessList"] + + if tx.get("chainId"): + tx_dict["chainId"] = tx["chainId"] + + if tx.get("to"): + tx_dict["to"] = HexBytes(tx["to"]) + + unsigned_tx = serializable_unsigned_transaction_from_dict(tx_dict) + raw = encode_transaction(unsigned_tx, vrs=(v, r, s)) + assert self.w3.keccak(raw) == tx["hash"] + signed_transactions.append(raw) + + return signed_transactions + + def to_hex(self, signed_transaction: bytes) -> str: + tx_hex = signed_transaction.hex() + if tx_hex[0:2] != "0x": + tx_hex = f"0x{tx_hex}" + return tx_hex + + def send_raw_bundle_munger( + self, + signed_bundled_transactions: List[HexBytes], + target_block_number: int, + opts: Optional[RelayOpts] = None, + ) -> List[Any]: + """Given a raw signed bundle, it packages it up with the block number and the timestamps""" + + if opts is None: + opts = {} + + # convert to hex + return [ + { + "txs": list(map(lambda x: self.to_hex(x), signed_bundled_transactions)), + "blockNumber": hex(target_block_number), + "minTimestamp": opts["minTimestamp"] if "minTimestamp" in opts else 0, + "maxTimestamp": opts["maxTimestamp"] if "maxTimestamp" in opts else 0, + "revertingTxHashes": opts["revertingTxHashes"] + if "revertingTxHashes" in opts + else [], + "replacementUuid": opts["replacementUuid"] + if "replacementUuid" in opts + else None, + } + ] + + sendRawBundle: Method[Callable[[Any], Any]] = Method( + RelayRPC.eth_sendBundle, mungers=[send_raw_bundle_munger] + ) + send_raw_bundle = sendRawBundle + + def send_bundle_munger( + self, + bundled_transactions: List[Union[RelayBundleTx, RelayBundleRawTx]], + target_block_number: int, + opts: Optional[RelayOpts] = None, + ) -> List[Any]: + signed_txs = self.sign_bundle(bundled_transactions) + self.response = RelayBundleResponse( + self.w3, signed_txs, target_block_number + ) + return self.send_raw_bundle_munger(signed_txs, target_block_number, opts) + + def raw_bundle_formatter(self, resp) -> Any: + return lambda _: resp.response + + sendBundle: Method[Callable[[Any], Any]] = Method( + RelayRPC.eth_sendBundle, + mungers=[send_bundle_munger], + result_formatters=raw_bundle_formatter, + ) + send_bundle = sendBundle + + def cancel_bundles_munger( + self, + replacement_uuid: str, + ) -> List[Any]: + return [ + { + "replacementUuid": replacement_uuid, + } + ] + + def cancel_bundle_formatter(self, resp) -> Any: + return lambda res: {"bundleHashes": res} + + cancelBundles: Method[Callable[[Any], Any]] = Method( + RelayRPC.eth_cancelBundle, + mungers=[cancel_bundles_munger], + result_formatters=cancel_bundle_formatter, + ) + cancel_bundles = cancelBundles + + def simulate( + self, + bundled_transactions: List[Union[RelayBundleTx, RelayBundleRawTx]], + block_tag: Union[int, str] = None, + state_block_tag: int = None, + block_timestamp: int = None, + ): + # interpret block number from tag + block_number = ( + self.w3.eth.block_number + if block_tag is None or block_tag == "latest" + else block_tag + ) + + # sets evm params + evm_block_number = self.w3.to_hex(block_number) + evm_block_state_number = ( + self.w3.to_hex(state_block_tag) + if state_block_tag is not None + else self.w3.to_hex(block_number - 1) + ) + evm_timestamp = ( + block_timestamp + if block_timestamp is not None + else self.extrapolate_timestamp(block_number, self.w3.eth.block_number) + ) + + signed_bundled_transactions = self.sign_bundle(bundled_transactions) + # calls evm simulator + call_result = self.call_bundle( + signed_bundled_transactions, + evm_block_number, + evm_block_state_number, + evm_timestamp, + ) + + return { + "bundleHash": call_result["bundleHash"], + "coinbaseDiff": call_result["coinbaseDiff"], + "results": call_result["results"], + "signedBundledTransactions": signed_bundled_transactions, + "totalGasUsed": reduce( + lambda a, b: a + b["gasUsed"], call_result["results"], 0 + ), + } + + def extrapolate_timestamp(self, block_tag: int, latest_block_number: int): + block_delta = block_tag - latest_block_number + if block_delta < 0: + raise Exception("block extrapolation negative") + return self.w3.eth.get_block(latest_block_number)["timestamp"] + ( + block_delta * SECONDS_PER_BLOCK + ) + + def call_bundle_munger( + self, + signed_bundled_transactions: List[ + Union[RelayBundleTx, RelayBundleRawTx] + ], + evm_block_number, + evm_block_state_number, + evm_timestamp, + opts: Optional[RelayOpts] = None, + ) -> Any: + """Given a raw signed bundle, it packages it up with the block number and the timestamps""" + inpt = [ + { + "txs": list(map(lambda x: x.hex(), signed_bundled_transactions)), + "blockNumber": evm_block_number, + "stateBlockNumber": evm_block_state_number, + "timestamp": evm_timestamp, + } + ] + return inpt + + call_bundle: Method[Callable[[Any], Any]] = Method( + json_rpc_method=RelayRPC.eth_callBundle, mungers=[call_bundle_munger] + ) + + def get_user_stats_munger(self) -> List: + return [{"blockNumber": hex(self.w3.eth.block_number)}] + + # sends private transaction + # returns tx hash + def send_private_transaction_munger( + self, + transaction: Union[RelayBundleTx, RelayBundleRawTx], + max_block_number: Optional[int] = None, + ) -> Any: + """Sends a single transaction to Flashbots. + + If `max_block_number` is set, Flashbots will try to submit the transaction in every block <= that block (max 25 blocks from present).""" + signed_transaction: str + if "signed_transaction" in transaction: + signed_transaction = transaction["signed_transaction"] + else: + signed_transaction = ( + transaction["signer"] + .sign_transaction(transaction["transaction"]) + .rawTransaction + ) + if max_block_number is None: + # get current block num, add 25 + current_block = self.web3.eth.block_number + max_block_number = current_block + 25 + params = { + "tx": self.to_hex(signed_transaction), + "maxBlockNumber": max_block_number, + } + self.response = RelayTransactionResponse( + self.web3, signed_transaction, max_block_number + ) + return [params] + + sendPrivateTransaction: Method[Callable[[Any], Any]] = Method( + json_rpc_method=RelayRPC.eth_sendPrivateTransaction, + mungers=[send_private_transaction_munger], + result_formatters=raw_bundle_formatter, + ) + send_private_transaction = sendPrivateTransaction + + # cancels private tx given pending private tx hash + # returns True if successful, False otherwise + def cancel_private_transaction_munger( + self, + tx_hash: str, + ) -> bool: + """Stops a private transaction from being sent to miners by Flashbots. + + Note: if a transaction has already been received by a miner, it may still be mined. This simply stops further submissions.""" + params = { + "txHash": tx_hash, + } + return [params] + + cancelPrivateTransaction: Method[Callable[[Any], Any]] = Method( + json_rpc_method=RelayRPC.eth_cancelPrivateTransaction, + mungers=[cancel_private_transaction_munger], + ) + cancel_private_transaction = cancelPrivateTransaction + + +def _parse_signed_tx(signed_tx: HexBytes) -> TxParams: + # decode tx params based on its type + tx_type = signed_tx[0] + if tx_type > int("0x7f", 16): + # legacy and EIP-155 transactions + decoded_tx = rlp.decode(signed_tx, Transaction).as_dict() + else: + # typed transactions (EIP-2718) + if tx_type == 1: + # EIP-2930 + sedes = AccessListTransaction._signed_transaction_serializer + elif tx_type == 2: + # EIP-1559 + sedes = DynamicFeeTransaction._signed_transaction_serializer + else: + raise ValueError(f"Unknown transaction type: {tx_type}.") + decoded_tx = rlp.decode(signed_tx[1:], sedes).as_dict() + + # recover sender address and remove signature fields + decoded_tx["from"] = Account.recover_transaction(signed_tx) + decoded_tx = dissoc(decoded_tx, "v", "r", "s") + return decoded_tx diff --git a/src/blockchain/web3_extentions/bundle/types.py b/src/blockchain/web3_extentions/bundle/types.py new file mode 100644 index 00000000..4b20b009 --- /dev/null +++ b/src/blockchain/web3_extentions/bundle/types.py @@ -0,0 +1,88 @@ +from typing import TypedDict, List, Union, Optional + +from eth_account.signers.local import LocalAccount +from eth_typing import HexStr +from hexbytes import HexBytes +from web3.types import TxParams, Hash32 + +# unsigned transaction +RelayBundleTx = TypedDict( + "RelayBundleTx", + { + "transaction": TxParams, + "signer": LocalAccount, + }, +) + +# signed transaction +RelayBundleRawTx = TypedDict( + "RelayBundleRawTx", + { + "signed_transaction": HexBytes, + }, +) + +# transaction dict taken from w3.eth.get_block('pending', full_transactions=True) +RelayBundleDictTx = TypedDict( + "RelayBundleDictTx", + { + "accessList": list, + "blockHash": HexBytes, + "blockNumber": int, + "chainId": str, + "from": str, + "gas": int, + "gasPrice": int, + "maxFeePerGas": int, + "maxPriorityFeePerGas": int, + "hash": HexBytes, + "input": str, + "nonce": int, + "r": HexBytes, + "s": HexBytes, + "to": str, + "transactionIndex": int, + "type": str, + "v": int, + "value": int, + }, + total=False, +) + +RelayOpts = TypedDict( + "RelayOpts", + { + "minTimestamp": Optional[int], + "maxTimestamp": Optional[int], + "revertingTxHashes": Optional[List[str]], + "replacementUuid": Optional[str], + }, +) + + +# Type missing from eth_account, not really a part of flashbots web3 per sé +SignTx = TypedDict( + "SignTx", + { + "nonce": int, + "chainId": int, + "to": str, + "data": str, + "value": int, + "gas": int, + "gasPrice": int, + }, + total=False, +) + +# type alias +TxReceipt = Union[Hash32, HexBytes, HexStr] + +# response from bundle or private tx submission +SignedTxAndHash = TypedDict( + "SignedTxAndHash", + { + "signed_transaction": str, + "hash": HexBytes, + }, +) diff --git a/src/blockchain/web3_extentions/transaction.py b/src/blockchain/web3_extentions/transaction.py index 21d94fc2..dd184346 100644 --- a/src/blockchain/web3_extentions/transaction.py +++ b/src/blockchain/web3_extentions/transaction.py @@ -29,7 +29,7 @@ def check(transaction: ContractCaller) -> bool: def send( self, transaction: ContractCaller, - use_flashbots: bool, + use_relay: bool, timeout_in_blocks: int, ) -> bool: if not variables.ACCOUNT: @@ -61,9 +61,8 @@ def send( signed = self.w3.eth.account.sign_transaction(transaction_dict, variables.ACCOUNT._private_key) - # TODO try to deposit with other relays - if use_flashbots and getattr(self.w3, 'flashbots', None): - status = self.flashbots_send(signed, pending['number'], timeout_in_blocks) + if use_relay and getattr(self.w3, 'relay', None): + status = self.relay_send(signed, pending['number'], timeout_in_blocks) else: status = self.classic_send(signed, timeout_in_blocks) @@ -92,14 +91,14 @@ def _estimate_gas(transaction: ContractCaller, account_address: ChecksumAddress) int(gas * 1.3), ) - def flashbots_send( + def relay_send( self, signed_tx: SignedTransaction, pending_block_num: int, timeout_in_blocks: int, ) -> bool: for i in range(timeout_in_blocks): - result = self.w3.flashbots.send_bundle( + result = self.w3.relay.send_bundle( [{"signed_transaction": signed_tx.rawTransaction}], pending_block_num + i ) diff --git a/src/depositor.py b/src/depositor.py index 685ed439..8f66c5f3 100644 --- a/src/depositor.py +++ b/src/depositor.py @@ -5,6 +5,7 @@ import variables from blockchain.executor import Executor +from blockchain.web3_extentions.bundle import activate_relay from blockchain.web3_extentions.lido_contracts import LidoContracts from blockchain.web3_extentions.requests_metric_middleware import add_requests_metric_middleware from blockchain.web3_extentions.transaction import TransactionUtils @@ -49,8 +50,8 @@ def main(): }) if variables.FLASHBOT_SIGNATURE and variables.FLASHBOTS_RPC: - logger.info({'msg': 'Add flashbots middleware.'}) - flashbot(w3, w3.eth.account.from_key(variables.FLASHBOT_SIGNATURE), variables.FLASHBOTS_RPC) + logger.info({'msg': 'Add private relays.'}) + activate_relay(w3, variables.FLASHBOT_SIGNATURE, [variables.FLASHBOTS_RPC]) else: logger.info({'msg': 'No flashbots available for this network.'}) diff --git a/src/variables.py b/src/variables.py index 253b968a..ecd48d9f 100644 --- a/src/variables.py +++ b/src/variables.py @@ -60,7 +60,10 @@ # Mainnet: "https://relay.flashbots.net", # Görli: "https://relay-goerli.flashbots.net", FLASHBOTS_RPC = os.getenv('FLASHBOTS_RPC', None) +AUCTION_BUNDLER_URIS = os.getenv('AUCTION_BUNDLER_URIS', FLASHBOTS_RPC).split(',') + FLASHBOT_SIGNATURE = os.getenv('FLASHBOT_SIGNATURE', None) +AUCTION_BUNDLER_PRIVATE_KEY = os.getenv('AUCTION_BUNDLER_PRIVATE_KEY', FLASHBOT_SIGNATURE) # Curated module strategy GAS_FEE_PERCENTILE_1: int = int(os.getenv('GAS_FEE_PERCENTILE_1', 20)) From 29278277b5d8ed4c6728b30968bec7f6ba5b1073 Mon Sep 17 00:00:00 2001 From: F4ever <1590415904a@gmail.com> Date: Fri, 6 Oct 2023 20:09:02 +0200 Subject: [PATCH 41/42] check tests --- tests/fixtures/provider.py | 1 + 1 file changed, 1 insertion(+) diff --git a/tests/fixtures/provider.py b/tests/fixtures/provider.py index 84af5bd3..c7eda6aa 100644 --- a/tests/fixtures/provider.py +++ b/tests/fixtures/provider.py @@ -52,6 +52,7 @@ def web3_provider_integration(): }, ) + print(response.text) port = response.json()['data']['port'] yield Web3(FallbackProvider([f'http://0.0.0.0:{port}/'], request_kwargs={'timeout': 3600})) From 6693ae7e5740c4739bcda6898cd0e7d8bd516598 Mon Sep 17 00:00:00 2001 From: F4ever <1590415904a@gmail.com> Date: Tue, 10 Oct 2023 02:05:08 +0200 Subject: [PATCH 42/42] fix tests --- src/variables.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/variables.py b/src/variables.py index ecd48d9f..309851b1 100644 --- a/src/variables.py +++ b/src/variables.py @@ -59,7 +59,7 @@ # FLASHBOTS_RPC URL # Mainnet: "https://relay.flashbots.net", # Görli: "https://relay-goerli.flashbots.net", -FLASHBOTS_RPC = os.getenv('FLASHBOTS_RPC', None) +FLASHBOTS_RPC = os.getenv('FLASHBOTS_RPC', '') AUCTION_BUNDLER_URIS = os.getenv('AUCTION_BUNDLER_URIS', FLASHBOTS_RPC).split(',') FLASHBOT_SIGNATURE = os.getenv('FLASHBOT_SIGNATURE', None)