@aztec/end-to-end 0.0.1-commit.b655e406 → 0.0.1-commit.b8a057fa
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +217 -14
- package/dest/automine/automine_test_context.d.ts +85 -0
- package/dest/automine/automine_test_context.d.ts.map +1 -0
- package/dest/automine/automine_test_context.js +98 -0
- package/dest/automine/contracts/fixtures/storage_proof_fetcher.d.ts +2 -0
- package/dest/automine/contracts/fixtures/storage_proof_fetcher.d.ts.map +1 -0
- package/dest/automine/contracts/fixtures/storage_proof_fetcher.js +184 -0
- package/dest/automine/contracts/fixtures/storage_proof_fixture.d.ts +18 -0
- package/dest/automine/contracts/fixtures/storage_proof_fixture.d.ts.map +1 -0
- package/dest/automine/contracts/fixtures/storage_proof_fixture.js +120 -0
- package/dest/automine/delivery/onchain_delivery_harness.d.ts +17 -0
- package/dest/automine/delivery/onchain_delivery_harness.d.ts.map +1 -0
- package/dest/automine/delivery/onchain_delivery_harness.js +123 -0
- package/dest/automine/token/blacklist_token_contract_test.d.ts +49 -0
- package/dest/automine/token/blacklist_token_contract_test.d.ts.map +1 -0
- package/dest/automine/token/blacklist_token_contract_test.js +166 -0
- package/dest/automine/token/token_contract_test.d.ts +40 -0
- package/dest/automine/token/token_contract_test.d.ts.map +1 -0
- package/dest/automine/token/token_contract_test.js +119 -0
- package/dest/automine/token/token_test_helpers.d.ts +73 -0
- package/dest/automine/token/token_test_helpers.d.ts.map +1 -0
- package/dest/automine/token/token_test_helpers.js +97 -0
- package/dest/bench/client_flows/benchmark.d.ts +17 -2
- package/dest/bench/client_flows/benchmark.d.ts.map +1 -1
- package/dest/bench/client_flows/benchmark.js +40 -1
- package/dest/bench/client_flows/client_flows_benchmark.d.ts +26 -20
- package/dest/bench/client_flows/client_flows_benchmark.d.ts.map +1 -1
- package/dest/bench/client_flows/client_flows_benchmark.js +159 -140
- package/dest/bench/client_flows/config.d.ts +2 -2
- package/dest/bench/client_flows/config.d.ts.map +1 -1
- package/dest/bench/client_flows/config.js +18 -0
- package/dest/bench/client_flows/data_extractor.d.ts +1 -1
- package/dest/bench/client_flows/data_extractor.js +8 -27
- package/dest/bench/utils.d.ts +10 -9
- package/dest/bench/utils.d.ts.map +1 -1
- package/dest/bench/utils.js +126 -23
- package/dest/composed/ha/ha_full_setup.d.ts +77 -0
- package/dest/composed/ha/ha_full_setup.d.ts.map +1 -0
- package/dest/composed/ha/ha_full_setup.js +383 -0
- package/dest/composed/web3signer/multi_validator_keystore_utils.d.ts +12 -0
- package/dest/composed/web3signer/multi_validator_keystore_utils.d.ts.map +1 -0
- package/dest/{e2e_multi_validator/utils.js → composed/web3signer/multi_validator_keystore_utils.js} +1 -1
- package/dest/fixtures/authwit_proxy.d.ts +15 -0
- package/dest/fixtures/authwit_proxy.d.ts.map +1 -0
- package/dest/fixtures/authwit_proxy.js +34 -0
- package/dest/fixtures/e2e_prover_test.d.ts +27 -29
- package/dest/fixtures/e2e_prover_test.d.ts.map +1 -1
- package/dest/fixtures/e2e_prover_test.js +156 -156
- package/dest/fixtures/elu_monitor.d.ts +21 -0
- package/dest/fixtures/elu_monitor.d.ts.map +1 -0
- package/dest/fixtures/elu_monitor.js +102 -0
- package/dest/fixtures/fixtures.d.ts +83 -3
- package/dest/fixtures/fixtures.d.ts.map +1 -1
- package/dest/fixtures/fixtures.js +86 -3
- package/dest/fixtures/get_acvm_config.d.ts +1 -1
- package/dest/fixtures/get_acvm_config.js +1 -1
- package/dest/fixtures/get_bb_config.d.ts +1 -1
- package/dest/fixtures/get_bb_config.d.ts.map +1 -1
- package/dest/fixtures/get_bb_config.js +5 -5
- package/dest/fixtures/ha_setup.d.ts +71 -0
- package/dest/fixtures/ha_setup.d.ts.map +1 -0
- package/dest/fixtures/ha_setup.js +119 -0
- package/dest/fixtures/index.d.ts +3 -1
- package/dest/fixtures/index.d.ts.map +1 -1
- package/dest/fixtures/index.js +2 -0
- package/dest/fixtures/l1_to_l2_messaging.d.ts +4 -3
- package/dest/fixtures/l1_to_l2_messaging.d.ts.map +1 -1
- package/dest/fixtures/l1_to_l2_messaging.js +2 -2
- package/dest/fixtures/logging.d.ts +1 -1
- package/dest/fixtures/schnorr_hardcoded_account_contract.d.ts +25 -0
- package/dest/fixtures/schnorr_hardcoded_account_contract.d.ts.map +1 -0
- package/dest/fixtures/schnorr_hardcoded_account_contract.js +37 -0
- package/dest/fixtures/setup.d.ts +269 -0
- package/dest/fixtures/setup.d.ts.map +1 -0
- package/dest/fixtures/setup.js +688 -0
- package/dest/fixtures/setup_p2p_test.d.ts +22 -11
- package/dest/fixtures/setup_p2p_test.d.ts.map +1 -1
- package/dest/fixtures/setup_p2p_test.js +60 -41
- package/dest/fixtures/timing.d.ts +42 -0
- package/dest/fixtures/timing.d.ts.map +1 -0
- package/dest/fixtures/timing.js +72 -0
- package/dest/fixtures/token_utils.d.ts +26 -5
- package/dest/fixtures/token_utils.d.ts.map +1 -1
- package/dest/fixtures/token_utils.js +33 -9
- package/dest/fixtures/utils.d.ts +5 -192
- package/dest/fixtures/utils.d.ts.map +1 -1
- package/dest/fixtures/utils.js +4 -648
- package/dest/fixtures/wait_helpers.d.ts +135 -0
- package/dest/fixtures/wait_helpers.d.ts.map +1 -0
- package/dest/fixtures/wait_helpers.js +154 -0
- package/dest/fixtures/web3signer.d.ts +1 -1
- package/dest/fixtures/web3signer.js +1 -1
- package/dest/fixtures/with_telemetry_utils.d.ts +2 -2
- package/dest/fixtures/with_telemetry_utils.d.ts.map +1 -1
- package/dest/fixtures/with_telemetry_utils.js +2 -2
- package/dest/forward-compatibility/wallet_rpc_client.d.ts +7 -0
- package/dest/forward-compatibility/wallet_rpc_client.d.ts.map +1 -0
- package/dest/forward-compatibility/wallet_rpc_client.js +15 -0
- package/dest/forward-compatibility/wallet_service.d.ts +3 -0
- package/dest/forward-compatibility/wallet_service.d.ts.map +1 -0
- package/dest/forward-compatibility/wallet_service.js +109 -0
- package/dest/index.d.ts +1 -1
- package/dest/install_legacy_contracts.d.cts +10 -0
- package/dest/install_legacy_contracts.d.cts.map +1 -0
- package/dest/legacy-jest-resolver.d.cts +3 -0
- package/dest/legacy-jest-resolver.d.cts.map +1 -0
- package/dest/multi-node/block-production/setup.d.ts +97 -0
- package/dest/multi-node/block-production/setup.d.ts.map +1 -0
- package/dest/multi-node/block-production/setup.js +158 -0
- package/dest/multi-node/governance/setup.d.ts +67 -0
- package/dest/multi-node/governance/setup.d.ts.map +1 -0
- package/dest/multi-node/governance/setup.js +126 -0
- package/dest/multi-node/multi_node_test_context.d.ts +212 -0
- package/dest/multi-node/multi_node_test_context.d.ts.map +1 -0
- package/dest/multi-node/multi_node_test_context.js +347 -0
- package/dest/multi-node/slashing/inactivity_setup.d.ts +27 -0
- package/dest/multi-node/slashing/inactivity_setup.d.ts.map +1 -0
- package/dest/multi-node/slashing/inactivity_setup.js +111 -0
- package/dest/multi-node/slashing/setup.d.ts +167 -0
- package/dest/multi-node/slashing/setup.d.ts.map +1 -0
- package/dest/multi-node/slashing/setup.js +275 -0
- package/dest/p2p/p2p_network.d.ts +325 -0
- package/dest/p2p/p2p_network.d.ts.map +1 -0
- package/dest/p2p/p2p_network.js +389 -0
- package/dest/p2p/reqresp/utils.d.ts +19 -0
- package/dest/p2p/reqresp/utils.d.ts.map +1 -0
- package/dest/p2p/reqresp/utils.js +193 -0
- package/dest/p2p/shared.d.ts +72 -0
- package/dest/p2p/shared.d.ts.map +1 -0
- package/dest/p2p/shared.js +212 -0
- package/dest/quality_of_service/grafana_client.d.ts +41 -0
- package/dest/quality_of_service/grafana_client.d.ts.map +1 -0
- package/dest/quality_of_service/{alert_checker.js → grafana_client.js} +1 -1
- package/dest/quality_of_service/prometheus_client.d.ts +38 -0
- package/dest/quality_of_service/prometheus_client.d.ts.map +1 -0
- package/dest/quality_of_service/prometheus_client.js +67 -0
- package/dest/shared/cross_chain_test_harness.d.ts +11 -8
- package/dest/shared/cross_chain_test_harness.d.ts.map +1 -1
- package/dest/shared/cross_chain_test_harness.js +45 -40
- package/dest/shared/gas_portal_test_harness.d.ts +9 -6
- package/dest/shared/gas_portal_test_harness.d.ts.map +1 -1
- package/dest/shared/gas_portal_test_harness.js +28 -16
- package/dest/shared/index.d.ts +3 -2
- package/dest/shared/index.d.ts.map +1 -1
- package/dest/shared/index.js +1 -0
- package/dest/shared/jest_setup.d.ts +1 -1
- package/dest/shared/jest_setup.js +41 -1
- package/dest/shared/mock_state_view.d.ts +86 -0
- package/dest/shared/mock_state_view.d.ts.map +1 -0
- package/dest/shared/mock_state_view.js +186 -0
- package/dest/shared/submit-transactions.d.ts +4 -4
- package/dest/shared/submit-transactions.d.ts.map +1 -1
- package/dest/shared/submit-transactions.js +19 -14
- package/dest/shared/timing_env.d.js +5 -0
- package/dest/shared/timing_env.js +365 -0
- package/dest/shared/uniswap_l1_l2.d.ts +3 -27
- package/dest/shared/uniswap_l1_l2.d.ts.map +1 -1
- package/dest/shared/uniswap_l1_l2.js +86 -54
- package/dest/shared/wait_for_l1_to_l2_message.d.ts +13 -0
- package/dest/shared/wait_for_l1_to_l2_message.d.ts.map +1 -0
- package/dest/shared/wait_for_l1_to_l2_message.js +10 -0
- package/dest/simulators/index.d.ts +1 -1
- package/dest/simulators/lending_simulator.d.ts +11 -4
- package/dest/simulators/lending_simulator.d.ts.map +1 -1
- package/dest/simulators/lending_simulator.js +33 -19
- package/dest/simulators/token_simulator.d.ts +1 -1
- package/dest/simulators/token_simulator.d.ts.map +1 -1
- package/dest/simulators/token_simulator.js +3 -24
- package/dest/single-node/cross-chain/cross_chain_messaging_test.d.ts +75 -0
- package/dest/single-node/cross-chain/cross_chain_messaging_test.d.ts.map +1 -0
- package/dest/single-node/cross-chain/cross_chain_messaging_test.js +209 -0
- package/dest/single-node/cross-chain/message_test_helpers.d.ts +38 -0
- package/dest/single-node/cross-chain/message_test_helpers.d.ts.map +1 -0
- package/dest/single-node/cross-chain/message_test_helpers.js +70 -0
- package/dest/single-node/fees/bridging_race.notest.d.ts +2 -0
- package/dest/single-node/fees/bridging_race.notest.d.ts.map +1 -0
- package/dest/{e2e_fees → single-node/fees}/bridging_race.notest.js +21 -10
- package/dest/single-node/fees/fees_test.d.ts +93 -0
- package/dest/single-node/fees/fees_test.d.ts.map +1 -0
- package/dest/single-node/fees/fees_test.js +274 -0
- package/dest/single-node/l1-reorgs/setup.d.ts +42 -0
- package/dest/single-node/l1-reorgs/setup.d.ts.map +1 -0
- package/dest/single-node/l1-reorgs/setup.js +57 -0
- package/dest/single-node/partial-proofs/setup.d.ts +5 -0
- package/dest/single-node/partial-proofs/setup.d.ts.map +1 -0
- package/dest/single-node/partial-proofs/setup.js +5 -0
- package/dest/single-node/proving/setup.d.ts +5 -0
- package/dest/single-node/proving/setup.d.ts.map +1 -0
- package/dest/single-node/proving/setup.js +5 -0
- package/dest/single-node/recovery/setup.d.ts +5 -0
- package/dest/single-node/recovery/setup.d.ts.map +1 -0
- package/dest/single-node/recovery/setup.js +5 -0
- package/dest/single-node/setup.d.ts +49 -0
- package/dest/single-node/setup.d.ts.map +1 -0
- package/dest/single-node/setup.js +56 -0
- package/dest/single-node/single_node_test_context.d.ts +360 -0
- package/dest/single-node/single_node_test_context.d.ts.map +1 -0
- package/dest/single-node/single_node_test_context.js +833 -0
- package/dest/spartan/setup_test_wallets.d.ts +18 -6
- package/dest/spartan/setup_test_wallets.d.ts.map +1 -1
- package/dest/spartan/setup_test_wallets.js +169 -30
- package/dest/spartan/tx_metrics.d.ts +111 -0
- package/dest/spartan/tx_metrics.d.ts.map +1 -0
- package/dest/spartan/tx_metrics.js +507 -0
- package/dest/spartan/utils/bot.d.ts +28 -0
- package/dest/spartan/utils/bot.d.ts.map +1 -0
- package/dest/spartan/utils/bot.js +142 -0
- package/dest/spartan/utils/chaos.d.ts +79 -0
- package/dest/spartan/utils/chaos.d.ts.map +1 -0
- package/dest/spartan/utils/chaos.js +142 -0
- package/dest/spartan/utils/clients.d.ts +39 -0
- package/dest/spartan/utils/clients.d.ts.map +1 -0
- package/dest/spartan/utils/clients.js +90 -0
- package/dest/spartan/utils/config.d.ts +19 -0
- package/dest/spartan/utils/config.d.ts.map +1 -0
- package/dest/spartan/utils/config.js +23 -0
- package/dest/spartan/utils/health.d.ts +63 -0
- package/dest/spartan/utils/health.d.ts.map +1 -0
- package/dest/spartan/utils/health.js +202 -0
- package/dest/spartan/utils/helm.d.ts +15 -0
- package/dest/spartan/utils/helm.d.ts.map +1 -0
- package/dest/spartan/utils/helm.js +47 -0
- package/dest/spartan/utils/index.d.ts +11 -0
- package/dest/spartan/utils/index.d.ts.map +1 -0
- package/dest/spartan/utils/index.js +22 -0
- package/dest/spartan/utils/k8s.d.ts +128 -0
- package/dest/spartan/utils/k8s.d.ts.map +1 -0
- package/dest/spartan/utils/k8s.js +381 -0
- package/dest/spartan/utils/nodes.d.ts +40 -0
- package/dest/spartan/utils/nodes.d.ts.map +1 -0
- package/dest/spartan/utils/nodes.js +461 -0
- package/dest/spartan/utils/pod_logs.d.ts +25 -0
- package/dest/spartan/utils/pod_logs.d.ts.map +1 -0
- package/dest/spartan/utils/pod_logs.js +74 -0
- package/dest/spartan/utils/scripts.d.ts +30 -0
- package/dest/spartan/utils/scripts.d.ts.map +1 -0
- package/dest/spartan/utils/scripts.js +81 -0
- package/dest/spartan/utils.d.ts +2 -218
- package/dest/spartan/utils.d.ts.map +1 -1
- package/dest/spartan/utils.js +1 -749
- package/dest/test-wallet/test_wallet.d.ts +105 -0
- package/dest/test-wallet/test_wallet.d.ts.map +1 -0
- package/dest/test-wallet/test_wallet.js +323 -0
- package/dest/test-wallet/utils.d.ts +76 -0
- package/dest/test-wallet/utils.d.ts.map +1 -0
- package/dest/test-wallet/utils.js +126 -0
- package/dest/test-wallet/wallet_worker_script.d.ts +2 -0
- package/dest/test-wallet/wallet_worker_script.d.ts.map +1 -0
- package/dest/test-wallet/wallet_worker_script.js +56 -0
- package/dest/test-wallet/worker_wallet.d.ts +53 -0
- package/dest/test-wallet/worker_wallet.d.ts.map +1 -0
- package/dest/test-wallet/worker_wallet.js +155 -0
- package/dest/test-wallet/worker_wallet_schema.d.ts +4 -0
- package/dest/test-wallet/worker_wallet_schema.d.ts.map +1 -0
- package/dest/test-wallet/worker_wallet_schema.js +22 -0
- package/package.json +57 -47
- package/src/automine/README.md +60 -0
- package/src/automine/automine_test_context.ts +153 -0
- package/src/automine/contracts/fixtures/storage_proof.json +915 -0
- package/src/automine/contracts/fixtures/storage_proof_fetcher.ts +190 -0
- package/src/automine/contracts/fixtures/storage_proof_fixture.ts +173 -0
- package/src/automine/delivery/onchain_delivery_harness.ts +177 -0
- package/src/automine/token/blacklist_token_contract_test.ts +208 -0
- package/src/automine/token/token_contract_test.ts +146 -0
- package/src/automine/token/token_test_helpers.ts +138 -0
- package/src/bench/client_flows/benchmark.ts +45 -2
- package/src/bench/client_flows/client_flows_benchmark.ts +227 -211
- package/src/bench/client_flows/config.ts +9 -1
- package/src/bench/client_flows/data_extractor.ts +7 -28
- package/src/bench/utils.ts +144 -25
- package/src/composed/ha/ha_full_setup.ts +466 -0
- package/src/{e2e_multi_validator/utils.ts → composed/web3signer/multi_validator_keystore_utils.ts} +1 -1
- package/src/fixtures/authwit_proxy.ts +54 -0
- package/src/fixtures/dumps/epoch_proof_result.json +1 -1
- package/src/fixtures/e2e_prover_test.ts +175 -214
- package/src/fixtures/elu_monitor.ts +126 -0
- package/src/fixtures/fixtures.ts +110 -5
- package/src/fixtures/get_acvm_config.ts +1 -1
- package/src/fixtures/get_bb_config.ts +7 -6
- package/src/fixtures/ha_setup.ts +192 -0
- package/src/fixtures/index.ts +2 -0
- package/src/fixtures/l1_to_l2_messaging.ts +4 -2
- package/src/fixtures/schnorr_hardcoded_account_contract.ts +49 -0
- package/src/fixtures/setup.ts +987 -0
- package/src/fixtures/setup_p2p_test.ts +72 -58
- package/src/fixtures/timing.ts +97 -0
- package/src/fixtures/token_utils.ts +47 -11
- package/src/fixtures/utils.ts +26 -947
- package/src/fixtures/wait_helpers.ts +333 -0
- package/src/fixtures/web3signer.ts +1 -1
- package/src/fixtures/with_telemetry_utils.ts +2 -2
- package/src/forward-compatibility/wallet_rpc_client.ts +14 -0
- package/src/forward-compatibility/wallet_service.ts +106 -0
- package/src/guides/up_quick_start.sh +8 -5
- package/src/infra/README.md +12 -0
- package/src/install_legacy_contracts.cjs +75 -0
- package/src/legacy-jest-resolver.cjs +112 -0
- package/src/multi-node/README.md +95 -0
- package/src/multi-node/block-production/setup.ts +272 -0
- package/src/multi-node/governance/setup.ts +172 -0
- package/src/multi-node/multi_node_test_context.ts +447 -0
- package/src/multi-node/slashing/inactivity_setup.ts +139 -0
- package/src/multi-node/slashing/setup.ts +433 -0
- package/src/p2p/README.md +78 -0
- package/src/p2p/p2p_network.ts +542 -0
- package/src/p2p/reqresp/utils.ts +263 -0
- package/src/p2p/shared.ts +329 -0
- package/src/quality_of_service/{alert_checker.ts → grafana_client.ts} +1 -1
- package/src/quality_of_service/prometheus_client.ts +113 -0
- package/src/shared/cross_chain_test_harness.ts +51 -43
- package/src/shared/gas_portal_test_harness.ts +36 -18
- package/src/shared/index.ts +2 -1
- package/src/shared/jest_setup.ts +51 -1
- package/src/shared/mock_state_view.ts +188 -0
- package/src/shared/submit-transactions.ts +22 -19
- package/src/shared/timing_env.d.mts +39 -0
- package/src/shared/timing_env.mjs +363 -0
- package/src/shared/uniswap_l1_l2.ts +136 -115
- package/src/shared/wait_for_l1_to_l2_message.ts +23 -0
- package/src/simulators/lending_simulator.ts +40 -20
- package/src/simulators/token_simulator.ts +6 -30
- package/src/single-node/README.md +60 -0
- package/src/single-node/cross-chain/cross_chain_messaging_test.ts +302 -0
- package/src/single-node/cross-chain/message_test_helpers.ts +125 -0
- package/src/{e2e_fees → single-node/fees}/bridging_race.notest.ts +23 -15
- package/src/single-node/fees/fees_test.ts +368 -0
- package/src/single-node/l1-reorgs/setup.ts +93 -0
- package/src/single-node/partial-proofs/setup.ts +8 -0
- package/src/single-node/proving/setup.ts +15 -0
- package/src/single-node/recovery/setup.ts +8 -0
- package/src/single-node/setup.ts +63 -0
- package/src/single-node/single_node_test_context.ts +1041 -0
- package/src/spartan/DEVELOP.md +7 -0
- package/src/spartan/setup_test_wallets.ts +243 -32
- package/src/spartan/tx_metrics.ts +460 -0
- package/src/spartan/utils/bot.ts +188 -0
- package/src/spartan/utils/chaos.ts +253 -0
- package/src/spartan/utils/clients.ts +100 -0
- package/src/spartan/utils/config.ts +29 -0
- package/src/spartan/utils/health.ts +255 -0
- package/src/spartan/utils/helm.ts +84 -0
- package/src/spartan/utils/index.ts +71 -0
- package/src/spartan/utils/k8s.ts +535 -0
- package/src/spartan/utils/nodes.ts +543 -0
- package/src/spartan/utils/pod_logs.ts +99 -0
- package/src/spartan/utils/scripts.ts +99 -0
- package/src/spartan/utils.ts +1 -942
- package/src/test-wallet/test_wallet.ts +429 -0
- package/src/test-wallet/utils.ts +205 -0
- package/src/test-wallet/wallet_worker_script.ts +66 -0
- package/src/test-wallet/worker_wallet.ts +214 -0
- package/src/test-wallet/worker_wallet_schema.ts +14 -0
- package/dest/e2e_blacklist_token_contract/blacklist_token_contract_test.d.ts +0 -54
- package/dest/e2e_blacklist_token_contract/blacklist_token_contract_test.d.ts.map +0 -1
- package/dest/e2e_blacklist_token_contract/blacklist_token_contract_test.js +0 -185
- package/dest/e2e_cross_chain_messaging/cross_chain_messaging_test.d.ts +0 -41
- package/dest/e2e_cross_chain_messaging/cross_chain_messaging_test.d.ts.map +0 -1
- package/dest/e2e_cross_chain_messaging/cross_chain_messaging_test.js +0 -107
- package/dest/e2e_deploy_contract/deploy_test.d.ts +0 -36
- package/dest/e2e_deploy_contract/deploy_test.d.ts.map +0 -1
- package/dest/e2e_deploy_contract/deploy_test.js +0 -45
- package/dest/e2e_epochs/epochs_test.d.ts +0 -92
- package/dest/e2e_epochs/epochs_test.d.ts.map +0 -1
- package/dest/e2e_epochs/epochs_test.js +0 -336
- package/dest/e2e_fees/bridging_race.notest.d.ts +0 -2
- package/dest/e2e_fees/bridging_race.notest.d.ts.map +0 -1
- package/dest/e2e_fees/fees_test.d.ts +0 -84
- package/dest/e2e_fees/fees_test.d.ts.map +0 -1
- package/dest/e2e_fees/fees_test.js +0 -260
- package/dest/e2e_l1_publisher/write_json.d.ts +0 -10
- package/dest/e2e_l1_publisher/write_json.d.ts.map +0 -1
- package/dest/e2e_l1_publisher/write_json.js +0 -57
- package/dest/e2e_multi_validator/utils.d.ts +0 -12
- package/dest/e2e_multi_validator/utils.d.ts.map +0 -1
- package/dest/e2e_nested_contract/nested_contract_test.d.ts +0 -29
- package/dest/e2e_nested_contract/nested_contract_test.d.ts.map +0 -1
- package/dest/e2e_nested_contract/nested_contract_test.js +0 -63
- package/dest/e2e_p2p/inactivity_slash_test.d.ts +0 -31
- package/dest/e2e_p2p/inactivity_slash_test.d.ts.map +0 -1
- package/dest/e2e_p2p/inactivity_slash_test.js +0 -135
- package/dest/e2e_p2p/p2p_network.d.ts +0 -108
- package/dest/e2e_p2p/p2p_network.d.ts.map +0 -1
- package/dest/e2e_p2p/p2p_network.js +0 -318
- package/dest/e2e_p2p/shared.d.ts +0 -46
- package/dest/e2e_p2p/shared.d.ts.map +0 -1
- package/dest/e2e_p2p/shared.js +0 -183
- package/dest/e2e_token_contract/token_contract_test.d.ts +0 -35
- package/dest/e2e_token_contract/token_contract_test.d.ts.map +0 -1
- package/dest/e2e_token_contract/token_contract_test.js +0 -126
- package/dest/fixtures/setup_l1_contracts.d.ts +0 -6
- package/dest/fixtures/setup_l1_contracts.d.ts.map +0 -1
- package/dest/fixtures/setup_l1_contracts.js +0 -17
- package/dest/fixtures/snapshot_manager.d.ts +0 -95
- package/dest/fixtures/snapshot_manager.d.ts.map +0 -1
- package/dest/fixtures/snapshot_manager.js +0 -505
- package/dest/quality_of_service/alert_checker.d.ts +0 -41
- package/dest/quality_of_service/alert_checker.d.ts.map +0 -1
- package/src/e2e_blacklist_token_contract/blacklist_token_contract_test.ts +0 -256
- package/src/e2e_cross_chain_messaging/cross_chain_messaging_test.ts +0 -178
- package/src/e2e_deploy_contract/deploy_test.ts +0 -78
- package/src/e2e_epochs/epochs_test.ts +0 -437
- package/src/e2e_fees/fees_test.ts +0 -378
- package/src/e2e_l1_publisher/write_json.ts +0 -76
- package/src/e2e_nested_contract/nested_contract_test.ts +0 -95
- package/src/e2e_p2p/inactivity_slash_test.ts +0 -178
- package/src/e2e_p2p/p2p_network.ts +0 -472
- package/src/e2e_p2p/shared.ts +0 -282
- package/src/e2e_token_contract/token_contract_test.ts +0 -167
- package/src/fixtures/setup_l1_contracts.ts +0 -26
- package/src/fixtures/snapshot_manager.ts +0 -665
|
@@ -1,36 +1,39 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { NO_FROM } from '@aztec/aztec.js/account';
|
|
2
2
|
import { FeeJuicePaymentMethodWithClaim } from '@aztec/aztec.js/fee';
|
|
3
3
|
import { PrivateFeePaymentMethod, SponsoredFeePaymentMethod } from '@aztec/aztec.js/fee';
|
|
4
4
|
import { createLogger } from '@aztec/aztec.js/log';
|
|
5
|
-
import {
|
|
5
|
+
import { getTokenAllowedSetupFunctions } from '@aztec/aztec/testing';
|
|
6
|
+
import { createExtendedL1Client } from '@aztec/ethereum/client';
|
|
7
|
+
import { RollupContract } from '@aztec/ethereum/contracts';
|
|
8
|
+
import { deployL1Contract } from '@aztec/ethereum/deploy-l1-contract';
|
|
6
9
|
import { ChainMonitor } from '@aztec/ethereum/test';
|
|
7
|
-
import { randomBytes } from '@aztec/foundation/crypto';
|
|
10
|
+
import { randomBytes } from '@aztec/foundation/crypto/random';
|
|
11
|
+
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
8
12
|
import { EthAddress } from '@aztec/foundation/eth-address';
|
|
9
|
-
import { Fr } from '@aztec/foundation/fields';
|
|
10
13
|
import { TestERC20Abi } from '@aztec/l1-artifacts/TestERC20Abi';
|
|
11
14
|
import { TestERC20Bytecode } from '@aztec/l1-artifacts/TestERC20Bytecode';
|
|
12
15
|
import { AMMContract } from '@aztec/noir-contracts.js/AMM';
|
|
13
16
|
import { FPCContract } from '@aztec/noir-contracts.js/FPC';
|
|
14
17
|
import { FeeJuiceContract } from '@aztec/noir-contracts.js/FeeJuice';
|
|
15
18
|
import { SponsoredFPCContract } from '@aztec/noir-contracts.js/SponsoredFPC';
|
|
16
|
-
import {
|
|
19
|
+
import { TestTokenContract as BananaCoin, TestTokenContract } from '@aztec/noir-test-contracts.js/TestToken';
|
|
17
20
|
import { ProtocolContractAddress } from '@aztec/protocol-contracts';
|
|
18
21
|
import { getCanonicalFeeJuice } from '@aztec/protocol-contracts/fee-juice';
|
|
19
22
|
import { getPXEConfig } from '@aztec/pxe/server';
|
|
20
|
-
import { GasSettings } from '@aztec/stdlib/gas';
|
|
23
|
+
import { Gas, GasSettings } from '@aztec/stdlib/gas';
|
|
21
24
|
import { deriveSigningKey } from '@aztec/stdlib/keys';
|
|
22
|
-
import {
|
|
23
|
-
import { MNEMONIC } from '../../fixtures/fixtures.js';
|
|
24
|
-
import {
|
|
25
|
+
import { AppTaggingSecretKind } from '@aztec/stdlib/logs';
|
|
26
|
+
import { AUTOMINE_E2E_OPTS, L1_DIRECT_WRITE_ACCOUNT_INDEX, MNEMONIC, getPaddedMaxFeesPerGas } from '../../fixtures/fixtures.js';
|
|
27
|
+
import { setup, teardown } from '../../fixtures/setup.js';
|
|
25
28
|
import { mintTokensToPrivate } from '../../fixtures/token_utils.js';
|
|
26
29
|
import { setupSponsoredFPC } from '../../fixtures/utils.js';
|
|
27
30
|
import { CrossChainTestHarness } from '../../shared/cross_chain_test_harness.js';
|
|
28
31
|
import { FeeJuicePortalTestingHarnessFactory } from '../../shared/gas_portal_test_harness.js';
|
|
32
|
+
import { TestWallet } from '../../test-wallet/test_wallet.js';
|
|
29
33
|
import { ProxyLogger } from './benchmark.js';
|
|
30
34
|
import { FULL_FLOWS_CONFIG, KEY_FLOWS_CONFIG } from './config.js';
|
|
31
|
-
const {
|
|
35
|
+
const { BENCHMARK_CONFIG } = process.env;
|
|
32
36
|
export class ClientFlowsBenchmark {
|
|
33
|
-
snapshotManager;
|
|
34
37
|
logger;
|
|
35
38
|
aztecNode;
|
|
36
39
|
cheatCodes;
|
|
@@ -47,88 +50,111 @@ export class ClientFlowsBenchmark {
|
|
|
47
50
|
feeJuiceContract;
|
|
48
51
|
// Asset in which fees are paid via FPC
|
|
49
52
|
bananaCoin;
|
|
53
|
+
bananaCoinInstance;
|
|
50
54
|
bananaFPC;
|
|
55
|
+
bananaFPCInstance;
|
|
51
56
|
// Random asset we want to trade
|
|
52
57
|
candyBarCoin;
|
|
58
|
+
candyBarCoinInstance;
|
|
53
59
|
// AMM contract
|
|
54
60
|
amm;
|
|
61
|
+
ammInstance;
|
|
55
62
|
// Liquidity token for AMM
|
|
56
63
|
liquidityToken;
|
|
64
|
+
liquidityTokenInstance;
|
|
57
65
|
// Sponsored FPC contract
|
|
58
66
|
sponsoredFPC;
|
|
67
|
+
sponsoredFPCInstance;
|
|
59
68
|
// PXE and Wallet used by the benchmarking user. It can be set up with client-side proving enabled
|
|
60
69
|
userWallet;
|
|
61
70
|
realProofs = [
|
|
62
71
|
'true',
|
|
63
72
|
'1'
|
|
64
73
|
].includes(process.env.REAL_PROOFS ?? '');
|
|
74
|
+
// `apps` is the number of private function calls contributed by this payment method.
|
|
75
|
+
// Each app produces one execution step at proving time; the orchestrator additionally produces
|
|
76
|
+
// one kernel step per batch of N apps (see `expectedExecutionSteps` in `benchmark.ts`).
|
|
65
77
|
paymentMethods = {
|
|
66
78
|
// eslint-disable-next-line camelcase
|
|
67
79
|
bridged_fee_juice: {
|
|
68
80
|
forWallet: this.getBridgedFeeJuicePaymentMethodForWallet.bind(this),
|
|
69
|
-
|
|
81
|
+
apps: 1
|
|
70
82
|
},
|
|
71
83
|
// eslint-disable-next-line camelcase
|
|
72
84
|
private_fpc: {
|
|
73
85
|
forWallet: this.getPrivateFPCPaymentMethodForWallet.bind(this),
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
86
|
+
apps: 1 + // FPC entrypoint
|
|
87
|
+
1 + // BananaCoin transfer_to_public
|
|
88
|
+
1 + // Account verify_private_authwit
|
|
89
|
+
1
|
|
78
90
|
},
|
|
79
91
|
// eslint-disable-next-line camelcase
|
|
80
92
|
sponsored_fpc: {
|
|
81
93
|
forWallet: this.getSponsoredFPCPaymentMethodForWallet.bind(this),
|
|
82
|
-
|
|
94
|
+
apps: 1
|
|
83
95
|
},
|
|
84
96
|
// eslint-disable-next-line camelcase
|
|
85
97
|
fee_juice: {
|
|
86
98
|
forWallet: ()=>Promise.resolve(undefined),
|
|
87
|
-
|
|
99
|
+
apps: 0
|
|
88
100
|
}
|
|
89
101
|
};
|
|
90
102
|
config;
|
|
91
103
|
proxyLogger;
|
|
104
|
+
setupOptions;
|
|
92
105
|
constructor(testName, setupOptions = {}){
|
|
93
106
|
this.logger = createLogger(`bench:client_flows${testName ? `:${testName}` : ''}`);
|
|
94
|
-
this.
|
|
107
|
+
this.setupOptions = {
|
|
108
|
+
...AUTOMINE_E2E_OPTS,
|
|
95
109
|
startProverNode: true,
|
|
96
110
|
...setupOptions
|
|
97
|
-
}
|
|
98
|
-
...setupOptions
|
|
99
|
-
});
|
|
111
|
+
};
|
|
100
112
|
this.config = BENCHMARK_CONFIG === 'key_flows' ? KEY_FLOWS_CONFIG : FULL_FLOWS_CONFIG;
|
|
101
113
|
ProxyLogger.create();
|
|
102
114
|
this.proxyLogger = ProxyLogger.getInstance();
|
|
103
115
|
}
|
|
104
116
|
async setup() {
|
|
105
|
-
|
|
106
|
-
|
|
117
|
+
this.logger.info('Setting up subsystems from fresh');
|
|
118
|
+
// Token allowlist entries are test-only: FPC-based fee payment with custom tokens won't work on mainnet alpha.
|
|
119
|
+
// BananaCoin is the codegen'd TestToken here, so the allowlist must key on its class, not canonical Token's.
|
|
120
|
+
const tokenAllowList = await getTokenAllowedSetupFunctions(BananaCoin.artifact);
|
|
121
|
+
this.context = await setup(2, {
|
|
122
|
+
...this.setupOptions,
|
|
123
|
+
fundSponsoredFPC: true,
|
|
124
|
+
l1ContractsArgs: this.setupOptions,
|
|
125
|
+
txPublicSetupAllowListExtend: [
|
|
126
|
+
...this.setupOptions.txPublicSetupAllowListExtend ?? [],
|
|
127
|
+
...tokenAllowList
|
|
128
|
+
]
|
|
129
|
+
});
|
|
130
|
+
await this.applyBaseSetup();
|
|
131
|
+
await this.context.aztecNodeService.setConfig({
|
|
107
132
|
feeRecipient: this.sequencerAddress,
|
|
108
133
|
coinbase: this.coinbase
|
|
109
134
|
});
|
|
110
|
-
const rollupContract = RollupContract.getFromConfig(context.
|
|
111
|
-
this.chainMonitor = new ChainMonitor(rollupContract, context.dateProvider, this.logger, 200).start();
|
|
135
|
+
const rollupContract = RollupContract.getFromConfig(this.context.config);
|
|
136
|
+
this.chainMonitor = new ChainMonitor(rollupContract, this.context.dateProvider, this.logger, 200).start();
|
|
112
137
|
return this;
|
|
113
138
|
}
|
|
114
139
|
async teardown() {
|
|
115
140
|
await this.chainMonitor.stop();
|
|
116
|
-
await this.
|
|
141
|
+
await this.userWallet?.stop();
|
|
142
|
+
await teardown(this.context);
|
|
117
143
|
}
|
|
118
144
|
async mintAndBridgeFeeJuice(address) {
|
|
119
145
|
const claim = await this.feeJuiceBridgeTestHarness.prepareTokensOnL1(address);
|
|
120
146
|
const { claimSecret: secret, messageLeafIndex: index } = claim;
|
|
121
147
|
await this.feeJuiceContract.methods.claim(address, claim.claimAmount, secret, index).send({
|
|
122
148
|
from: this.adminAddress
|
|
123
|
-
})
|
|
149
|
+
});
|
|
124
150
|
}
|
|
125
151
|
/** Admin mints bananaCoin tokens privately to the target address and redeems them. */ async mintPrivateBananas(amount, address) {
|
|
126
|
-
const balanceBefore = await this.bananaCoin.methods.balance_of_private(address).simulate({
|
|
127
|
-
from:
|
|
152
|
+
const { result: balanceBefore } = await this.bananaCoin.methods.balance_of_private(address).simulate({
|
|
153
|
+
from: address
|
|
128
154
|
});
|
|
129
155
|
await mintTokensToPrivate(this.bananaCoin, this.adminAddress, address, amount);
|
|
130
|
-
const balanceAfter = await this.bananaCoin.methods.balance_of_private(address).simulate({
|
|
131
|
-
from:
|
|
156
|
+
const { result: balanceAfter } = await this.bananaCoin.methods.balance_of_private(address).simulate({
|
|
157
|
+
from: address
|
|
132
158
|
});
|
|
133
159
|
expect(balanceAfter).toEqual(balanceBefore + amount);
|
|
134
160
|
}
|
|
@@ -146,101 +172,97 @@ export class ClientFlowsBenchmark {
|
|
|
146
172
|
throw new Error(`Unknown account type: ${type}`);
|
|
147
173
|
}
|
|
148
174
|
}
|
|
149
|
-
async
|
|
150
|
-
await this.
|
|
151
|
-
await this.
|
|
175
|
+
async applyBaseSetup() {
|
|
176
|
+
await this.applyInitialAccounts();
|
|
177
|
+
await this.applySetupFeeJuice();
|
|
152
178
|
}
|
|
153
|
-
async
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
}
|
|
179
|
+
async applyInitialAccounts() {
|
|
180
|
+
this.logger.info('Applying initial accounts setup');
|
|
181
|
+
const [adminAddress, sequencerAddress] = this.context.accounts;
|
|
182
|
+
this.adminWallet = this.context.wallet;
|
|
183
|
+
this.aztecNode = this.context.aztecNodeService;
|
|
184
|
+
this.cheatCodes = this.context.cheatCodes;
|
|
185
|
+
this.adminAddress = adminAddress;
|
|
186
|
+
this.sequencerAddress = sequencerAddress;
|
|
187
|
+
const canonicalFeeJuice = await getCanonicalFeeJuice();
|
|
188
|
+
this.feeJuiceContract = FeeJuiceContract.at(canonicalFeeJuice.address, this.adminWallet);
|
|
189
|
+
this.coinbase = EthAddress.random();
|
|
190
|
+
const userPXEConfig = getPXEConfig();
|
|
191
|
+
const userPXEConfigWithContracts = {
|
|
192
|
+
...userPXEConfig,
|
|
193
|
+
proverEnabled: this.realProofs
|
|
194
|
+
};
|
|
195
|
+
this.userWallet = await TestWallet.create(this.aztecNode, userPXEConfigWithContracts, {
|
|
196
|
+
loggers: {
|
|
197
|
+
prover: this.proxyLogger.createLogger('pxe:bb:wasm:bundle:proxied')
|
|
198
|
+
},
|
|
199
|
+
// The benchmark measures steady-state app cost, not first-send discovery cost. Reproduce the pre-handshake-default
|
|
200
|
+
// behavior of unconstrained delivery: derive the tagging secret from the (sender, recipient) key pair via ECDH
|
|
201
|
+
// instead of taking the current default (a non-interactive handshake, which injects two extra private app
|
|
202
|
+
// executions and a nullifier per cold chain). Constrained delivery is unaffected: the Noir circuit rejects
|
|
203
|
+
// address-derived for constrained, so the hook falls through to a handshake there.
|
|
204
|
+
hooks: {
|
|
205
|
+
resolveTaggingSecretStrategy: ({ deliveryMode })=>Promise.resolve(deliveryMode === AppTaggingSecretKind.UNCONSTRAINED ? {
|
|
206
|
+
type: 'address-derived'
|
|
207
|
+
} : {
|
|
208
|
+
type: 'non-interactive-handshake'
|
|
209
|
+
})
|
|
210
|
+
}
|
|
173
211
|
});
|
|
174
212
|
}
|
|
175
|
-
async
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
this.
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
213
|
+
async applySetupFeeJuice() {
|
|
214
|
+
this.logger.info('Applying fee juice setup');
|
|
215
|
+
this.feeJuiceContract = FeeJuiceContract.at(ProtocolContractAddress.FeeJuice, this.adminWallet);
|
|
216
|
+
this.feeJuiceBridgeTestHarness = await FeeJuicePortalTestingHarnessFactory.create({
|
|
217
|
+
aztecNode: this.context.aztecNodeService,
|
|
218
|
+
aztecNodeAdmin: this.context.aztecNodeService,
|
|
219
|
+
// Bridge from a dedicated L1 account so its direct writes don't race the sequencer publisher's
|
|
220
|
+
// txs on the deployer account (see L1_DIRECT_WRITE_ACCOUNT_INDEX).
|
|
221
|
+
l1Client: createExtendedL1Client(this.context.config.l1RpcUrls, MNEMONIC, undefined, undefined, L1_DIRECT_WRITE_ACCOUNT_INDEX),
|
|
222
|
+
wallet: this.adminWallet,
|
|
223
|
+
logger: this.logger
|
|
186
224
|
});
|
|
187
225
|
}
|
|
188
|
-
async
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
}).deployed();
|
|
193
|
-
this.logger.info(`BananaCoin deployed at ${bananaCoin.address}`);
|
|
194
|
-
return {
|
|
195
|
-
bananaCoinAddress: bananaCoin.address
|
|
196
|
-
};
|
|
197
|
-
}, async ({ bananaCoinAddress })=>{
|
|
198
|
-
this.bananaCoin = await BananaCoin.at(bananaCoinAddress, this.adminWallet);
|
|
226
|
+
async applyDeployBananaToken() {
|
|
227
|
+
this.logger.info('Applying banana token deployment');
|
|
228
|
+
const { contract: bananaCoin, instance: bananaCoinInstance } = await BananaCoin.deploy(this.adminWallet, this.adminAddress, 'BC', 'BC', 18n).send({
|
|
229
|
+
from: this.adminAddress
|
|
199
230
|
});
|
|
231
|
+
this.logger.info(`BananaCoin deployed at ${bananaCoin.address}`);
|
|
232
|
+
this.bananaCoin = bananaCoin;
|
|
233
|
+
this.bananaCoinInstance = bananaCoinInstance;
|
|
200
234
|
}
|
|
201
|
-
async
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
}).deployed();
|
|
206
|
-
this.logger.info(`CandyBarCoin deployed at ${candyBarCoin.address}`);
|
|
207
|
-
return {
|
|
208
|
-
candyBarCoinAddress: candyBarCoin.address
|
|
209
|
-
};
|
|
210
|
-
}, async ({ candyBarCoinAddress })=>{
|
|
211
|
-
this.candyBarCoin = await TokenContract.at(candyBarCoinAddress, this.adminWallet);
|
|
235
|
+
async applyDeployCandyBarToken() {
|
|
236
|
+
this.logger.info('Applying candy bar token deployment');
|
|
237
|
+
const { contract: candyBarCoin, instance: candyBarCoinInstance } = await TestTokenContract.deploy(this.adminWallet, this.adminAddress, 'CBC', 'CBC', 18n).send({
|
|
238
|
+
from: this.adminAddress
|
|
212
239
|
});
|
|
240
|
+
this.logger.info(`CandyBarCoin deployed at ${candyBarCoin.address}`);
|
|
241
|
+
this.candyBarCoin = candyBarCoin;
|
|
242
|
+
this.candyBarCoinInstance = candyBarCoinInstance;
|
|
213
243
|
}
|
|
214
|
-
async
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
}).deployed();
|
|
222
|
-
this.logger.info(`BananaPay deployed at ${bananaFPC.address}`);
|
|
223
|
-
await this.feeJuiceBridgeTestHarness.bridgeFromL1ToL2(bananaFPC.address, this.adminAddress);
|
|
224
|
-
return {
|
|
225
|
-
bananaFPCAddress: bananaFPC.address
|
|
226
|
-
};
|
|
227
|
-
}, async (data)=>{
|
|
228
|
-
this.bananaFPC = await FPCContract.at(data.bananaFPCAddress, this.adminWallet);
|
|
244
|
+
async applyFPCSetup() {
|
|
245
|
+
this.logger.info('Applying FPC setup');
|
|
246
|
+
const feeJuiceContract = this.feeJuiceBridgeTestHarness.feeJuice;
|
|
247
|
+
expect((await this.context.wallet.getContractMetadata(feeJuiceContract.address)).isContractPublished).toBe(true);
|
|
248
|
+
const bananaCoin = this.bananaCoin;
|
|
249
|
+
const { contract: bananaFPC, instance: bananaFPCInstance } = await FPCContract.deploy(this.adminWallet, bananaCoin.address, this.adminAddress).send({
|
|
250
|
+
from: this.adminAddress
|
|
229
251
|
});
|
|
252
|
+
this.logger.info(`BananaPay deployed at ${bananaFPC.address}`);
|
|
253
|
+
await this.feeJuiceBridgeTestHarness.bridgeFromL1ToL2(bananaFPC.address, this.adminAddress);
|
|
254
|
+
this.bananaFPC = bananaFPC;
|
|
255
|
+
this.bananaFPCInstance = bananaFPCInstance;
|
|
230
256
|
}
|
|
231
|
-
async
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
};
|
|
238
|
-
}, async ({ sponsoredFPCAddress })=>{
|
|
239
|
-
this.sponsoredFPC = await SponsoredFPCContract.at(sponsoredFPCAddress, this.adminWallet);
|
|
240
|
-
});
|
|
257
|
+
async applyDeploySponsoredFPC() {
|
|
258
|
+
this.logger.info('Applying sponsored FPC deployment');
|
|
259
|
+
const sponsoredFPCInstance = await setupSponsoredFPC(this.adminWallet);
|
|
260
|
+
this.logger.info(`SponsoredFPC at ${sponsoredFPCInstance.address}`);
|
|
261
|
+
this.sponsoredFPC = SponsoredFPCContract.at(sponsoredFPCInstance.address, this.adminWallet);
|
|
262
|
+
this.sponsoredFPCInstance = sponsoredFPCInstance;
|
|
241
263
|
}
|
|
242
264
|
async createCrossChainTestHarness(owner) {
|
|
243
|
-
const l1Client = createExtendedL1Client(this.context.
|
|
265
|
+
const l1Client = createExtendedL1Client(this.context.config.l1RpcUrls, MNEMONIC);
|
|
244
266
|
const underlyingERC20Address = await deployL1Contract(l1Client, TestERC20Abi, TestERC20Bytecode, [
|
|
245
267
|
'Underlying',
|
|
246
268
|
'UND',
|
|
@@ -253,44 +275,39 @@ export class ClientFlowsBenchmark {
|
|
|
253
275
|
}
|
|
254
276
|
async createAndFundBenchmarkingAccountOnUserWallet(accountType) {
|
|
255
277
|
const benchysAccountManager = await this.createBenchmarkingAccountManager(this.adminWallet, accountType);
|
|
256
|
-
const benchysAccount = await benchysAccountManager.getAccount();
|
|
257
278
|
const benchysAddress = benchysAccountManager.address;
|
|
258
279
|
const claim = await this.feeJuiceBridgeTestHarness.prepareTokensOnL1(benchysAddress);
|
|
259
280
|
const behchysDeployMethod = await benchysAccountManager.getDeployMethod();
|
|
260
281
|
await behchysDeployMethod.send({
|
|
261
|
-
from:
|
|
282
|
+
from: NO_FROM,
|
|
262
283
|
fee: {
|
|
263
284
|
paymentMethod: new FeeJuicePaymentMethodWithClaim(benchysAddress, claim)
|
|
264
285
|
}
|
|
265
|
-
})
|
|
286
|
+
});
|
|
266
287
|
// Register benchy on the user's Wallet, where we're going to be interacting from
|
|
267
288
|
const accountManager = await this.userWallet.createAccount({
|
|
268
|
-
secret:
|
|
269
|
-
salt: new Fr(
|
|
289
|
+
secret: benchysAccountManager.getSecretKey(),
|
|
290
|
+
salt: new Fr(benchysAccountManager.getInstance().salt),
|
|
270
291
|
contract: benchysAccountManager.getAccountContract()
|
|
271
292
|
});
|
|
272
293
|
return accountManager.address;
|
|
273
294
|
}
|
|
274
|
-
async
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
}).wait();
|
|
286
|
-
return {
|
|
287
|
-
ammAddress: amm.address,
|
|
288
|
-
liquidityTokenAddress: liquidityToken.address
|
|
289
|
-
};
|
|
290
|
-
}, async ({ ammAddress, liquidityTokenAddress })=>{
|
|
291
|
-
this.liquidityToken = await TokenContract.at(liquidityTokenAddress, this.adminWallet);
|
|
292
|
-
this.amm = await AMMContract.at(ammAddress, this.adminWallet);
|
|
295
|
+
async applyDeployAmm() {
|
|
296
|
+
this.logger.info('Applying AMM deployment');
|
|
297
|
+
const { contract: liquidityToken, instance: liquidityTokenInstance } = await TestTokenContract.deploy(this.adminWallet, this.adminAddress, 'LPT', 'LPT', 18n).send({
|
|
298
|
+
from: this.adminAddress
|
|
299
|
+
});
|
|
300
|
+
const { contract: amm, instance: ammInstance } = await AMMContract.deploy(this.adminWallet, this.bananaCoin.address, this.candyBarCoin.address, liquidityToken.address).send({
|
|
301
|
+
from: this.adminAddress
|
|
302
|
+
});
|
|
303
|
+
this.logger.info(`AMM deployed at ${amm.address}`);
|
|
304
|
+
await liquidityToken.methods.set_minter(amm.address, true).send({
|
|
305
|
+
from: this.adminAddress
|
|
293
306
|
});
|
|
307
|
+
this.liquidityToken = liquidityToken;
|
|
308
|
+
this.liquidityTokenInstance = liquidityTokenInstance;
|
|
309
|
+
this.amm = amm;
|
|
310
|
+
this.ammInstance = ammInstance;
|
|
294
311
|
}
|
|
295
312
|
async getBridgedFeeJuicePaymentMethodForWallet(_wallet, sender) {
|
|
296
313
|
const claim = await this.feeJuiceBridgeTestHarness.prepareTokensOnL1(sender);
|
|
@@ -299,8 +316,10 @@ export class ClientFlowsBenchmark {
|
|
|
299
316
|
async getPrivateFPCPaymentMethodForWallet(wallet, sender) {
|
|
300
317
|
// The private fee paying method assembled on the app side requires knowledge of the maximum
|
|
301
318
|
// fee the user is willing to pay
|
|
302
|
-
const maxFeesPerGas =
|
|
303
|
-
const
|
|
319
|
+
const maxFeesPerGas = await getPaddedMaxFeesPerGas(this.aztecNode);
|
|
320
|
+
const gasLimits = Gas.from((await this.aztecNode.getNodeInfo()).txsLimits.gas);
|
|
321
|
+
const gasSettings = GasSettings.fallback({
|
|
322
|
+
gasLimits,
|
|
304
323
|
maxFeesPerGas
|
|
305
324
|
});
|
|
306
325
|
return new PrivateFeePaymentMethod(this.bananaFPC.address, sender, wallet, gasSettings);
|
|
@@ -4,11 +4,11 @@ export type ClientFlowConfig = {
|
|
|
4
4
|
feePaymentMethods: BenchmarkingFeePaymentMethod[];
|
|
5
5
|
recursions?: number[];
|
|
6
6
|
};
|
|
7
|
-
type ClientFlows = 'accountDeployments' | 'deployments' | 'transfers' | 'bridging' | 'amm';
|
|
7
|
+
type ClientFlows = 'accountDeployments' | 'deployments' | 'transfers' | 'bridging' | 'amm' | 'storageProof';
|
|
8
8
|
export type ClientFlowsConfig = {
|
|
9
9
|
[key in ClientFlows]: ClientFlowConfig;
|
|
10
10
|
};
|
|
11
11
|
export declare const KEY_FLOWS_CONFIG: ClientFlowsConfig;
|
|
12
12
|
export declare const FULL_FLOWS_CONFIG: ClientFlowsConfig;
|
|
13
13
|
export {};
|
|
14
|
-
//# sourceMappingURL=
|
|
14
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYmVuY2gvY2xpZW50X2Zsb3dzL2NvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssRUFBRSxXQUFXLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUU3RixNQUFNLE1BQU0sZ0JBQWdCLEdBQUc7SUFDN0IsUUFBUSxFQUFFLFdBQVcsRUFBRSxDQUFDO0lBQ3hCLGlCQUFpQixFQUFFLDRCQUE0QixFQUFFLENBQUM7SUFDbEQsVUFBVSxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUM7Q0FDdkIsQ0FBQztBQUVGLEtBQUssV0FBVyxHQUFHLG9CQUFvQixHQUFHLGFBQWEsR0FBRyxXQUFXLEdBQUcsVUFBVSxHQUFHLEtBQUssR0FBRyxjQUFjLENBQUM7QUFFNUcsTUFBTSxNQUFNLGlCQUFpQixHQUFHO0tBQzdCLEdBQUcsSUFBSSxXQUFXLEdBQUcsZ0JBQWdCO0NBQ3ZDLENBQUM7QUFFRixlQUFPLE1BQU0sZ0JBQWdCLEVBQUUsaUJBMEI5QixDQUFDO0FBRUYsZUFBTyxNQUFNLGlCQUFpQixFQUFFLGlCQTBCL0IsQ0FBQyJ9
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/bench/client_flows/config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,4BAA4B,EAAE,MAAM,6BAA6B,CAAC;AAE7F,MAAM,MAAM,gBAAgB,GAAG;IAC7B,QAAQ,EAAE,WAAW,EAAE,CAAC;IACxB,iBAAiB,EAAE,4BAA4B,EAAE,CAAC;IAClD,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;CACvB,CAAC;AAEF,KAAK,WAAW,GAAG,oBAAoB,GAAG,aAAa,GAAG,WAAW,GAAG,UAAU,GAAG,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/bench/client_flows/config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,4BAA4B,EAAE,MAAM,6BAA6B,CAAC;AAE7F,MAAM,MAAM,gBAAgB,GAAG;IAC7B,QAAQ,EAAE,WAAW,EAAE,CAAC;IACxB,iBAAiB,EAAE,4BAA4B,EAAE,CAAC;IAClD,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;CACvB,CAAC;AAEF,KAAK,WAAW,GAAG,oBAAoB,GAAG,aAAa,GAAG,WAAW,GAAG,UAAU,GAAG,KAAK,GAAG,cAAc,CAAC;AAE5G,MAAM,MAAM,iBAAiB,GAAG;KAC7B,GAAG,IAAI,WAAW,GAAG,gBAAgB;CACvC,CAAC;AAEF,eAAO,MAAM,gBAAgB,EAAE,iBA0B9B,CAAC;AAEF,eAAO,MAAM,iBAAiB,EAAE,iBA0B/B,CAAC"}
|
|
@@ -45,6 +45,14 @@ export const KEY_FLOWS_CONFIG = {
|
|
|
45
45
|
0,
|
|
46
46
|
1
|
|
47
47
|
]
|
|
48
|
+
},
|
|
49
|
+
storageProof: {
|
|
50
|
+
accounts: [
|
|
51
|
+
'ecdsar1'
|
|
52
|
+
],
|
|
53
|
+
feePaymentMethods: [
|
|
54
|
+
'sponsored_fpc'
|
|
55
|
+
]
|
|
48
56
|
}
|
|
49
57
|
};
|
|
50
58
|
export const FULL_FLOWS_CONFIG = {
|
|
@@ -102,5 +110,15 @@ export const FULL_FLOWS_CONFIG = {
|
|
|
102
110
|
1,
|
|
103
111
|
2
|
|
104
112
|
]
|
|
113
|
+
},
|
|
114
|
+
storageProof: {
|
|
115
|
+
accounts: [
|
|
116
|
+
'ecdsar1',
|
|
117
|
+
'schnorr'
|
|
118
|
+
],
|
|
119
|
+
feePaymentMethods: [
|
|
120
|
+
'sponsored_fpc',
|
|
121
|
+
'private_fpc'
|
|
122
|
+
]
|
|
105
123
|
}
|
|
106
124
|
};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
//# sourceMappingURL=
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YV9leHRyYWN0b3IuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9iZW5jaC9jbGllbnRfZmxvd3MvZGF0YV9leHRyYWN0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiJ9
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { BBWASMBundlePrivateKernelProver } from '@aztec/bb-prover/client/wasm/bundle';
|
|
1
|
+
import { BBBundlePrivateKernelProver } from '@aztec/bb-prover/client/bundle';
|
|
3
2
|
import { createLogger, logger } from '@aztec/foundation/log';
|
|
4
3
|
import { Timer } from '@aztec/foundation/timer';
|
|
5
4
|
import { WASMSimulator } from '@aztec/simulator/client';
|
|
@@ -7,26 +6,6 @@ import { Decoder } from 'msgpackr';
|
|
|
7
6
|
import { readFile, readdir, writeFile } from 'node:fs/promises';
|
|
8
7
|
import { join } from 'node:path';
|
|
9
8
|
import { ProxyLogger, generateBenchmark } from './benchmark.js';
|
|
10
|
-
async function createProver(config = {}, log) {
|
|
11
|
-
const simulator = new WASMSimulator();
|
|
12
|
-
if (!config.bbBinaryPath || !config.bbWorkingDirectory) {
|
|
13
|
-
return {
|
|
14
|
-
prover: new BBWASMBundlePrivateKernelProver(simulator, 16, log),
|
|
15
|
-
type: 'wasm'
|
|
16
|
-
};
|
|
17
|
-
} else {
|
|
18
|
-
const bbConfig = config;
|
|
19
|
-
return {
|
|
20
|
-
prover: await BBNativePrivateKernelProver.new({
|
|
21
|
-
bbSkipCleanup: false,
|
|
22
|
-
numConcurrentIVCVerifiers: 1,
|
|
23
|
-
bbIVCConcurrency: 1,
|
|
24
|
-
...bbConfig
|
|
25
|
-
}, simulator, log),
|
|
26
|
-
type: 'native'
|
|
27
|
-
};
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
9
|
async function main() {
|
|
31
10
|
ProxyLogger.create();
|
|
32
11
|
const proxyLogger = ProxyLogger.getInstance();
|
|
@@ -36,10 +15,11 @@ async function main() {
|
|
|
36
15
|
}
|
|
37
16
|
const flows = await readdir(ivcFolder);
|
|
38
17
|
logger.info(`Flows in ${ivcFolder}: \n${flows.map((flowName)=>`\t- ${flowName}`).join('\n')}`);
|
|
39
|
-
const
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
18
|
+
const simulator = new WASMSimulator();
|
|
19
|
+
const log = proxyLogger.createLogger('bb:prover');
|
|
20
|
+
const prover = new BBBundlePrivateKernelProver(simulator, {
|
|
21
|
+
logger: log
|
|
22
|
+
});
|
|
43
23
|
const userLog = createLogger('chonk_flows:data_processor');
|
|
44
24
|
for (const flow of flows){
|
|
45
25
|
userLog.info(`Processing flow ${flow}`);
|
|
@@ -63,6 +43,7 @@ async function main() {
|
|
|
63
43
|
// TODO(AD) do we still want to take this from witness.json?
|
|
64
44
|
witness: witnessStack[i],
|
|
65
45
|
vk: stepsFromFile[i].vk,
|
|
46
|
+
kind: stepsFromFile[i].kind,
|
|
66
47
|
timings: {
|
|
67
48
|
witgen: step.timings.witgen,
|
|
68
49
|
gateCount: step.timings.gateCount
|
|
@@ -85,7 +66,7 @@ async function main() {
|
|
|
85
66
|
if (!profile.stats.timings.proving) {
|
|
86
67
|
profile.stats.timings.proving = provingTime;
|
|
87
68
|
}
|
|
88
|
-
const benchmark = generateBenchmark(flow, currentLogs, profile.stats, privateExecutionSteps,
|
|
69
|
+
const benchmark = generateBenchmark(flow, currentLogs, profile.stats, privateExecutionSteps, 'native', error);
|
|
89
70
|
await writeFile(join(ivcFolder, flow, 'benchmark.json'), JSON.stringify(benchmark, null, 2));
|
|
90
71
|
proxyLogger.flushLogs();
|
|
91
72
|
}
|
package/dest/bench/utils.d.ts
CHANGED
|
@@ -1,23 +1,24 @@
|
|
|
1
|
-
import { type
|
|
1
|
+
import { type WaitOpts } from '@aztec/aztec.js/contracts';
|
|
2
2
|
import { BenchmarkingContract } from '@aztec/noir-test-contracts.js/Benchmarking';
|
|
3
|
-
import type {
|
|
3
|
+
import type { TxHash } from '@aztec/stdlib/tx';
|
|
4
|
+
import type { MetricDefinition } from '@aztec/telemetry-client';
|
|
4
5
|
import type { BenchmarkTelemetryClient } from '@aztec/telemetry-client/bench';
|
|
5
6
|
import { type EndToEndContext, type SetupOptions } from '../fixtures/utils.js';
|
|
6
7
|
/**
|
|
7
|
-
* Setup for benchmarks. Initializes a remote node with a
|
|
8
|
+
* Setup for benchmarks. Initializes a remote node with a funded hardcoded account and deploys a benchmark contract.
|
|
8
9
|
*/
|
|
9
10
|
export declare function benchmarkSetup(opts: Partial<SetupOptions> & {
|
|
10
|
-
/** What metrics to export */ metrics: (
|
|
11
|
+
/** What metrics to export */ metrics: (MetricDefinition | MetricFilter)[];
|
|
11
12
|
/** Where to output the benchmark data (defaults to BENCH_OUTPUT or bench.json) */
|
|
12
13
|
benchOutput?: string;
|
|
13
14
|
}): Promise<{
|
|
14
15
|
telemetry: BenchmarkTelemetryClient;
|
|
15
|
-
context: EndToEndContext
|
|
16
|
+
context: EndToEndContext<unknown>;
|
|
16
17
|
contract: BenchmarkingContract;
|
|
17
18
|
sequencer: import("@aztec/sequencer-client").SequencerClient;
|
|
18
19
|
}>;
|
|
19
20
|
type MetricFilter = {
|
|
20
|
-
source:
|
|
21
|
+
source: MetricDefinition;
|
|
21
22
|
transform: (value: number) => number;
|
|
22
23
|
name: string;
|
|
23
24
|
unit?: string;
|
|
@@ -38,7 +39,7 @@ export type GithubActionBenchmarkResult = {
|
|
|
38
39
|
* @param heavyPublicCompute - Whether the transactions include heavy public compute (like a big sha256).
|
|
39
40
|
* @returns Array of sent txs.
|
|
40
41
|
*/
|
|
41
|
-
export declare function sendTxs(txCount: number, context: EndToEndContext, contract: BenchmarkingContract, heavyPublicCompute?: boolean):
|
|
42
|
-
export declare function waitTxs(txs:
|
|
42
|
+
export declare function sendTxs(txCount: number, context: EndToEndContext, contract: BenchmarkingContract, heavyPublicCompute?: boolean): Promise<TxHash[]>;
|
|
43
|
+
export declare function waitTxs(txs: TxHash[], context: EndToEndContext, txWaitOpts?: WaitOpts): Promise<void>;
|
|
43
44
|
export {};
|
|
44
|
-
//# sourceMappingURL=
|
|
45
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9iZW5jaC91dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQXNCLEtBQUssUUFBUSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFJOUUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFFbEYsT0FBTyxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDL0MsT0FBTyxLQUFLLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNoRSxPQUFPLEtBQUssRUFBNEMsd0JBQXdCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQU14SCxPQUFPLEVBQUUsS0FBSyxlQUFlLEVBQUUsS0FBSyxZQUFZLEVBQVMsTUFBTSxzQkFBc0IsQ0FBQztBQU90Rjs7R0FFRztBQUNILHdCQUFzQixjQUFjLENBQ2xDLElBQUksRUFBRSxPQUFPLENBQUMsWUFBWSxDQUFDLEdBQUc7SUFDNUIsNkJBQTZCLENBQUMsT0FBTyxFQUFFLENBQUMsZ0JBQWdCLEdBQUcsWUFBWSxDQUFDLEVBQUUsQ0FBQztJQUMzRSxrRkFBa0Y7SUFDbEYsV0FBVyxDQUFDLEVBQUUsTUFBTSxDQUFDO0NBQ3RCOzs7OztHQWlDRjtBQVVELEtBQUssWUFBWSxHQUFHO0lBQ2xCLE1BQU0sRUFBRSxnQkFBZ0IsQ0FBQztJQUN6QixTQUFTLEVBQUUsQ0FBQyxLQUFLLEVBQUUsTUFBTSxLQUFLLE1BQU0sQ0FBQztJQUNyQyxJQUFJLEVBQUUsTUFBTSxDQUFDO0lBQ2IsSUFBSSxDQUFDLEVBQUUsTUFBTSxDQUFDO0NBQ2YsQ0FBQztBQUdGLE1BQU0sTUFBTSwyQkFBMkIsR0FBRztJQUN4QyxJQUFJLEVBQUUsTUFBTSxDQUFDO0lBQ2IsS0FBSyxFQUFFLE1BQU0sQ0FBQztJQUNkLEtBQUssQ0FBQyxFQUFFLE1BQU0sQ0FBQztJQUNmLElBQUksRUFBRSxNQUFNLENBQUM7SUFDYixLQUFLLENBQUMsRUFBRSxNQUFNLENBQUM7Q0FDaEIsQ0FBQztBQW9FRjs7Ozs7Ozs7R0FRRztBQUNILHdCQUFzQixPQUFPLENBQzNCLE9BQU8sRUFBRSxNQUFNLEVBQ2YsT0FBTyxFQUFFLGVBQWUsRUFDeEIsUUFBUSxFQUFFLG9CQUFvQixFQUM5QixrQkFBa0IsR0FBRSxPQUFlLEdBQ2xDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQVduQjtBQUVELHdCQUFzQixPQUFPLENBQUMsR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFLE9BQU8sRUFBRSxlQUFlLEVBQUUsVUFBVSxDQUFDLEVBQUUsUUFBUSxpQkFJM0YifQ==
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/bench/utils.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/bench/utils.ts"],"names":[],"mappings":"AAEA,OAAO,EAAsB,KAAK,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAI9E,OAAO,EAAE,oBAAoB,EAAE,MAAM,4CAA4C,CAAC;AAElF,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,KAAK,EAA4C,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AAMxH,OAAO,EAAE,KAAK,eAAe,EAAE,KAAK,YAAY,EAAS,MAAM,sBAAsB,CAAC;AAOtF;;GAEG;AACH,wBAAsB,cAAc,CAClC,IAAI,EAAE,OAAO,CAAC,YAAY,CAAC,GAAG;IAC5B,6BAA6B,CAAC,OAAO,EAAE,CAAC,gBAAgB,GAAG,YAAY,CAAC,EAAE,CAAC;IAC3E,kFAAkF;IAClF,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;;;;;GAiCF;AAUD,KAAK,YAAY,GAAG;IAClB,MAAM,EAAE,gBAAgB,CAAC;IACzB,SAAS,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;IACrC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,CAAC;AAGF,MAAM,MAAM,2BAA2B,GAAG;IACxC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAoEF;;;;;;;;GAQG;AACH,wBAAsB,OAAO,CAC3B,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,eAAe,EACxB,QAAQ,EAAE,oBAAoB,EAC9B,kBAAkB,GAAE,OAAe,GAClC,OAAO,CAAC,MAAM,EAAE,CAAC,CAWnB;AAED,wBAAsB,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,eAAe,EAAE,UAAU,CAAC,EAAE,QAAQ,iBAI3F"}
|