From 82935c66bebd4c33fff9ee659c4d700666111c5d Mon Sep 17 00:00:00 2001 From: mmsqe Date: Fri, 24 Jan 2025 13:13:14 +0800 Subject: [PATCH 01/10] bump to v9 --- blockdb/tui/model.go | 2 +- blockdb/tui/model_test.go | 2 +- blockdb/tui/presenter/cosmos_message.go | 2 +- blockdb/tui/presenter/cosmos_message_test.go | 2 +- blockdb/tui/presenter/test_case.go | 2 +- blockdb/tui/presenter/test_case_test.go | 2 +- blockdb/tui/presenter/tx.go | 2 +- blockdb/tui/presenter/tx_test.go | 2 +- blockdb/tui/update.go | 2 +- blockdb/tui/update_test.go | 2 +- blockdb/tui/views.go | 4 +-- chain/cosmos/broadcaster.go | 4 +-- chain/cosmos/chain_node.go | 8 +++--- chain/cosmos/codec.go | 2 +- chain/cosmos/cosmos_chain.go | 12 ++++---- chain/cosmos/genesis.go | 2 +- chain/cosmos/ics.go | 8 +++--- chain/cosmos/module_authz.go | 2 +- chain/cosmos/module_bank.go | 2 +- chain/cosmos/module_cosmwasm.go | 2 +- chain/cosmos/module_gov.go | 2 +- chain/cosmos/module_tokenfactory.go | 2 +- chain/cosmos/module_vesting.go | 2 +- chain/cosmos/node_test.go | 2 +- chain/cosmos/osmosis.go | 2 +- chain/cosmos/poll.go | 4 +-- chain/cosmos/sidecar.go | 4 +-- chain/cosmos/wallet.go | 2 +- chain/cosmos/wasm/wasm.go | 2 +- chain/ethereum/ethererum_chain.go | 6 ++-- chain/ethereum/foundry/anvil_chain.go | 4 +-- chain/ethereum/foundry/default_configs.go | 2 +- chain/ethereum/foundry/forge.go | 2 +- chain/ethereum/geth/default_configs.go | 2 +- chain/ethereum/geth/geth_chain.go | 6 ++-- chain/ethereum/unimplemented.go | 2 +- chain/ethereum/wallet.go | 2 +- chain/internal/tendermint/tendermint_node.go | 6 ++-- chain/namada/namada_chain.go | 6 ++-- chain/namada/namada_node.go | 5 ++-- chain/namada/wallet.go | 2 +- chain/penumbra/core/app/v1/app.pb.go | 24 ++++++++-------- chain/penumbra/core/asset/v1/asset.pb.go | 2 +- .../core/component/auction/v1/auction.pb.go | 6 ++-- .../community_pool/v1/community_pool.pb.go | 2 +- .../compact_block/v1/compact_block.pb.go | 10 +++---- .../penumbra/core/component/dex/v1/dex.pb.go | 16 +++++------ .../penumbra/core/component/fee/v1/fee.pb.go | 4 +-- .../core/component/funding/v1/funding.pb.go | 2 +- .../component/governance/v1/governance.pb.go | 28 +++++++++---------- .../penumbra/core/component/ibc/v1/ibc.pb.go | 6 ++-- .../penumbra/core/component/sct/v1/sct.pb.go | 2 +- .../shielded_pool/v1/shielded_pool.pb.go | 16 +++++------ .../core/component/stake/v1/stake.pb.go | 8 +++--- .../core/transaction/v1/transaction.pb.go | 28 +++++++++---------- .../custody/threshold/v1/threshold.pb.go | 8 +++--- chain/penumbra/custody/v1/custody.pb.go | 10 +++---- chain/penumbra/penumbra_app_node.go | 4 +-- chain/penumbra/penumbra_chain.go | 8 +++--- chain/penumbra/penumbra_client_node.go | 22 +++++++-------- chain/penumbra/penumbra_client_node_test.go | 2 +- chain/penumbra/penumbra_node.go | 4 +-- .../tools/summoning/v1/summoning.pb.go | 4 +-- chain/penumbra/view/v1/view.pb.go | 28 +++++++++---------- chain/penumbra/wallet.go | 2 +- chain/polkadot/keys_test.go | 2 +- chain/polkadot/parachain_node.go | 4 +-- chain/polkadot/polkadot_chain.go | 6 ++-- chain/polkadot/polkadot_chain_test.go | 4 +-- chain/polkadot/relay_chain_node.go | 4 +-- chain/polkadot/tx.go | 2 +- chain/polkadot/wallet.go | 2 +- chain/thorchain/api_query.go | 2 +- chain/thorchain/broadcaster.go | 4 +-- chain/thorchain/genesis.go | 2 +- chain/thorchain/module_bank.go | 2 +- chain/thorchain/module_thorchain.go | 2 +- chain/thorchain/poll.go | 4 +-- chain/thorchain/sidecar.go | 4 +-- chain/thorchain/thorchain.go | 8 +++--- chain/thorchain/thornode.go | 8 +++--- chain/thorchain/wallet.go | 2 +- chain/utxo/default_configs.go | 2 +- chain/utxo/unimplemented.go | 2 +- chain/utxo/utxo_chain.go | 6 ++-- chain/utxo/wallet.go | 2 +- chainfactory.go | 18 ++++++------ chainset.go | 6 ++-- chainspec.go | 2 +- chainspec_test.go | 4 +-- cmd/interchaintest/flags.go | 2 +- cmd/interchaintest/interchaintest_test.go | 16 +++++------ cmd/interchaintest/matrix_test.go | 2 +- conformance/flush.go | 10 +++---- conformance/relayersetup.go | 8 +++--- conformance/test.go | 18 ++++++------ dockerutil/container_lifecycle.go | 2 +- dockerutil/fileretriever_test.go | 4 +-- dockerutil/filewriter_test.go | 4 +-- dockerutil/setup_test.go | 4 +-- examples/cosmos/bad_genesis_params_test.go | 6 ++-- examples/cosmos/blockdb_messages_view_test.go | 10 +++---- examples/cosmos/chain_core_test.go | 8 +++--- examples/cosmos/chain_export_test.go | 8 +++--- examples/cosmos/chain_genesis_stake_test.go | 8 +++--- examples/cosmos/chain_miscellaneous_test.go | 6 ++-- examples/cosmos/chain_param_change_test.go | 6 ++-- examples/cosmos/chain_upgrade_ibc_test.go | 14 +++++----- examples/cosmos/code_coverage_test.go | 10 +++---- examples/cosmos/cometmock_test.go | 6 ++-- examples/cosmos/ethermint_test.go | 8 +++--- examples/cosmos/sdk_boundary_test.go | 14 +++++----- .../rust-optimizer/rust_optimizer_test.go | 14 +++++----- .../workspace_optimizer_test.go | 14 +++++----- examples/ethereum/foundry_test.go | 10 +++---- examples/ethereum/geth_test.go | 10 +++---- examples/hyperspace/hyperspace_test.go | 14 +++++----- examples/ibc/client_creation_test.go | 8 +++--- examples/ibc/ics_test.go | 12 ++++---- examples/ibc/learn_ibc_test.go | 8 +++--- examples/ibc/wasm/wasm_ibc_test.go | 12 ++++---- examples/ibc/wasm/wasm_icq_test.go | 16 +++++------ examples/namada/namada_chain_test.go | 10 +++---- examples/penumbra/penumbra_chain_test.go | 10 +++---- examples/penumbra/penumbra_ibc_test.go | 12 ++++---- examples/polkadot/polkadot_chain_test.go | 10 +++---- .../polkadot/push_wasm_client_code_test.go | 10 +++---- .../polkadot/substrate_cosmos_ibc_test.go | 10 +++---- .../thorchain/chainspec_exochains_test.go | 14 +++++----- .../thorchain/chainspec_thorchain_test.go | 8 +++--- examples/thorchain/features/arb.go | 6 ++-- examples/thorchain/features/dual_lper.go | 6 ++-- examples/thorchain/features/helpers.go | 10 +++---- examples/thorchain/features/ragnarok.go | 6 ++-- examples/thorchain/features/saver_eject.go | 6 ++-- examples/thorchain/features/savers.go | 6 ++-- examples/thorchain/features/swap.go | 6 ++-- examples/thorchain/helper_test.go | 2 +- examples/thorchain/setup_test.go | 16 +++++------ examples/thorchain/thorchain_hardfork_test.go | 10 +++---- examples/thorchain/thorchain_test.go | 4 +-- examples/utxo/start_test.go | 6 ++-- go.mod | 2 +- interchain.go | 10 +++---- interchain_builder.go | 8 +++--- interchain_test.go | 12 ++++---- local-interchain/cmd/local-ic/new_chain.go | 2 +- local-interchain/cmd/local-ic/start_chain.go | 10 +++---- local-interchain/interchain/config.go | 8 +++--- local-interchain/interchain/genesis.go | 4 +-- .../interchain/handlers/actions.go | 8 +++--- .../handlers/container_log_stream.go | 2 +- local-interchain/interchain/handlers/info.go | 6 ++-- local-interchain/interchain/handlers/types.go | 2 +- .../interchain/handlers/uploader.go | 2 +- local-interchain/interchain/ibc.go | 4 +-- local-interchain/interchain/logs.go | 6 ++-- local-interchain/interchain/router/router.go | 6 ++-- local-interchain/interchain/start.go | 14 +++++----- .../interchain/types/chain_builder.go | 4 +-- local-interchain/interchain/types/chains.go | 4 +-- local-interchain/interchain/types/genesis.go | 2 +- local-interchain/interchain/types/types.go | 6 ++-- mocktesting/t_test.go | 2 +- penumbra.go | 4 +-- relayer/docker.go | 6 ++-- relayer/hermes/hermes_commander.go | 4 +-- relayer/hermes/hermes_config.go | 2 +- relayer/hermes/hermes_relayer.go | 4 +-- relayer/hermes/hermes_wallet.go | 2 +- relayer/hyperspace/hyperspace_commander.go | 4 +-- relayer/hyperspace/hyperspace_config.go | 4 +-- relayer/hyperspace/hyperspace_relayer.go | 4 +-- relayer/hyperspace/hyperspace_test.go | 2 +- relayer/hyperspace/wallet.go | 2 +- relayer/options.go | 2 +- relayer/rly/cosmos_relayer.go | 4 +-- relayer/rly/wallet.go | 2 +- relayerfactory.go | 10 +++---- tempdir_test.go | 4 +-- test_setup.go | 6 ++-- test_user.go | 6 ++-- testreporter/messages_test.go | 2 +- testreporter/reporter_test.go | 4 +-- testutil/poll_for_state.go | 2 +- testutil/poll_for_state_test.go | 2 +- testutil/toml.go | 2 +- 187 files changed, 576 insertions(+), 575 deletions(-) diff --git a/blockdb/tui/model.go b/blockdb/tui/model.go index 13167908a..5ee3f55b4 100644 --- a/blockdb/tui/model.go +++ b/blockdb/tui/model.go @@ -7,7 +7,7 @@ import ( "github.com/atotto/clipboard" "github.com/rivo/tview" - "github.com/strangelove-ventures/interchaintest/v8/blockdb" + "github.com/strangelove-ventures/interchaintest/v9/blockdb" ) //go:generate go run golang.org/x/tools/cmd/stringer -type=mainContent diff --git a/blockdb/tui/model_test.go b/blockdb/tui/model_test.go index 1e6aff283..2b512ba64 100644 --- a/blockdb/tui/model_test.go +++ b/blockdb/tui/model_test.go @@ -6,7 +6,7 @@ import ( "github.com/stretchr/testify/require" - "github.com/strangelove-ventures/interchaintest/v8/blockdb" + "github.com/strangelove-ventures/interchaintest/v9/blockdb" ) func TestModel_RootView(t *testing.T) { diff --git a/blockdb/tui/presenter/cosmos_message.go b/blockdb/tui/presenter/cosmos_message.go index 4da9cfb32..9b5bab79b 100644 --- a/blockdb/tui/presenter/cosmos_message.go +++ b/blockdb/tui/presenter/cosmos_message.go @@ -4,7 +4,7 @@ import ( "strconv" "strings" - "github.com/strangelove-ventures/interchaintest/v8/blockdb" + "github.com/strangelove-ventures/interchaintest/v9/blockdb" ) // CosmosMessage presents a blockdb.CosmosMessageResult. diff --git a/blockdb/tui/presenter/cosmos_message_test.go b/blockdb/tui/presenter/cosmos_message_test.go index 2183b33c3..0ac45a031 100644 --- a/blockdb/tui/presenter/cosmos_message_test.go +++ b/blockdb/tui/presenter/cosmos_message_test.go @@ -6,7 +6,7 @@ import ( "github.com/stretchr/testify/require" - "github.com/strangelove-ventures/interchaintest/v8/blockdb" + "github.com/strangelove-ventures/interchaintest/v9/blockdb" ) func TestCosmosMessage(t *testing.T) { diff --git a/blockdb/tui/presenter/test_case.go b/blockdb/tui/presenter/test_case.go index c5e5f1118..9ee4a29bb 100644 --- a/blockdb/tui/presenter/test_case.go +++ b/blockdb/tui/presenter/test_case.go @@ -3,7 +3,7 @@ package presenter import ( "strconv" - "github.com/strangelove-ventures/interchaintest/v8/blockdb" + "github.com/strangelove-ventures/interchaintest/v9/blockdb" ) // TestCase presents a blockdb.TestCaseResult. diff --git a/blockdb/tui/presenter/test_case_test.go b/blockdb/tui/presenter/test_case_test.go index 24fb33399..0323d1048 100644 --- a/blockdb/tui/presenter/test_case_test.go +++ b/blockdb/tui/presenter/test_case_test.go @@ -7,7 +7,7 @@ import ( "github.com/stretchr/testify/require" - "github.com/strangelove-ventures/interchaintest/v8/blockdb" + "github.com/strangelove-ventures/interchaintest/v9/blockdb" ) func TestTestCase(t *testing.T) { diff --git a/blockdb/tui/presenter/tx.go b/blockdb/tui/presenter/tx.go index d823ba893..f7e4e0603 100644 --- a/blockdb/tui/presenter/tx.go +++ b/blockdb/tui/presenter/tx.go @@ -6,7 +6,7 @@ import ( "strconv" "sync" - "github.com/strangelove-ventures/interchaintest/v8/blockdb" + "github.com/strangelove-ventures/interchaintest/v9/blockdb" ) var bufPool = sync.Pool{New: func() any { return new(bytes.Buffer) }} diff --git a/blockdb/tui/presenter/tx_test.go b/blockdb/tui/presenter/tx_test.go index 18707c2bf..1798faa2d 100644 --- a/blockdb/tui/presenter/tx_test.go +++ b/blockdb/tui/presenter/tx_test.go @@ -6,7 +6,7 @@ import ( "github.com/stretchr/testify/require" - "github.com/strangelove-ventures/interchaintest/v8/blockdb" + "github.com/strangelove-ventures/interchaintest/v9/blockdb" ) func TestTx(t *testing.T) { diff --git a/blockdb/tui/update.go b/blockdb/tui/update.go index 408bc3a36..2173e1085 100644 --- a/blockdb/tui/update.go +++ b/blockdb/tui/update.go @@ -8,7 +8,7 @@ import ( "github.com/gdamore/tcell/v2" "github.com/rivo/tview" - "github.com/strangelove-ventures/interchaintest/v8/blockdb/tui/presenter" + "github.com/strangelove-ventures/interchaintest/v9/blockdb/tui/presenter" ) // Update should be the argument for *(tview.Application).SetInputCapture. diff --git a/blockdb/tui/update_test.go b/blockdb/tui/update_test.go index 08130ac61..f34cdf7f2 100644 --- a/blockdb/tui/update_test.go +++ b/blockdb/tui/update_test.go @@ -11,7 +11,7 @@ import ( "github.com/rivo/tview" "github.com/stretchr/testify/require" - "github.com/strangelove-ventures/interchaintest/v8/blockdb" + "github.com/strangelove-ventures/interchaintest/v9/blockdb" ) var ( diff --git a/blockdb/tui/views.go b/blockdb/tui/views.go index 3df16b53d..ff553b312 100644 --- a/blockdb/tui/views.go +++ b/blockdb/tui/views.go @@ -9,8 +9,8 @@ import ( "github.com/gdamore/tcell/v2" "github.com/rivo/tview" - "github.com/strangelove-ventures/interchaintest/v8/blockdb" - "github.com/strangelove-ventures/interchaintest/v8/blockdb/tui/presenter" + "github.com/strangelove-ventures/interchaintest/v9/blockdb" + "github.com/strangelove-ventures/interchaintest/v9/blockdb/tui/presenter" ) func headerView(m *Model) *tview.Flex { diff --git a/chain/cosmos/broadcaster.go b/chain/cosmos/broadcaster.go index 43afde424..e3a3ab067 100644 --- a/chain/cosmos/broadcaster.go +++ b/chain/cosmos/broadcaster.go @@ -16,8 +16,8 @@ import ( "github.com/cosmos/cosmos-sdk/types/tx/signing" authtx "github.com/cosmos/cosmos-sdk/x/auth/tx" - "github.com/strangelove-ventures/interchaintest/v8/dockerutil" - "github.com/strangelove-ventures/interchaintest/v8/testutil" + "github.com/strangelove-ventures/interchaintest/v9/dockerutil" + "github.com/strangelove-ventures/interchaintest/v9/testutil" ) type ClientContextOpt func(clientContext client.Context) client.Context diff --git a/chain/cosmos/chain_node.go b/chain/cosmos/chain_node.go index 4c06365a0..49a6ca2ff 100644 --- a/chain/cosmos/chain_node.go +++ b/chain/cosmos/chain_node.go @@ -46,10 +46,10 @@ import ( coretypes "github.com/cometbft/cometbft/rpc/core/types" libclient "github.com/cometbft/cometbft/rpc/jsonrpc/client" - "github.com/strangelove-ventures/interchaintest/v8/blockdb" - "github.com/strangelove-ventures/interchaintest/v8/dockerutil" - "github.com/strangelove-ventures/interchaintest/v8/ibc" - "github.com/strangelove-ventures/interchaintest/v8/testutil" + "github.com/strangelove-ventures/interchaintest/v9/blockdb" + "github.com/strangelove-ventures/interchaintest/v9/dockerutil" + "github.com/strangelove-ventures/interchaintest/v9/ibc" + "github.com/strangelove-ventures/interchaintest/v9/testutil" ) // ChainNode represents a node in the test network that is being created. diff --git a/chain/cosmos/codec.go b/chain/cosmos/codec.go index c5df26f06..1255ae527 100644 --- a/chain/cosmos/codec.go +++ b/chain/cosmos/codec.go @@ -28,7 +28,7 @@ import ( "github.com/cosmos/cosmos-sdk/x/slashing" "github.com/cosmos/cosmos-sdk/x/staking" - ibcwasm "github.com/strangelove-ventures/interchaintest/v8/chain/cosmos/08-wasm-types" + ibcwasm "github.com/strangelove-ventures/interchaintest/v9/chain/cosmos/08-wasm-types" ) func DefaultEncoding() testutil.TestEncodingConfig { diff --git a/chain/cosmos/cosmos_chain.go b/chain/cosmos/cosmos_chain.go index e69472341..3fd9ed8e7 100644 --- a/chain/cosmos/cosmos_chain.go +++ b/chain/cosmos/cosmos_chain.go @@ -35,12 +35,12 @@ import ( govtypes "github.com/cosmos/cosmos-sdk/x/gov/types" paramsutils "github.com/cosmos/cosmos-sdk/x/params/client/utils" - "github.com/strangelove-ventures/interchaintest/v8/blockdb" - wasmtypes "github.com/strangelove-ventures/interchaintest/v8/chain/cosmos/08-wasm-types" - "github.com/strangelove-ventures/interchaintest/v8/chain/internal/tendermint" - "github.com/strangelove-ventures/interchaintest/v8/dockerutil" - "github.com/strangelove-ventures/interchaintest/v8/ibc" - "github.com/strangelove-ventures/interchaintest/v8/testutil" + "github.com/strangelove-ventures/interchaintest/v9/blockdb" + wasmtypes "github.com/strangelove-ventures/interchaintest/v9/chain/cosmos/08-wasm-types" + "github.com/strangelove-ventures/interchaintest/v9/chain/internal/tendermint" + "github.com/strangelove-ventures/interchaintest/v9/dockerutil" + "github.com/strangelove-ventures/interchaintest/v9/ibc" + "github.com/strangelove-ventures/interchaintest/v9/testutil" ) // CosmosChain is a local docker testnet for a Cosmos SDK chain. diff --git a/chain/cosmos/genesis.go b/chain/cosmos/genesis.go index 4b67003e8..ee4fe635f 100644 --- a/chain/cosmos/genesis.go +++ b/chain/cosmos/genesis.go @@ -8,7 +8,7 @@ import ( "github.com/icza/dyno" - "github.com/strangelove-ventures/interchaintest/v8/ibc" + "github.com/strangelove-ventures/interchaintest/v9/ibc" ) type GenesisKV struct { diff --git a/chain/cosmos/ics.go b/chain/cosmos/ics.go index 7a731031b..449a36546 100644 --- a/chain/cosmos/ics.go +++ b/chain/cosmos/ics.go @@ -26,10 +26,10 @@ import ( govv1beta1 "github.com/cosmos/cosmos-sdk/x/gov/types/v1beta1" stakingttypes "github.com/cosmos/cosmos-sdk/x/staking/types" - "github.com/strangelove-ventures/interchaintest/v8/dockerutil" - "github.com/strangelove-ventures/interchaintest/v8/ibc" - "github.com/strangelove-ventures/interchaintest/v8/testreporter" - "github.com/strangelove-ventures/interchaintest/v8/testutil" + "github.com/strangelove-ventures/interchaintest/v9/dockerutil" + "github.com/strangelove-ventures/interchaintest/v9/ibc" + "github.com/strangelove-ventures/interchaintest/v9/testreporter" + "github.com/strangelove-ventures/interchaintest/v9/testutil" ) const ( diff --git a/chain/cosmos/module_authz.go b/chain/cosmos/module_authz.go index 93187121f..e986973c5 100644 --- a/chain/cosmos/module_authz.go +++ b/chain/cosmos/module_authz.go @@ -9,7 +9,7 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/x/authz" - "github.com/strangelove-ventures/interchaintest/v8/ibc" + "github.com/strangelove-ventures/interchaintest/v9/ibc" ) // AuthzGrant grants a message as a permission to an account. diff --git a/chain/cosmos/module_bank.go b/chain/cosmos/module_bank.go index 0dd9f69ef..9554a571f 100644 --- a/chain/cosmos/module_bank.go +++ b/chain/cosmos/module_bank.go @@ -9,7 +9,7 @@ import ( "github.com/cosmos/cosmos-sdk/types" banktypes "github.com/cosmos/cosmos-sdk/x/bank/types" - "github.com/strangelove-ventures/interchaintest/v8/ibc" + "github.com/strangelove-ventures/interchaintest/v9/ibc" ) // BankSend sends tokens from one account to another. diff --git a/chain/cosmos/module_cosmwasm.go b/chain/cosmos/module_cosmwasm.go index 1f00eee2c..cf90ae5c2 100644 --- a/chain/cosmos/module_cosmwasm.go +++ b/chain/cosmos/module_cosmwasm.go @@ -12,7 +12,7 @@ import ( "github.com/cosmos/cosmos-sdk/types" - "github.com/strangelove-ventures/interchaintest/v8/testutil" + "github.com/strangelove-ventures/interchaintest/v9/testutil" ) type InstantiateContractAttribute struct { diff --git a/chain/cosmos/module_gov.go b/chain/cosmos/module_gov.go index b139fac1e..2dbdcfe8b 100644 --- a/chain/cosmos/module_gov.go +++ b/chain/cosmos/module_gov.go @@ -15,7 +15,7 @@ import ( govv1beta1 "github.com/cosmos/cosmos-sdk/x/gov/types/v1beta1" paramsutils "github.com/cosmos/cosmos-sdk/x/params/client/utils" - "github.com/strangelove-ventures/interchaintest/v8/dockerutil" + "github.com/strangelove-ventures/interchaintest/v9/dockerutil" ) // VoteOnProposal submits a vote for the specified proposal. diff --git a/chain/cosmos/module_tokenfactory.go b/chain/cosmos/module_tokenfactory.go index ae35f66d0..97c215dc3 100644 --- a/chain/cosmos/module_tokenfactory.go +++ b/chain/cosmos/module_tokenfactory.go @@ -6,7 +6,7 @@ import ( "fmt" "strconv" - "github.com/strangelove-ventures/interchaintest/v8/ibc" + "github.com/strangelove-ventures/interchaintest/v9/ibc" ) // TokenFactoryCreateDenom creates a new tokenfactory token in the format 'factory/accountaddress/name'. diff --git a/chain/cosmos/module_vesting.go b/chain/cosmos/module_vesting.go index 802f5f5b1..8e26ef267 100644 --- a/chain/cosmos/module_vesting.go +++ b/chain/cosmos/module_vesting.go @@ -8,7 +8,7 @@ import ( vestingcli "github.com/cosmos/cosmos-sdk/x/auth/vesting/client/cli" - "github.com/strangelove-ventures/interchaintest/v8/dockerutil" + "github.com/strangelove-ventures/interchaintest/v9/dockerutil" ) // VestingCreateAccount creates a new vesting account funded with an allocation of tokens. The account can either be a delayed or continuous vesting account, which is determined by the '--delayed' flag. diff --git a/chain/cosmos/node_test.go b/chain/cosmos/node_test.go index 787fd0d2b..98afc7376 100644 --- a/chain/cosmos/node_test.go +++ b/chain/cosmos/node_test.go @@ -8,7 +8,7 @@ import ( stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" - "github.com/strangelove-ventures/interchaintest/v8/chain/cosmos" + "github.com/strangelove-ventures/interchaintest/v9/chain/cosmos" ) func TestCondenseMoniker_MiddleDetail(t *testing.T) { diff --git a/chain/cosmos/osmosis.go b/chain/cosmos/osmosis.go index f850d0a4c..1d17144f1 100644 --- a/chain/cosmos/osmosis.go +++ b/chain/cosmos/osmosis.go @@ -7,7 +7,7 @@ import ( "path/filepath" "strings" - "github.com/strangelove-ventures/interchaintest/v8/dockerutil" + "github.com/strangelove-ventures/interchaintest/v9/dockerutil" ) // OsmosisPoolParams defines parameters for creating an osmosis gamm liquidity pool. diff --git a/chain/cosmos/poll.go b/chain/cosmos/poll.go index 0d6fa8908..956719491 100644 --- a/chain/cosmos/poll.go +++ b/chain/cosmos/poll.go @@ -9,8 +9,8 @@ import ( govv1 "github.com/cosmos/cosmos-sdk/x/gov/types/v1" govv1beta1 "github.com/cosmos/cosmos-sdk/x/gov/types/v1beta1" - "github.com/strangelove-ventures/interchaintest/v8/ibc" - "github.com/strangelove-ventures/interchaintest/v8/testutil" + "github.com/strangelove-ventures/interchaintest/v9/ibc" + "github.com/strangelove-ventures/interchaintest/v9/testutil" ) // PollForProposalStatus attempts to find a proposal with matching ID and status using gov v1. diff --git a/chain/cosmos/sidecar.go b/chain/cosmos/sidecar.go index 7dcf88a03..f0abbc184 100644 --- a/chain/cosmos/sidecar.go +++ b/chain/cosmos/sidecar.go @@ -9,8 +9,8 @@ import ( "github.com/docker/go-connections/nat" "go.uber.org/zap" - "github.com/strangelove-ventures/interchaintest/v8/dockerutil" - "github.com/strangelove-ventures/interchaintest/v8/ibc" + "github.com/strangelove-ventures/interchaintest/v9/dockerutil" + "github.com/strangelove-ventures/interchaintest/v9/ibc" ) type SidecarProcesses []*SidecarProcess diff --git a/chain/cosmos/wallet.go b/chain/cosmos/wallet.go index 5f4bb0598..0d8162893 100644 --- a/chain/cosmos/wallet.go +++ b/chain/cosmos/wallet.go @@ -3,7 +3,7 @@ package cosmos import ( "github.com/cosmos/cosmos-sdk/types" - "github.com/strangelove-ventures/interchaintest/v8/ibc" + "github.com/strangelove-ventures/interchaintest/v9/ibc" ) var ( diff --git a/chain/cosmos/wasm/wasm.go b/chain/cosmos/wasm/wasm.go index 4c818d485..556a6882f 100644 --- a/chain/cosmos/wasm/wasm.go +++ b/chain/cosmos/wasm/wasm.go @@ -6,7 +6,7 @@ import ( "github.com/cosmos/cosmos-sdk/types/module/testutil" // simappparams "github.com/cosmos/cosmos-sdk/simapp/params". - "github.com/strangelove-ventures/interchaintest/v8/chain/cosmos" + "github.com/strangelove-ventures/interchaintest/v9/chain/cosmos" ) func WasmEncoding() *testutil.TestEncodingConfig { diff --git a/chain/ethereum/ethererum_chain.go b/chain/ethereum/ethererum_chain.go index 7c22e324e..a7477b115 100644 --- a/chain/ethereum/ethererum_chain.go +++ b/chain/ethereum/ethererum_chain.go @@ -18,9 +18,9 @@ import ( sdkmath "cosmossdk.io/math" - "github.com/strangelove-ventures/interchaintest/v8/dockerutil" - "github.com/strangelove-ventures/interchaintest/v8/ibc" - "github.com/strangelove-ventures/interchaintest/v8/testutil" + "github.com/strangelove-ventures/interchaintest/v9/dockerutil" + "github.com/strangelove-ventures/interchaintest/v9/ibc" + "github.com/strangelove-ventures/interchaintest/v9/testutil" ) const ( diff --git a/chain/ethereum/foundry/anvil_chain.go b/chain/ethereum/foundry/anvil_chain.go index e2abca932..2076285f8 100644 --- a/chain/ethereum/foundry/anvil_chain.go +++ b/chain/ethereum/foundry/anvil_chain.go @@ -14,8 +14,8 @@ import ( "github.com/ethereum/go-ethereum/common/hexutil" "go.uber.org/zap" - "github.com/strangelove-ventures/interchaintest/v8/chain/ethereum" - "github.com/strangelove-ventures/interchaintest/v8/ibc" + "github.com/strangelove-ventures/interchaintest/v9/chain/ethereum" + "github.com/strangelove-ventures/interchaintest/v9/ibc" ) var _ ibc.Chain = &AnvilChain{} diff --git a/chain/ethereum/foundry/default_configs.go b/chain/ethereum/foundry/default_configs.go index 4c6ce2e5d..f42fba7d6 100644 --- a/chain/ethereum/foundry/default_configs.go +++ b/chain/ethereum/foundry/default_configs.go @@ -1,7 +1,7 @@ package foundry import ( - "github.com/strangelove-ventures/interchaintest/v8/ibc" + "github.com/strangelove-ventures/interchaintest/v9/ibc" ) func DefaultEthereumAnvilChainConfig( diff --git a/chain/ethereum/foundry/forge.go b/chain/ethereum/foundry/forge.go index 224298189..a8f740a8e 100644 --- a/chain/ethereum/foundry/forge.go +++ b/chain/ethereum/foundry/forge.go @@ -9,7 +9,7 @@ import ( "github.com/docker/docker/api/types/mount" - "github.com/strangelove-ventures/interchaintest/v8/dockerutil" + "github.com/strangelove-ventures/interchaintest/v9/dockerutil" ) // cli options for the `forge script` command diff --git a/chain/ethereum/geth/default_configs.go b/chain/ethereum/geth/default_configs.go index 47434556f..8dcfb740c 100644 --- a/chain/ethereum/geth/default_configs.go +++ b/chain/ethereum/geth/default_configs.go @@ -1,7 +1,7 @@ package geth import ( - "github.com/strangelove-ventures/interchaintest/v8/ibc" + "github.com/strangelove-ventures/interchaintest/v9/ibc" ) func DefaultEthereumGethChainConfig( diff --git a/chain/ethereum/geth/geth_chain.go b/chain/ethereum/geth/geth_chain.go index 373ed693f..0724c0767 100644 --- a/chain/ethereum/geth/geth_chain.go +++ b/chain/ethereum/geth/geth_chain.go @@ -14,9 +14,9 @@ import ( "github.com/cosmos/cosmos-sdk/crypto/hd" - "github.com/strangelove-ventures/interchaintest/v8/chain/ethereum" - "github.com/strangelove-ventures/interchaintest/v8/ibc" - "github.com/strangelove-ventures/interchaintest/v8/testutil" + "github.com/strangelove-ventures/interchaintest/v9/chain/ethereum" + "github.com/strangelove-ventures/interchaintest/v9/ibc" + "github.com/strangelove-ventures/interchaintest/v9/testutil" ) var _ ibc.Chain = &GethChain{} diff --git a/chain/ethereum/unimplemented.go b/chain/ethereum/unimplemented.go index 4893aaf49..298ae53b4 100644 --- a/chain/ethereum/unimplemented.go +++ b/chain/ethereum/unimplemented.go @@ -4,7 +4,7 @@ import ( "context" "runtime" - "github.com/strangelove-ventures/interchaintest/v8/ibc" + "github.com/strangelove-ventures/interchaintest/v9/ibc" ) func PanicFunctionName() { diff --git a/chain/ethereum/wallet.go b/chain/ethereum/wallet.go index e315a3629..50c128157 100644 --- a/chain/ethereum/wallet.go +++ b/chain/ethereum/wallet.go @@ -3,7 +3,7 @@ package ethereum import ( "github.com/ethereum/go-ethereum/common/hexutil" - "github.com/strangelove-ventures/interchaintest/v8/ibc" + "github.com/strangelove-ventures/interchaintest/v9/ibc" ) var _ ibc.Wallet = &EthereumWallet{} diff --git a/chain/internal/tendermint/tendermint_node.go b/chain/internal/tendermint/tendermint_node.go index 46f027d37..e1b1213d1 100644 --- a/chain/internal/tendermint/tendermint_node.go +++ b/chain/internal/tendermint/tendermint_node.go @@ -21,9 +21,9 @@ import ( rpchttp "github.com/cometbft/cometbft/rpc/client/http" libclient "github.com/cometbft/cometbft/rpc/jsonrpc/client" - "github.com/strangelove-ventures/interchaintest/v8/dockerutil" - "github.com/strangelove-ventures/interchaintest/v8/ibc" - "github.com/strangelove-ventures/interchaintest/v8/testutil" + "github.com/strangelove-ventures/interchaintest/v9/dockerutil" + "github.com/strangelove-ventures/interchaintest/v9/ibc" + "github.com/strangelove-ventures/interchaintest/v9/testutil" ) // TendermintNode represents a node in the test network that is being created. diff --git a/chain/namada/namada_chain.go b/chain/namada/namada_chain.go index 7a5d0e226..e5da10cf5 100644 --- a/chain/namada/namada_chain.go +++ b/chain/namada/namada_chain.go @@ -27,9 +27,9 @@ import ( cometbft "github.com/cometbft/cometbft/abci/types" - "github.com/strangelove-ventures/interchaintest/v8/chain/internal/tendermint" - "github.com/strangelove-ventures/interchaintest/v8/ibc" - "github.com/strangelove-ventures/interchaintest/v8/testutil" + "github.com/strangelove-ventures/interchaintest/v9/chain/internal/tendermint" + "github.com/strangelove-ventures/interchaintest/v9/ibc" + "github.com/strangelove-ventures/interchaintest/v9/testutil" ) const ( diff --git a/chain/namada/namada_node.go b/chain/namada/namada_node.go index ce265a4ec..fc85eb4f1 100644 --- a/chain/namada/namada_node.go +++ b/chain/namada/namada_node.go @@ -13,14 +13,15 @@ import ( volumetypes "github.com/docker/docker/api/types/volume" dockerclient "github.com/docker/docker/client" "github.com/docker/go-connections/nat" + // To use a legacy tendermint client. rpcclient "github.com/tendermint/tendermint/rpc/client" rpchttp "github.com/tendermint/tendermint/rpc/client/http" libclient "github.com/tendermint/tendermint/rpc/jsonrpc/client" "go.uber.org/zap" - "github.com/strangelove-ventures/interchaintest/v8/dockerutil" - "github.com/strangelove-ventures/interchaintest/v8/ibc" + "github.com/strangelove-ventures/interchaintest/v9/dockerutil" + "github.com/strangelove-ventures/interchaintest/v9/ibc" ) type NamadaNode struct { diff --git a/chain/namada/wallet.go b/chain/namada/wallet.go index eea265aaf..544309e05 100644 --- a/chain/namada/wallet.go +++ b/chain/namada/wallet.go @@ -3,7 +3,7 @@ package namada import ( "fmt" - "github.com/strangelove-ventures/interchaintest/v8/ibc" + "github.com/strangelove-ventures/interchaintest/v9/ibc" ) var _ ibc.Wallet = &NamadaWallet{} diff --git a/chain/penumbra/core/app/v1/app.pb.go b/chain/penumbra/core/app/v1/app.pb.go index b18c8a031..4d10a909b 100644 --- a/chain/penumbra/core/app/v1/app.pb.go +++ b/chain/penumbra/core/app/v1/app.pb.go @@ -8,18 +8,18 @@ import ( fmt "fmt" grpc1 "github.com/cosmos/gogoproto/grpc" proto "github.com/cosmos/gogoproto/proto" - v111 "github.com/strangelove-ventures/interchaintest/v8/chain/penumbra/core/component/auction/v1" - v12 "github.com/strangelove-ventures/interchaintest/v8/chain/penumbra/core/component/community_pool/v1" - v110 "github.com/strangelove-ventures/interchaintest/v8/chain/penumbra/core/component/dex/v1" - v17 "github.com/strangelove-ventures/interchaintest/v8/chain/penumbra/core/component/distributions/v1" - v16 "github.com/strangelove-ventures/interchaintest/v8/chain/penumbra/core/component/fee/v1" - v18 "github.com/strangelove-ventures/interchaintest/v8/chain/penumbra/core/component/funding/v1" - v13 "github.com/strangelove-ventures/interchaintest/v8/chain/penumbra/core/component/governance/v1" - v14 "github.com/strangelove-ventures/interchaintest/v8/chain/penumbra/core/component/ibc/v1" - v11 "github.com/strangelove-ventures/interchaintest/v8/chain/penumbra/core/component/sct/v1" - v19 "github.com/strangelove-ventures/interchaintest/v8/chain/penumbra/core/component/shielded_pool/v1" - v15 "github.com/strangelove-ventures/interchaintest/v8/chain/penumbra/core/component/stake/v1" - v1 "github.com/strangelove-ventures/interchaintest/v8/chain/penumbra/core/transaction/v1" + v111 "github.com/strangelove-ventures/interchaintest/v9/chain/penumbra/core/component/auction/v1" + v12 "github.com/strangelove-ventures/interchaintest/v9/chain/penumbra/core/component/community_pool/v1" + v110 "github.com/strangelove-ventures/interchaintest/v9/chain/penumbra/core/component/dex/v1" + v17 "github.com/strangelove-ventures/interchaintest/v9/chain/penumbra/core/component/distributions/v1" + v16 "github.com/strangelove-ventures/interchaintest/v9/chain/penumbra/core/component/fee/v1" + v18 "github.com/strangelove-ventures/interchaintest/v9/chain/penumbra/core/component/funding/v1" + v13 "github.com/strangelove-ventures/interchaintest/v9/chain/penumbra/core/component/governance/v1" + v14 "github.com/strangelove-ventures/interchaintest/v9/chain/penumbra/core/component/ibc/v1" + v11 "github.com/strangelove-ventures/interchaintest/v9/chain/penumbra/core/component/sct/v1" + v19 "github.com/strangelove-ventures/interchaintest/v9/chain/penumbra/core/component/shielded_pool/v1" + v15 "github.com/strangelove-ventures/interchaintest/v9/chain/penumbra/core/component/stake/v1" + v1 "github.com/strangelove-ventures/interchaintest/v9/chain/penumbra/core/transaction/v1" grpc "google.golang.org/grpc" codes "google.golang.org/grpc/codes" status "google.golang.org/grpc/status" diff --git a/chain/penumbra/core/asset/v1/asset.pb.go b/chain/penumbra/core/asset/v1/asset.pb.go index 8ee968015..6da3659da 100644 --- a/chain/penumbra/core/asset/v1/asset.pb.go +++ b/chain/penumbra/core/asset/v1/asset.pb.go @@ -8,7 +8,7 @@ import ( fmt "fmt" types "github.com/cosmos/cosmos-sdk/codec/types" proto "github.com/cosmos/gogoproto/proto" - v1 "github.com/strangelove-ventures/interchaintest/v8/chain/penumbra/core/num/v1" + v1 "github.com/strangelove-ventures/interchaintest/v9/chain/penumbra/core/num/v1" io "io" math "math" math_bits "math/bits" diff --git a/chain/penumbra/core/component/auction/v1/auction.pb.go b/chain/penumbra/core/component/auction/v1/auction.pb.go index a7948415d..8bf5b3912 100644 --- a/chain/penumbra/core/component/auction/v1/auction.pb.go +++ b/chain/penumbra/core/component/auction/v1/auction.pb.go @@ -9,9 +9,9 @@ import ( types "github.com/cosmos/cosmos-sdk/codec/types" grpc1 "github.com/cosmos/gogoproto/grpc" proto "github.com/cosmos/gogoproto/proto" - v11 "github.com/strangelove-ventures/interchaintest/v8/chain/penumbra/core/asset/v1" - v1 "github.com/strangelove-ventures/interchaintest/v8/chain/penumbra/core/component/dex/v1" - v12 "github.com/strangelove-ventures/interchaintest/v8/chain/penumbra/core/num/v1" + v11 "github.com/strangelove-ventures/interchaintest/v9/chain/penumbra/core/asset/v1" + v1 "github.com/strangelove-ventures/interchaintest/v9/chain/penumbra/core/component/dex/v1" + v12 "github.com/strangelove-ventures/interchaintest/v9/chain/penumbra/core/num/v1" grpc "google.golang.org/grpc" codes "google.golang.org/grpc/codes" status "google.golang.org/grpc/status" diff --git a/chain/penumbra/core/component/community_pool/v1/community_pool.pb.go b/chain/penumbra/core/component/community_pool/v1/community_pool.pb.go index 8ffd55e5f..13bd1babd 100644 --- a/chain/penumbra/core/component/community_pool/v1/community_pool.pb.go +++ b/chain/penumbra/core/component/community_pool/v1/community_pool.pb.go @@ -8,7 +8,7 @@ import ( fmt "fmt" grpc1 "github.com/cosmos/gogoproto/grpc" proto "github.com/cosmos/gogoproto/proto" - v1 "github.com/strangelove-ventures/interchaintest/v8/chain/penumbra/core/asset/v1" + v1 "github.com/strangelove-ventures/interchaintest/v9/chain/penumbra/core/asset/v1" grpc "google.golang.org/grpc" codes "google.golang.org/grpc/codes" status "google.golang.org/grpc/status" diff --git a/chain/penumbra/core/component/compact_block/v1/compact_block.pb.go b/chain/penumbra/core/component/compact_block/v1/compact_block.pb.go index cbdac2261..b4530a347 100644 --- a/chain/penumbra/core/component/compact_block/v1/compact_block.pb.go +++ b/chain/penumbra/core/component/compact_block/v1/compact_block.pb.go @@ -8,11 +8,11 @@ import ( fmt "fmt" grpc1 "github.com/cosmos/gogoproto/grpc" proto "github.com/cosmos/gogoproto/proto" - v13 "github.com/strangelove-ventures/interchaintest/v8/chain/penumbra/core/component/dex/v1" - v14 "github.com/strangelove-ventures/interchaintest/v8/chain/penumbra/core/component/fee/v1" - v1 "github.com/strangelove-ventures/interchaintest/v8/chain/penumbra/core/component/sct/v1" - v12 "github.com/strangelove-ventures/interchaintest/v8/chain/penumbra/core/component/shielded_pool/v1" - v11 "github.com/strangelove-ventures/interchaintest/v8/chain/penumbra/crypto/tct/v1" + v13 "github.com/strangelove-ventures/interchaintest/v9/chain/penumbra/core/component/dex/v1" + v14 "github.com/strangelove-ventures/interchaintest/v9/chain/penumbra/core/component/fee/v1" + v1 "github.com/strangelove-ventures/interchaintest/v9/chain/penumbra/core/component/sct/v1" + v12 "github.com/strangelove-ventures/interchaintest/v9/chain/penumbra/core/component/shielded_pool/v1" + v11 "github.com/strangelove-ventures/interchaintest/v9/chain/penumbra/crypto/tct/v1" grpc "google.golang.org/grpc" codes "google.golang.org/grpc/codes" status "google.golang.org/grpc/status" diff --git a/chain/penumbra/core/component/dex/v1/dex.pb.go b/chain/penumbra/core/component/dex/v1/dex.pb.go index 4ae28d626..5b368ac6f 100644 --- a/chain/penumbra/core/component/dex/v1/dex.pb.go +++ b/chain/penumbra/core/component/dex/v1/dex.pb.go @@ -9,14 +9,14 @@ import ( fmt "fmt" grpc1 "github.com/cosmos/gogoproto/grpc" proto "github.com/cosmos/gogoproto/proto" - v14 "github.com/strangelove-ventures/interchaintest/v8/chain/penumbra/core/asset/v1" - v11 "github.com/strangelove-ventures/interchaintest/v8/chain/penumbra/core/component/fee/v1" - v1 "github.com/strangelove-ventures/interchaintest/v8/chain/penumbra/core/component/sct/v1" - v17 "github.com/strangelove-ventures/interchaintest/v8/chain/penumbra/core/component/shielded_pool/v1" - v15 "github.com/strangelove-ventures/interchaintest/v8/chain/penumbra/core/keys/v1" - v13 "github.com/strangelove-ventures/interchaintest/v8/chain/penumbra/core/num/v1" - v16 "github.com/strangelove-ventures/interchaintest/v8/chain/penumbra/core/txhash/v1" - v12 "github.com/strangelove-ventures/interchaintest/v8/chain/penumbra/crypto/tct/v1" + v14 "github.com/strangelove-ventures/interchaintest/v9/chain/penumbra/core/asset/v1" + v11 "github.com/strangelove-ventures/interchaintest/v9/chain/penumbra/core/component/fee/v1" + v1 "github.com/strangelove-ventures/interchaintest/v9/chain/penumbra/core/component/sct/v1" + v17 "github.com/strangelove-ventures/interchaintest/v9/chain/penumbra/core/component/shielded_pool/v1" + v15 "github.com/strangelove-ventures/interchaintest/v9/chain/penumbra/core/keys/v1" + v13 "github.com/strangelove-ventures/interchaintest/v9/chain/penumbra/core/num/v1" + v16 "github.com/strangelove-ventures/interchaintest/v9/chain/penumbra/core/txhash/v1" + v12 "github.com/strangelove-ventures/interchaintest/v9/chain/penumbra/crypto/tct/v1" grpc "google.golang.org/grpc" codes "google.golang.org/grpc/codes" status "google.golang.org/grpc/status" diff --git a/chain/penumbra/core/component/fee/v1/fee.pb.go b/chain/penumbra/core/component/fee/v1/fee.pb.go index a1cc0a19b..38141943c 100644 --- a/chain/penumbra/core/component/fee/v1/fee.pb.go +++ b/chain/penumbra/core/component/fee/v1/fee.pb.go @@ -8,8 +8,8 @@ import ( fmt "fmt" grpc1 "github.com/cosmos/gogoproto/grpc" proto "github.com/cosmos/gogoproto/proto" - v11 "github.com/strangelove-ventures/interchaintest/v8/chain/penumbra/core/asset/v1" - v1 "github.com/strangelove-ventures/interchaintest/v8/chain/penumbra/core/num/v1" + v11 "github.com/strangelove-ventures/interchaintest/v9/chain/penumbra/core/asset/v1" + v1 "github.com/strangelove-ventures/interchaintest/v9/chain/penumbra/core/num/v1" grpc "google.golang.org/grpc" codes "google.golang.org/grpc/codes" status "google.golang.org/grpc/status" diff --git a/chain/penumbra/core/component/funding/v1/funding.pb.go b/chain/penumbra/core/component/funding/v1/funding.pb.go index 174d3e993..581821802 100644 --- a/chain/penumbra/core/component/funding/v1/funding.pb.go +++ b/chain/penumbra/core/component/funding/v1/funding.pb.go @@ -6,7 +6,7 @@ package fundingv1 import ( fmt "fmt" proto "github.com/cosmos/gogoproto/proto" - v1 "github.com/strangelove-ventures/interchaintest/v8/chain/penumbra/core/num/v1" + v1 "github.com/strangelove-ventures/interchaintest/v9/chain/penumbra/core/num/v1" io "io" math "math" math_bits "math/bits" diff --git a/chain/penumbra/core/component/governance/v1/governance.pb.go b/chain/penumbra/core/component/governance/v1/governance.pb.go index 0990a918e..b0954045b 100644 --- a/chain/penumbra/core/component/governance/v1/governance.pb.go +++ b/chain/penumbra/core/component/governance/v1/governance.pb.go @@ -9,20 +9,20 @@ import ( types "github.com/cosmos/cosmos-sdk/codec/types" grpc1 "github.com/cosmos/gogoproto/grpc" proto "github.com/cosmos/gogoproto/proto" - v13 "github.com/strangelove-ventures/interchaintest/v8/chain/penumbra/core/asset/v1" - v113 "github.com/strangelove-ventures/interchaintest/v8/chain/penumbra/core/component/auction/v1" - v17 "github.com/strangelove-ventures/interchaintest/v8/chain/penumbra/core/component/community_pool/v1" - v112 "github.com/strangelove-ventures/interchaintest/v8/chain/penumbra/core/component/dex/v1" - v110 "github.com/strangelove-ventures/interchaintest/v8/chain/penumbra/core/component/distributions/v1" - v19 "github.com/strangelove-ventures/interchaintest/v8/chain/penumbra/core/component/fee/v1" - v111 "github.com/strangelove-ventures/interchaintest/v8/chain/penumbra/core/component/funding/v1" - v18 "github.com/strangelove-ventures/interchaintest/v8/chain/penumbra/core/component/ibc/v1" - v14 "github.com/strangelove-ventures/interchaintest/v8/chain/penumbra/core/component/sct/v1" - v15 "github.com/strangelove-ventures/interchaintest/v8/chain/penumbra/core/component/shielded_pool/v1" - v16 "github.com/strangelove-ventures/interchaintest/v8/chain/penumbra/core/component/stake/v1" - v12 "github.com/strangelove-ventures/interchaintest/v8/chain/penumbra/core/keys/v1" - v1 "github.com/strangelove-ventures/interchaintest/v8/chain/penumbra/core/num/v1" - v11 "github.com/strangelove-ventures/interchaintest/v8/chain/penumbra/crypto/decaf377_rdsa/v1" + v13 "github.com/strangelove-ventures/interchaintest/v9/chain/penumbra/core/asset/v1" + v113 "github.com/strangelove-ventures/interchaintest/v9/chain/penumbra/core/component/auction/v1" + v17 "github.com/strangelove-ventures/interchaintest/v9/chain/penumbra/core/component/community_pool/v1" + v112 "github.com/strangelove-ventures/interchaintest/v9/chain/penumbra/core/component/dex/v1" + v110 "github.com/strangelove-ventures/interchaintest/v9/chain/penumbra/core/component/distributions/v1" + v19 "github.com/strangelove-ventures/interchaintest/v9/chain/penumbra/core/component/fee/v1" + v111 "github.com/strangelove-ventures/interchaintest/v9/chain/penumbra/core/component/funding/v1" + v18 "github.com/strangelove-ventures/interchaintest/v9/chain/penumbra/core/component/ibc/v1" + v14 "github.com/strangelove-ventures/interchaintest/v9/chain/penumbra/core/component/sct/v1" + v15 "github.com/strangelove-ventures/interchaintest/v9/chain/penumbra/core/component/shielded_pool/v1" + v16 "github.com/strangelove-ventures/interchaintest/v9/chain/penumbra/core/component/stake/v1" + v12 "github.com/strangelove-ventures/interchaintest/v9/chain/penumbra/core/keys/v1" + v1 "github.com/strangelove-ventures/interchaintest/v9/chain/penumbra/core/num/v1" + v11 "github.com/strangelove-ventures/interchaintest/v9/chain/penumbra/crypto/decaf377_rdsa/v1" grpc "google.golang.org/grpc" codes "google.golang.org/grpc/codes" status "google.golang.org/grpc/status" diff --git a/chain/penumbra/core/component/ibc/v1/ibc.pb.go b/chain/penumbra/core/component/ibc/v1/ibc.pb.go index b8503b05c..3c2390838 100644 --- a/chain/penumbra/core/component/ibc/v1/ibc.pb.go +++ b/chain/penumbra/core/component/ibc/v1/ibc.pb.go @@ -8,9 +8,9 @@ import ( types "github.com/cosmos/cosmos-sdk/codec/types" proto "github.com/cosmos/gogoproto/proto" types1 "github.com/cosmos/ibc-go/v8/modules/core/02-client/types" - v11 "github.com/strangelove-ventures/interchaintest/v8/chain/penumbra/core/asset/v1" - v12 "github.com/strangelove-ventures/interchaintest/v8/chain/penumbra/core/keys/v1" - v1 "github.com/strangelove-ventures/interchaintest/v8/chain/penumbra/core/num/v1" + v11 "github.com/strangelove-ventures/interchaintest/v9/chain/penumbra/core/asset/v1" + v12 "github.com/strangelove-ventures/interchaintest/v9/chain/penumbra/core/keys/v1" + v1 "github.com/strangelove-ventures/interchaintest/v9/chain/penumbra/core/num/v1" io "io" math "math" math_bits "math/bits" diff --git a/chain/penumbra/core/component/sct/v1/sct.pb.go b/chain/penumbra/core/component/sct/v1/sct.pb.go index e6d67602f..7580be2ce 100644 --- a/chain/penumbra/core/component/sct/v1/sct.pb.go +++ b/chain/penumbra/core/component/sct/v1/sct.pb.go @@ -9,7 +9,7 @@ import ( grpc1 "github.com/cosmos/gogoproto/grpc" proto "github.com/cosmos/gogoproto/proto" types "github.com/cosmos/gogoproto/types" - v1 "github.com/strangelove-ventures/interchaintest/v8/chain/penumbra/crypto/tct/v1" + v1 "github.com/strangelove-ventures/interchaintest/v9/chain/penumbra/crypto/tct/v1" grpc "google.golang.org/grpc" codes "google.golang.org/grpc/codes" status "google.golang.org/grpc/status" diff --git a/chain/penumbra/core/component/shielded_pool/v1/shielded_pool.pb.go b/chain/penumbra/core/component/shielded_pool/v1/shielded_pool.pb.go index fe8ac00e7..fa5f98bdb 100644 --- a/chain/penumbra/core/component/shielded_pool/v1/shielded_pool.pb.go +++ b/chain/penumbra/core/component/shielded_pool/v1/shielded_pool.pb.go @@ -8,14 +8,14 @@ import ( fmt "fmt" grpc1 "github.com/cosmos/gogoproto/grpc" proto "github.com/cosmos/gogoproto/proto" - v12 "github.com/strangelove-ventures/interchaintest/v8/chain/penumbra/core/asset/v1" - v15 "github.com/strangelove-ventures/interchaintest/v8/chain/penumbra/core/component/sct/v1" - v11 "github.com/strangelove-ventures/interchaintest/v8/chain/penumbra/core/keys/v1" - v1 "github.com/strangelove-ventures/interchaintest/v8/chain/penumbra/core/num/v1" - v17 "github.com/strangelove-ventures/interchaintest/v8/chain/penumbra/core/txhash/v1" - v16 "github.com/strangelove-ventures/interchaintest/v8/chain/penumbra/crypto/decaf377_fmd/v1" - v14 "github.com/strangelove-ventures/interchaintest/v8/chain/penumbra/crypto/decaf377_rdsa/v1" - v13 "github.com/strangelove-ventures/interchaintest/v8/chain/penumbra/crypto/tct/v1" + v12 "github.com/strangelove-ventures/interchaintest/v9/chain/penumbra/core/asset/v1" + v15 "github.com/strangelove-ventures/interchaintest/v9/chain/penumbra/core/component/sct/v1" + v11 "github.com/strangelove-ventures/interchaintest/v9/chain/penumbra/core/keys/v1" + v1 "github.com/strangelove-ventures/interchaintest/v9/chain/penumbra/core/num/v1" + v17 "github.com/strangelove-ventures/interchaintest/v9/chain/penumbra/core/txhash/v1" + v16 "github.com/strangelove-ventures/interchaintest/v9/chain/penumbra/crypto/decaf377_fmd/v1" + v14 "github.com/strangelove-ventures/interchaintest/v9/chain/penumbra/crypto/decaf377_rdsa/v1" + v13 "github.com/strangelove-ventures/interchaintest/v9/chain/penumbra/crypto/tct/v1" grpc "google.golang.org/grpc" codes "google.golang.org/grpc/codes" status "google.golang.org/grpc/status" diff --git a/chain/penumbra/core/component/stake/v1/stake.pb.go b/chain/penumbra/core/component/stake/v1/stake.pb.go index 7515f763f..f38f02563 100644 --- a/chain/penumbra/core/component/stake/v1/stake.pb.go +++ b/chain/penumbra/core/component/stake/v1/stake.pb.go @@ -8,10 +8,10 @@ import ( fmt "fmt" grpc1 "github.com/cosmos/gogoproto/grpc" proto "github.com/cosmos/gogoproto/proto" - v13 "github.com/strangelove-ventures/interchaintest/v8/chain/penumbra/core/asset/v1" - v12 "github.com/strangelove-ventures/interchaintest/v8/chain/penumbra/core/component/sct/v1" - v1 "github.com/strangelove-ventures/interchaintest/v8/chain/penumbra/core/keys/v1" - v11 "github.com/strangelove-ventures/interchaintest/v8/chain/penumbra/core/num/v1" + v13 "github.com/strangelove-ventures/interchaintest/v9/chain/penumbra/core/asset/v1" + v12 "github.com/strangelove-ventures/interchaintest/v9/chain/penumbra/core/component/sct/v1" + v1 "github.com/strangelove-ventures/interchaintest/v9/chain/penumbra/core/keys/v1" + v11 "github.com/strangelove-ventures/interchaintest/v9/chain/penumbra/core/num/v1" grpc "google.golang.org/grpc" codes "google.golang.org/grpc/codes" status "google.golang.org/grpc/status" diff --git a/chain/penumbra/core/transaction/v1/transaction.pb.go b/chain/penumbra/core/transaction/v1/transaction.pb.go index e38fda34d..77c8312fa 100644 --- a/chain/penumbra/core/transaction/v1/transaction.pb.go +++ b/chain/penumbra/core/transaction/v1/transaction.pb.go @@ -7,20 +7,20 @@ import ( fmt "fmt" types "github.com/cosmos/cosmos-sdk/codec/types" proto "github.com/cosmos/gogoproto/proto" - v111 "github.com/strangelove-ventures/interchaintest/v8/chain/penumbra/core/asset/v1" - v19 "github.com/strangelove-ventures/interchaintest/v8/chain/penumbra/core/component/auction/v1" - v15 "github.com/strangelove-ventures/interchaintest/v8/chain/penumbra/core/component/dex/v1" - v12 "github.com/strangelove-ventures/interchaintest/v8/chain/penumbra/core/component/fee/v1" - v18 "github.com/strangelove-ventures/interchaintest/v8/chain/penumbra/core/component/governance/v1" - v17 "github.com/strangelove-ventures/interchaintest/v8/chain/penumbra/core/component/ibc/v1" - v113 "github.com/strangelove-ventures/interchaintest/v8/chain/penumbra/core/component/sct/v1" - v14 "github.com/strangelove-ventures/interchaintest/v8/chain/penumbra/core/component/shielded_pool/v1" - v16 "github.com/strangelove-ventures/interchaintest/v8/chain/penumbra/core/component/stake/v1" - v110 "github.com/strangelove-ventures/interchaintest/v8/chain/penumbra/core/keys/v1" - v112 "github.com/strangelove-ventures/interchaintest/v8/chain/penumbra/core/txhash/v1" - v13 "github.com/strangelove-ventures/interchaintest/v8/chain/penumbra/crypto/decaf377_fmd/v1" - v1 "github.com/strangelove-ventures/interchaintest/v8/chain/penumbra/crypto/decaf377_rdsa/v1" - v11 "github.com/strangelove-ventures/interchaintest/v8/chain/penumbra/crypto/tct/v1" + v111 "github.com/strangelove-ventures/interchaintest/v9/chain/penumbra/core/asset/v1" + v19 "github.com/strangelove-ventures/interchaintest/v9/chain/penumbra/core/component/auction/v1" + v15 "github.com/strangelove-ventures/interchaintest/v9/chain/penumbra/core/component/dex/v1" + v12 "github.com/strangelove-ventures/interchaintest/v9/chain/penumbra/core/component/fee/v1" + v18 "github.com/strangelove-ventures/interchaintest/v9/chain/penumbra/core/component/governance/v1" + v17 "github.com/strangelove-ventures/interchaintest/v9/chain/penumbra/core/component/ibc/v1" + v113 "github.com/strangelove-ventures/interchaintest/v9/chain/penumbra/core/component/sct/v1" + v14 "github.com/strangelove-ventures/interchaintest/v9/chain/penumbra/core/component/shielded_pool/v1" + v16 "github.com/strangelove-ventures/interchaintest/v9/chain/penumbra/core/component/stake/v1" + v110 "github.com/strangelove-ventures/interchaintest/v9/chain/penumbra/core/keys/v1" + v112 "github.com/strangelove-ventures/interchaintest/v9/chain/penumbra/core/txhash/v1" + v13 "github.com/strangelove-ventures/interchaintest/v9/chain/penumbra/crypto/decaf377_fmd/v1" + v1 "github.com/strangelove-ventures/interchaintest/v9/chain/penumbra/crypto/decaf377_rdsa/v1" + v11 "github.com/strangelove-ventures/interchaintest/v9/chain/penumbra/crypto/tct/v1" io "io" math "math" math_bits "math/bits" diff --git a/chain/penumbra/custody/threshold/v1/threshold.pb.go b/chain/penumbra/custody/threshold/v1/threshold.pb.go index d5f54e813..b5eec3df7 100644 --- a/chain/penumbra/custody/threshold/v1/threshold.pb.go +++ b/chain/penumbra/custody/threshold/v1/threshold.pb.go @@ -6,10 +6,10 @@ package thresholdv1 import ( fmt "fmt" proto "github.com/cosmos/gogoproto/proto" - v12 "github.com/strangelove-ventures/interchaintest/v8/chain/penumbra/core/component/governance/v1" - v11 "github.com/strangelove-ventures/interchaintest/v8/chain/penumbra/core/component/stake/v1" - v1 "github.com/strangelove-ventures/interchaintest/v8/chain/penumbra/core/transaction/v1" - v13 "github.com/strangelove-ventures/interchaintest/v8/chain/penumbra/crypto/decaf377_frost/v1" + v12 "github.com/strangelove-ventures/interchaintest/v9/chain/penumbra/core/component/governance/v1" + v11 "github.com/strangelove-ventures/interchaintest/v9/chain/penumbra/core/component/stake/v1" + v1 "github.com/strangelove-ventures/interchaintest/v9/chain/penumbra/core/transaction/v1" + v13 "github.com/strangelove-ventures/interchaintest/v9/chain/penumbra/crypto/decaf377_frost/v1" io "io" math "math" math_bits "math/bits" diff --git a/chain/penumbra/custody/v1/custody.pb.go b/chain/penumbra/custody/v1/custody.pb.go index e16ef148d..4d4abfd00 100644 --- a/chain/penumbra/custody/v1/custody.pb.go +++ b/chain/penumbra/custody/v1/custody.pb.go @@ -8,11 +8,11 @@ import ( fmt "fmt" grpc1 "github.com/cosmos/gogoproto/grpc" proto "github.com/cosmos/gogoproto/proto" - v13 "github.com/strangelove-ventures/interchaintest/v8/chain/penumbra/core/component/governance/v1" - v11 "github.com/strangelove-ventures/interchaintest/v8/chain/penumbra/core/component/stake/v1" - v14 "github.com/strangelove-ventures/interchaintest/v8/chain/penumbra/core/keys/v1" - v1 "github.com/strangelove-ventures/interchaintest/v8/chain/penumbra/core/transaction/v1" - v12 "github.com/strangelove-ventures/interchaintest/v8/chain/penumbra/crypto/decaf377_rdsa/v1" + v13 "github.com/strangelove-ventures/interchaintest/v9/chain/penumbra/core/component/governance/v1" + v11 "github.com/strangelove-ventures/interchaintest/v9/chain/penumbra/core/component/stake/v1" + v14 "github.com/strangelove-ventures/interchaintest/v9/chain/penumbra/core/keys/v1" + v1 "github.com/strangelove-ventures/interchaintest/v9/chain/penumbra/core/transaction/v1" + v12 "github.com/strangelove-ventures/interchaintest/v9/chain/penumbra/crypto/decaf377_rdsa/v1" grpc "google.golang.org/grpc" codes "google.golang.org/grpc/codes" status "google.golang.org/grpc/status" diff --git a/chain/penumbra/penumbra_app_node.go b/chain/penumbra/penumbra_app_node.go index c20e9edd2..91a631b72 100644 --- a/chain/penumbra/penumbra_app_node.go +++ b/chain/penumbra/penumbra_app_node.go @@ -14,8 +14,8 @@ import ( "github.com/docker/go-connections/nat" "go.uber.org/zap" - "github.com/strangelove-ventures/interchaintest/v8/dockerutil" - "github.com/strangelove-ventures/interchaintest/v8/ibc" + "github.com/strangelove-ventures/interchaintest/v9/dockerutil" + "github.com/strangelove-ventures/interchaintest/v9/ibc" ) // PenumbraAppNode represents an instance of pcli. diff --git a/chain/penumbra/penumbra_chain.go b/chain/penumbra/penumbra_chain.go index 65acdcc05..2ba570c2c 100644 --- a/chain/penumbra/penumbra_chain.go +++ b/chain/penumbra/penumbra_chain.go @@ -24,10 +24,10 @@ import ( "github.com/cosmos/cosmos-sdk/crypto/hd" "github.com/cosmos/cosmos-sdk/crypto/keyring" - "github.com/strangelove-ventures/interchaintest/v8/chain/internal/tendermint" - "github.com/strangelove-ventures/interchaintest/v8/dockerutil" - "github.com/strangelove-ventures/interchaintest/v8/ibc" - "github.com/strangelove-ventures/interchaintest/v8/testutil" + "github.com/strangelove-ventures/interchaintest/v9/chain/internal/tendermint" + "github.com/strangelove-ventures/interchaintest/v9/dockerutil" + "github.com/strangelove-ventures/interchaintest/v9/ibc" + "github.com/strangelove-ventures/interchaintest/v9/testutil" ) type PenumbraChain struct { diff --git a/chain/penumbra/penumbra_client_node.go b/chain/penumbra/penumbra_client_node.go index 133fea005..cd9355fa2 100644 --- a/chain/penumbra/penumbra_client_node.go +++ b/chain/penumbra/penumbra_client_node.go @@ -24,17 +24,17 @@ import ( //nolint:staticcheck clienttypes "github.com/cosmos/ibc-go/v8/modules/core/02-client/types" - asset "github.com/strangelove-ventures/interchaintest/v8/chain/penumbra/core/asset/v1" - ibcv1 "github.com/strangelove-ventures/interchaintest/v8/chain/penumbra/core/component/ibc/v1" - pool "github.com/strangelove-ventures/interchaintest/v8/chain/penumbra/core/component/shielded_pool/v1" - keys "github.com/strangelove-ventures/interchaintest/v8/chain/penumbra/core/keys/v1" - num "github.com/strangelove-ventures/interchaintest/v8/chain/penumbra/core/num/v1" - transactionv1 "github.com/strangelove-ventures/interchaintest/v8/chain/penumbra/core/transaction/v1" - custody "github.com/strangelove-ventures/interchaintest/v8/chain/penumbra/custody/v1" - view "github.com/strangelove-ventures/interchaintest/v8/chain/penumbra/view/v1" - "github.com/strangelove-ventures/interchaintest/v8/dockerutil" - "github.com/strangelove-ventures/interchaintest/v8/ibc" - "github.com/strangelove-ventures/interchaintest/v8/testutil" + asset "github.com/strangelove-ventures/interchaintest/v9/chain/penumbra/core/asset/v1" + ibcv1 "github.com/strangelove-ventures/interchaintest/v9/chain/penumbra/core/component/ibc/v1" + pool "github.com/strangelove-ventures/interchaintest/v9/chain/penumbra/core/component/shielded_pool/v1" + keys "github.com/strangelove-ventures/interchaintest/v9/chain/penumbra/core/keys/v1" + num "github.com/strangelove-ventures/interchaintest/v9/chain/penumbra/core/num/v1" + transactionv1 "github.com/strangelove-ventures/interchaintest/v9/chain/penumbra/core/transaction/v1" + custody "github.com/strangelove-ventures/interchaintest/v9/chain/penumbra/custody/v1" + view "github.com/strangelove-ventures/interchaintest/v9/chain/penumbra/view/v1" + "github.com/strangelove-ventures/interchaintest/v9/dockerutil" + "github.com/strangelove-ventures/interchaintest/v9/ibc" + "github.com/strangelove-ventures/interchaintest/v9/testutil" ) // PenumbraClientNode represents an instance of pclientd. diff --git a/chain/penumbra/penumbra_client_node_test.go b/chain/penumbra/penumbra_client_node_test.go index c45bfef5e..88eb3b173 100644 --- a/chain/penumbra/penumbra_client_node_test.go +++ b/chain/penumbra/penumbra_client_node_test.go @@ -8,7 +8,7 @@ import ( "cosmossdk.io/math" - "github.com/strangelove-ventures/interchaintest/v8/ibc" + "github.com/strangelove-ventures/interchaintest/v9/ibc" ) // TestBigIntDecoding tests the decoding of big integers. diff --git a/chain/penumbra/penumbra_node.go b/chain/penumbra/penumbra_node.go index 50052b79c..8f6ce5d25 100644 --- a/chain/penumbra/penumbra_node.go +++ b/chain/penumbra/penumbra_node.go @@ -8,8 +8,8 @@ import ( dockerclient "github.com/docker/docker/client" "go.uber.org/zap" - "github.com/strangelove-ventures/interchaintest/v8/chain/internal/tendermint" - "github.com/strangelove-ventures/interchaintest/v8/ibc" + "github.com/strangelove-ventures/interchaintest/v9/chain/internal/tendermint" + "github.com/strangelove-ventures/interchaintest/v9/ibc" ) // PenumbraNode reporesents a node in the Penumbra network which consists of one instance of Tendermint, diff --git a/chain/penumbra/tools/summoning/v1/summoning.pb.go b/chain/penumbra/tools/summoning/v1/summoning.pb.go index 128fe70cf..04996f4ba 100644 --- a/chain/penumbra/tools/summoning/v1/summoning.pb.go +++ b/chain/penumbra/tools/summoning/v1/summoning.pb.go @@ -8,8 +8,8 @@ import ( fmt "fmt" grpc1 "github.com/cosmos/gogoproto/grpc" proto "github.com/cosmos/gogoproto/proto" - v1 "github.com/strangelove-ventures/interchaintest/v8/chain/penumbra/core/keys/v1" - v11 "github.com/strangelove-ventures/interchaintest/v8/chain/penumbra/core/num/v1" + v1 "github.com/strangelove-ventures/interchaintest/v9/chain/penumbra/core/keys/v1" + v11 "github.com/strangelove-ventures/interchaintest/v9/chain/penumbra/core/num/v1" grpc "google.golang.org/grpc" codes "google.golang.org/grpc/codes" status "google.golang.org/grpc/status" diff --git a/chain/penumbra/view/v1/view.pb.go b/chain/penumbra/view/v1/view.pb.go index 87c568246..cf7d9ba88 100644 --- a/chain/penumbra/view/v1/view.pb.go +++ b/chain/penumbra/view/v1/view.pb.go @@ -10,20 +10,20 @@ import ( types "github.com/cosmos/cosmos-sdk/codec/types" grpc1 "github.com/cosmos/gogoproto/grpc" proto "github.com/cosmos/gogoproto/proto" - v112 "github.com/strangelove-ventures/interchaintest/v8/chain/penumbra/core/app/v1" - v18 "github.com/strangelove-ventures/interchaintest/v8/chain/penumbra/core/asset/v1" - v11 "github.com/strangelove-ventures/interchaintest/v8/chain/penumbra/core/component/auction/v1" - v12 "github.com/strangelove-ventures/interchaintest/v8/chain/penumbra/core/component/dex/v1" - v16 "github.com/strangelove-ventures/interchaintest/v8/chain/penumbra/core/component/fee/v1" - v15 "github.com/strangelove-ventures/interchaintest/v8/chain/penumbra/core/component/ibc/v1" - v17 "github.com/strangelove-ventures/interchaintest/v8/chain/penumbra/core/component/sct/v1" - v113 "github.com/strangelove-ventures/interchaintest/v8/chain/penumbra/core/component/shielded_pool/v1" - v111 "github.com/strangelove-ventures/interchaintest/v8/chain/penumbra/core/component/stake/v1" - v1 "github.com/strangelove-ventures/interchaintest/v8/chain/penumbra/core/keys/v1" - v110 "github.com/strangelove-ventures/interchaintest/v8/chain/penumbra/core/num/v1" - v13 "github.com/strangelove-ventures/interchaintest/v8/chain/penumbra/core/transaction/v1" - v14 "github.com/strangelove-ventures/interchaintest/v8/chain/penumbra/core/txhash/v1" - v19 "github.com/strangelove-ventures/interchaintest/v8/chain/penumbra/crypto/tct/v1" + v112 "github.com/strangelove-ventures/interchaintest/v9/chain/penumbra/core/app/v1" + v18 "github.com/strangelove-ventures/interchaintest/v9/chain/penumbra/core/asset/v1" + v11 "github.com/strangelove-ventures/interchaintest/v9/chain/penumbra/core/component/auction/v1" + v12 "github.com/strangelove-ventures/interchaintest/v9/chain/penumbra/core/component/dex/v1" + v16 "github.com/strangelove-ventures/interchaintest/v9/chain/penumbra/core/component/fee/v1" + v15 "github.com/strangelove-ventures/interchaintest/v9/chain/penumbra/core/component/ibc/v1" + v17 "github.com/strangelove-ventures/interchaintest/v9/chain/penumbra/core/component/sct/v1" + v113 "github.com/strangelove-ventures/interchaintest/v9/chain/penumbra/core/component/shielded_pool/v1" + v111 "github.com/strangelove-ventures/interchaintest/v9/chain/penumbra/core/component/stake/v1" + v1 "github.com/strangelove-ventures/interchaintest/v9/chain/penumbra/core/keys/v1" + v110 "github.com/strangelove-ventures/interchaintest/v9/chain/penumbra/core/num/v1" + v13 "github.com/strangelove-ventures/interchaintest/v9/chain/penumbra/core/transaction/v1" + v14 "github.com/strangelove-ventures/interchaintest/v9/chain/penumbra/core/txhash/v1" + v19 "github.com/strangelove-ventures/interchaintest/v9/chain/penumbra/crypto/tct/v1" grpc "google.golang.org/grpc" codes "google.golang.org/grpc/codes" status "google.golang.org/grpc/status" diff --git a/chain/penumbra/wallet.go b/chain/penumbra/wallet.go index 8f4403890..de06de821 100644 --- a/chain/penumbra/wallet.go +++ b/chain/penumbra/wallet.go @@ -1,7 +1,7 @@ package penumbra import ( - "github.com/strangelove-ventures/interchaintest/v8/ibc" + "github.com/strangelove-ventures/interchaintest/v9/ibc" ) var _ ibc.Wallet = &PenumbraWallet{} diff --git a/chain/polkadot/keys_test.go b/chain/polkadot/keys_test.go index affefb0d4..4d539e4bd 100644 --- a/chain/polkadot/keys_test.go +++ b/chain/polkadot/keys_test.go @@ -10,7 +10,7 @@ import ( "github.com/misko9/go-substrate-rpc-client/v4/signature" "github.com/stretchr/testify/require" - "github.com/strangelove-ventures/interchaintest/v8/chain/polkadot" + "github.com/strangelove-ventures/interchaintest/v9/chain/polkadot" ) func TestNodeKeyPeerID(t *testing.T) { diff --git a/chain/polkadot/parachain_node.go b/chain/polkadot/parachain_node.go index b09b6146e..5aeb59b62 100644 --- a/chain/polkadot/parachain_node.go +++ b/chain/polkadot/parachain_node.go @@ -20,8 +20,8 @@ import ( sdktypes "github.com/cosmos/cosmos-sdk/types" - "github.com/strangelove-ventures/interchaintest/v8/dockerutil" - "github.com/strangelove-ventures/interchaintest/v8/ibc" + "github.com/strangelove-ventures/interchaintest/v9/dockerutil" + "github.com/strangelove-ventures/interchaintest/v9/ibc" ) // Increase parachain wallet amount due to their additional precision. diff --git a/chain/polkadot/polkadot_chain.go b/chain/polkadot/polkadot_chain.go index 2cec86ad8..17a07d452 100644 --- a/chain/polkadot/polkadot_chain.go +++ b/chain/polkadot/polkadot_chain.go @@ -26,9 +26,9 @@ import ( sdktypes "github.com/cosmos/cosmos-sdk/types" - "github.com/strangelove-ventures/interchaintest/v8/blockdb" - "github.com/strangelove-ventures/interchaintest/v8/dockerutil" - "github.com/strangelove-ventures/interchaintest/v8/ibc" + "github.com/strangelove-ventures/interchaintest/v9/blockdb" + "github.com/strangelove-ventures/interchaintest/v9/dockerutil" + "github.com/strangelove-ventures/interchaintest/v9/ibc" ) // Increase polkadot wallet amount due to their additional precision. diff --git a/chain/polkadot/polkadot_chain_test.go b/chain/polkadot/polkadot_chain_test.go index a07c10957..58cb6abfe 100644 --- a/chain/polkadot/polkadot_chain_test.go +++ b/chain/polkadot/polkadot_chain_test.go @@ -7,8 +7,8 @@ import ( "github.com/stretchr/testify/require" "go.uber.org/zap/zaptest" - "github.com/strangelove-ventures/interchaintest/v8" - "github.com/strangelove-ventures/interchaintest/v8/ibc" + "github.com/strangelove-ventures/interchaintest/v9" + "github.com/strangelove-ventures/interchaintest/v9/ibc" ) func TestWalletMethods(t *testing.T) { diff --git a/chain/polkadot/relay_chain_node.go b/chain/polkadot/relay_chain_node.go index 73e0d2dd6..7b0e7f667 100644 --- a/chain/polkadot/relay_chain_node.go +++ b/chain/polkadot/relay_chain_node.go @@ -19,8 +19,8 @@ import ( "cosmossdk.io/math" - "github.com/strangelove-ventures/interchaintest/v8/dockerutil" - "github.com/strangelove-ventures/interchaintest/v8/ibc" + "github.com/strangelove-ventures/interchaintest/v9/dockerutil" + "github.com/strangelove-ventures/interchaintest/v9/ibc" ) // RelayChainNode defines the properties required for running a polkadot relay chain node. diff --git a/chain/polkadot/tx.go b/chain/polkadot/tx.go index 245e3811e..012bc8eed 100644 --- a/chain/polkadot/tx.go +++ b/chain/polkadot/tx.go @@ -9,7 +9,7 @@ import ( "github.com/misko9/go-substrate-rpc-client/v4/signature" gstypes "github.com/misko9/go-substrate-rpc-client/v4/types" - "github.com/strangelove-ventures/interchaintest/v8/ibc" + "github.com/strangelove-ventures/interchaintest/v9/ibc" ) // SendFundsTx sends funds to a wallet using the SubstrateAPI. diff --git a/chain/polkadot/wallet.go b/chain/polkadot/wallet.go index 9d58c9e28..912228aef 100644 --- a/chain/polkadot/wallet.go +++ b/chain/polkadot/wallet.go @@ -1,7 +1,7 @@ package polkadot import ( - "github.com/strangelove-ventures/interchaintest/v8/ibc" + "github.com/strangelove-ventures/interchaintest/v9/ibc" ) var _ ibc.Wallet = &PolkadotWallet{} diff --git a/chain/thorchain/api_query.go b/chain/thorchain/api_query.go index 8839f3f6c..fe9b76d72 100644 --- a/chain/thorchain/api_query.go +++ b/chain/thorchain/api_query.go @@ -16,7 +16,7 @@ import ( sdkmath "cosmossdk.io/math" - "github.com/strangelove-ventures/interchaintest/v8/chain/thorchain/common" + "github.com/strangelove-ventures/interchaintest/v9/chain/thorchain/common" ) // Generic query for routes not yet supported here. diff --git a/chain/thorchain/broadcaster.go b/chain/thorchain/broadcaster.go index 2a8001e8d..a840b8bdb 100644 --- a/chain/thorchain/broadcaster.go +++ b/chain/thorchain/broadcaster.go @@ -16,8 +16,8 @@ import ( "github.com/cosmos/cosmos-sdk/types/tx/signing" authtx "github.com/cosmos/cosmos-sdk/x/auth/tx" - "github.com/strangelove-ventures/interchaintest/v8/dockerutil" - "github.com/strangelove-ventures/interchaintest/v8/testutil" + "github.com/strangelove-ventures/interchaintest/v9/dockerutil" + "github.com/strangelove-ventures/interchaintest/v9/testutil" ) type ClientContextOpt func(clientContext client.Context) client.Context diff --git a/chain/thorchain/genesis.go b/chain/thorchain/genesis.go index dea907ca1..88559965e 100644 --- a/chain/thorchain/genesis.go +++ b/chain/thorchain/genesis.go @@ -8,7 +8,7 @@ import ( "github.com/icza/dyno" - "github.com/strangelove-ventures/interchaintest/v8/ibc" + "github.com/strangelove-ventures/interchaintest/v9/ibc" ) type GenesisKV struct { diff --git a/chain/thorchain/module_bank.go b/chain/thorchain/module_bank.go index 710e9b605..74cc0ed97 100644 --- a/chain/thorchain/module_bank.go +++ b/chain/thorchain/module_bank.go @@ -8,7 +8,7 @@ import ( "github.com/cosmos/cosmos-sdk/types" banktypes "github.com/cosmos/cosmos-sdk/x/bank/types" - "github.com/strangelove-ventures/interchaintest/v8/ibc" + "github.com/strangelove-ventures/interchaintest/v9/ibc" ) // Deprecated: use BankSend instead. diff --git a/chain/thorchain/module_thorchain.go b/chain/thorchain/module_thorchain.go index aabf31da1..273937964 100644 --- a/chain/thorchain/module_thorchain.go +++ b/chain/thorchain/module_thorchain.go @@ -6,7 +6,7 @@ import ( "cosmossdk.io/math" - "github.com/strangelove-ventures/interchaintest/v8/ibc" + "github.com/strangelove-ventures/interchaintest/v9/ibc" ) // BankSend sends tokens from one account to another. diff --git a/chain/thorchain/poll.go b/chain/thorchain/poll.go index fc4d31e68..4051d8af5 100644 --- a/chain/thorchain/poll.go +++ b/chain/thorchain/poll.go @@ -7,8 +7,8 @@ import ( codectypes "github.com/cosmos/cosmos-sdk/codec/types" - "github.com/strangelove-ventures/interchaintest/v8/ibc" - "github.com/strangelove-ventures/interchaintest/v8/testutil" + "github.com/strangelove-ventures/interchaintest/v9/ibc" + "github.com/strangelove-ventures/interchaintest/v9/testutil" ) // PollForMessage searches every transaction for a message. Must pass a coded registry capable of decoding the cosmos transaction. diff --git a/chain/thorchain/sidecar.go b/chain/thorchain/sidecar.go index 9ca7ed1f4..db06195b4 100644 --- a/chain/thorchain/sidecar.go +++ b/chain/thorchain/sidecar.go @@ -9,8 +9,8 @@ import ( "github.com/docker/go-connections/nat" "go.uber.org/zap" - "github.com/strangelove-ventures/interchaintest/v8/dockerutil" - "github.com/strangelove-ventures/interchaintest/v8/ibc" + "github.com/strangelove-ventures/interchaintest/v9/dockerutil" + "github.com/strangelove-ventures/interchaintest/v9/ibc" ) type SidecarProcesses []*SidecarProcess diff --git a/chain/thorchain/thorchain.go b/chain/thorchain/thorchain.go index 8e77db0be..ad4cd6484 100644 --- a/chain/thorchain/thorchain.go +++ b/chain/thorchain/thorchain.go @@ -32,10 +32,10 @@ import ( "github.com/cosmos/cosmos-sdk/crypto/keyring" "github.com/cosmos/cosmos-sdk/types" - "github.com/strangelove-ventures/interchaintest/v8/blockdb" - "github.com/strangelove-ventures/interchaintest/v8/dockerutil" - "github.com/strangelove-ventures/interchaintest/v8/ibc" - "github.com/strangelove-ventures/interchaintest/v8/testutil" + "github.com/strangelove-ventures/interchaintest/v9/blockdb" + "github.com/strangelove-ventures/interchaintest/v9/dockerutil" + "github.com/strangelove-ventures/interchaintest/v9/ibc" + "github.com/strangelove-ventures/interchaintest/v9/testutil" ) type Thorchain struct { diff --git a/chain/thorchain/thornode.go b/chain/thorchain/thornode.go index c9e3df38e..ebcf66c45 100644 --- a/chain/thorchain/thornode.go +++ b/chain/thorchain/thornode.go @@ -42,10 +42,10 @@ import ( coretypes "github.com/cometbft/cometbft/rpc/core/types" libclient "github.com/cometbft/cometbft/rpc/jsonrpc/client" - "github.com/strangelove-ventures/interchaintest/v8/blockdb" - "github.com/strangelove-ventures/interchaintest/v8/dockerutil" - "github.com/strangelove-ventures/interchaintest/v8/ibc" - "github.com/strangelove-ventures/interchaintest/v8/testutil" + "github.com/strangelove-ventures/interchaintest/v9/blockdb" + "github.com/strangelove-ventures/interchaintest/v9/dockerutil" + "github.com/strangelove-ventures/interchaintest/v9/ibc" + "github.com/strangelove-ventures/interchaintest/v9/testutil" ) type ChainNode struct { diff --git a/chain/thorchain/wallet.go b/chain/thorchain/wallet.go index 4b01c09d0..a540d892d 100644 --- a/chain/thorchain/wallet.go +++ b/chain/thorchain/wallet.go @@ -3,7 +3,7 @@ package thorchain import ( "github.com/cosmos/cosmos-sdk/types" - "github.com/strangelove-ventures/interchaintest/v8/ibc" + "github.com/strangelove-ventures/interchaintest/v9/ibc" ) var ( diff --git a/chain/utxo/default_configs.go b/chain/utxo/default_configs.go index 7a4f8963f..c7793d2a3 100644 --- a/chain/utxo/default_configs.go +++ b/chain/utxo/default_configs.go @@ -3,7 +3,7 @@ package utxo import ( "fmt" - "github.com/strangelove-ventures/interchaintest/v8/ibc" + "github.com/strangelove-ventures/interchaintest/v9/ibc" ) func DefaultBitcoinChainConfig( diff --git a/chain/utxo/unimplemented.go b/chain/utxo/unimplemented.go index 06a1e12f0..3fa4c54c0 100644 --- a/chain/utxo/unimplemented.go +++ b/chain/utxo/unimplemented.go @@ -4,7 +4,7 @@ import ( "context" "runtime" - "github.com/strangelove-ventures/interchaintest/v8/ibc" + "github.com/strangelove-ventures/interchaintest/v9/ibc" ) func PanicFunctionName() { diff --git a/chain/utxo/utxo_chain.go b/chain/utxo/utxo_chain.go index 8818e4b7c..aff40f021 100644 --- a/chain/utxo/utxo_chain.go +++ b/chain/utxo/utxo_chain.go @@ -19,9 +19,9 @@ import ( sdkmath "cosmossdk.io/math" - "github.com/strangelove-ventures/interchaintest/v8/dockerutil" - "github.com/strangelove-ventures/interchaintest/v8/ibc" - "github.com/strangelove-ventures/interchaintest/v8/testutil" + "github.com/strangelove-ventures/interchaintest/v9/dockerutil" + "github.com/strangelove-ventures/interchaintest/v9/ibc" + "github.com/strangelove-ventures/interchaintest/v9/testutil" ) var _ ibc.Chain = &UtxoChain{} diff --git a/chain/utxo/wallet.go b/chain/utxo/wallet.go index 4bcbd1ba8..c7f6abc06 100644 --- a/chain/utxo/wallet.go +++ b/chain/utxo/wallet.go @@ -4,7 +4,7 @@ import ( "fmt" "sync" - "github.com/strangelove-ventures/interchaintest/v8/ibc" + "github.com/strangelove-ventures/interchaintest/v9/ibc" ) var _ ibc.Wallet = &UtxoWallet{} diff --git a/chainfactory.go b/chainfactory.go index fd8ba549a..643137cc4 100644 --- a/chainfactory.go +++ b/chainfactory.go @@ -11,15 +11,15 @@ import ( _ "embed" - "github.com/strangelove-ventures/interchaintest/v8/chain/cosmos" - "github.com/strangelove-ventures/interchaintest/v8/chain/ethereum/foundry" - "github.com/strangelove-ventures/interchaintest/v8/chain/ethereum/geth" - "github.com/strangelove-ventures/interchaintest/v8/chain/namada" - "github.com/strangelove-ventures/interchaintest/v8/chain/penumbra" - "github.com/strangelove-ventures/interchaintest/v8/chain/polkadot" - "github.com/strangelove-ventures/interchaintest/v8/chain/thorchain" - "github.com/strangelove-ventures/interchaintest/v8/chain/utxo" - "github.com/strangelove-ventures/interchaintest/v8/ibc" + "github.com/strangelove-ventures/interchaintest/v9/chain/cosmos" + "github.com/strangelove-ventures/interchaintest/v9/chain/ethereum/foundry" + "github.com/strangelove-ventures/interchaintest/v9/chain/ethereum/geth" + "github.com/strangelove-ventures/interchaintest/v9/chain/namada" + "github.com/strangelove-ventures/interchaintest/v9/chain/penumbra" + "github.com/strangelove-ventures/interchaintest/v9/chain/polkadot" + "github.com/strangelove-ventures/interchaintest/v9/chain/thorchain" + "github.com/strangelove-ventures/interchaintest/v9/chain/utxo" + "github.com/strangelove-ventures/interchaintest/v9/ibc" ) // ChainFactory describes how to get chains for tests. diff --git a/chainset.go b/chainset.go index 6b4b5fd6b..6575b682c 100644 --- a/chainset.go +++ b/chainset.go @@ -13,9 +13,9 @@ import ( "go.uber.org/zap" "golang.org/x/sync/errgroup" - "github.com/strangelove-ventures/interchaintest/v8/blockdb" - "github.com/strangelove-ventures/interchaintest/v8/chain/cosmos" - "github.com/strangelove-ventures/interchaintest/v8/ibc" + "github.com/strangelove-ventures/interchaintest/v9/blockdb" + "github.com/strangelove-ventures/interchaintest/v9/chain/cosmos" + "github.com/strangelove-ventures/interchaintest/v9/ibc" ) // chainSet is an unordered collection of ibc.Chain, diff --git a/chainspec.go b/chainspec.go index 00aa19275..d3b1d9ce5 100644 --- a/chainspec.go +++ b/chainspec.go @@ -8,7 +8,7 @@ import ( "sync" "sync/atomic" - "github.com/strangelove-ventures/interchaintest/v8/ibc" + "github.com/strangelove-ventures/interchaintest/v9/ibc" "go.uber.org/zap" ) diff --git a/chainspec_test.go b/chainspec_test.go index b402c2d4a..6d306e4e9 100644 --- a/chainspec_test.go +++ b/chainspec_test.go @@ -8,8 +8,8 @@ import ( "github.com/stretchr/testify/require" "go.uber.org/zap/zaptest" - interchaintest "github.com/strangelove-ventures/interchaintest/v8" - "github.com/strangelove-ventures/interchaintest/v8/ibc" + interchaintest "github.com/strangelove-ventures/interchaintest/v9" + "github.com/strangelove-ventures/interchaintest/v9/ibc" ) func TestChainSpec_Config(t *testing.T) { diff --git a/cmd/interchaintest/flags.go b/cmd/interchaintest/flags.go index 82d781ee8..6d629e19e 100644 --- a/cmd/interchaintest/flags.go +++ b/cmd/interchaintest/flags.go @@ -9,7 +9,7 @@ import ( "go.uber.org/zap" "go.uber.org/zap/zapcore" - interchaintest "github.com/strangelove-ventures/interchaintest/v8" + interchaintest "github.com/strangelove-ventures/interchaintest/v9" ) // The value of the extra flags this test supports. diff --git a/cmd/interchaintest/interchaintest_test.go b/cmd/interchaintest/interchaintest_test.go index ec7c52bf3..f6427d8d1 100644 --- a/cmd/interchaintest/interchaintest_test.go +++ b/cmd/interchaintest/interchaintest_test.go @@ -14,14 +14,14 @@ import ( "github.com/rivo/tview" "go.uber.org/zap" - "github.com/strangelove-ventures/interchaintest/v8" - "github.com/strangelove-ventures/interchaintest/v8/blockdb" - blockdbtui "github.com/strangelove-ventures/interchaintest/v8/blockdb/tui" - "github.com/strangelove-ventures/interchaintest/v8/conformance" - "github.com/strangelove-ventures/interchaintest/v8/ibc" - "github.com/strangelove-ventures/interchaintest/v8/relayer" - "github.com/strangelove-ventures/interchaintest/v8/testreporter" - "github.com/strangelove-ventures/interchaintest/v8/testutil" + "github.com/strangelove-ventures/interchaintest/v9" + "github.com/strangelove-ventures/interchaintest/v9/blockdb" + blockdbtui "github.com/strangelove-ventures/interchaintest/v9/blockdb/tui" + "github.com/strangelove-ventures/interchaintest/v9/conformance" + "github.com/strangelove-ventures/interchaintest/v9/ibc" + "github.com/strangelove-ventures/interchaintest/v9/relayer" + "github.com/strangelove-ventures/interchaintest/v9/testreporter" + "github.com/strangelove-ventures/interchaintest/v9/testutil" ) func init() { diff --git a/cmd/interchaintest/matrix_test.go b/cmd/interchaintest/matrix_test.go index 0f81d0041..3908afe64 100644 --- a/cmd/interchaintest/matrix_test.go +++ b/cmd/interchaintest/matrix_test.go @@ -9,7 +9,7 @@ import ( _ "embed" - interchaintest "github.com/strangelove-ventures/interchaintest/v8" + interchaintest "github.com/strangelove-ventures/interchaintest/v9" ) // Embed the matrix files as strings since they aren't intended to be changed. diff --git a/conformance/flush.go b/conformance/flush.go index fb8637826..c600a2322 100644 --- a/conformance/flush.go +++ b/conformance/flush.go @@ -11,11 +11,11 @@ import ( "github.com/cosmos/cosmos-sdk/types" - "github.com/strangelove-ventures/interchaintest/v8" - "github.com/strangelove-ventures/interchaintest/v8/ibc" - "github.com/strangelove-ventures/interchaintest/v8/relayer" - "github.com/strangelove-ventures/interchaintest/v8/testreporter" - "github.com/strangelove-ventures/interchaintest/v8/testutil" + "github.com/strangelove-ventures/interchaintest/v9" + "github.com/strangelove-ventures/interchaintest/v9/ibc" + "github.com/strangelove-ventures/interchaintest/v9/relayer" + "github.com/strangelove-ventures/interchaintest/v9/testreporter" + "github.com/strangelove-ventures/interchaintest/v9/testutil" ) func TestRelayerFlushing(t *testing.T, ctx context.Context, cf interchaintest.ChainFactory, rf interchaintest.RelayerFactory, rep *testreporter.Reporter) { diff --git a/conformance/relayersetup.go b/conformance/relayersetup.go index 9b94281fa..7a2561c31 100644 --- a/conformance/relayersetup.go +++ b/conformance/relayersetup.go @@ -11,10 +11,10 @@ import ( conntypes "github.com/cosmos/ibc-go/v8/modules/core/03-connection/types" "github.com/cosmos/ibc-go/v8/modules/core/exported" - "github.com/strangelove-ventures/interchaintest/v8" - "github.com/strangelove-ventures/interchaintest/v8/ibc" - "github.com/strangelove-ventures/interchaintest/v8/testreporter" - "github.com/strangelove-ventures/interchaintest/v8/testutil" + "github.com/strangelove-ventures/interchaintest/v9" + "github.com/strangelove-ventures/interchaintest/v9/ibc" + "github.com/strangelove-ventures/interchaintest/v9/testreporter" + "github.com/strangelove-ventures/interchaintest/v9/testutil" ) // TestRelayerSetup contains a series of subtests that configure a relayer step-by-step. diff --git a/conformance/test.go b/conformance/test.go index ab9a87acb..89866ed6b 100644 --- a/conformance/test.go +++ b/conformance/test.go @@ -14,8 +14,8 @@ // import ( // "testing" // -// "github.com/strangelove-ventures/interchaintest/v8/conformance" -// "github.com/strangelove-ventures/interchaintest/v8/ibc" +// "github.com/strangelove-ventures/interchaintest/v9/conformance" +// "github.com/strangelove-ventures/interchaintest/v9/ibc" // ) // // func TestMyRelayer(t *testing.T) { @@ -43,13 +43,13 @@ import ( transfertypes "github.com/cosmos/ibc-go/v8/modules/apps/transfer/types" - "github.com/strangelove-ventures/interchaintest/v8" - "github.com/strangelove-ventures/interchaintest/v8/chain/cosmos" - "github.com/strangelove-ventures/interchaintest/v8/dockerutil" - "github.com/strangelove-ventures/interchaintest/v8/ibc" - "github.com/strangelove-ventures/interchaintest/v8/relayer" - "github.com/strangelove-ventures/interchaintest/v8/testreporter" - "github.com/strangelove-ventures/interchaintest/v8/testutil" + "github.com/strangelove-ventures/interchaintest/v9" + "github.com/strangelove-ventures/interchaintest/v9/chain/cosmos" + "github.com/strangelove-ventures/interchaintest/v9/dockerutil" + "github.com/strangelove-ventures/interchaintest/v9/ibc" + "github.com/strangelove-ventures/interchaintest/v9/relayer" + "github.com/strangelove-ventures/interchaintest/v9/testreporter" + "github.com/strangelove-ventures/interchaintest/v9/testutil" ) var ( diff --git a/dockerutil/container_lifecycle.go b/dockerutil/container_lifecycle.go index ec2d3ec63..96cf57c9b 100644 --- a/dockerutil/container_lifecycle.go +++ b/dockerutil/container_lifecycle.go @@ -18,7 +18,7 @@ import ( "github.com/docker/go-connections/nat" "go.uber.org/zap" - "github.com/strangelove-ventures/interchaintest/v8/ibc" + "github.com/strangelove-ventures/interchaintest/v9/ibc" ) // Example Go/Cosmos-SDK panic format is `panic: bad Duration: time: invalid duration "bad"\n`. diff --git a/dockerutil/fileretriever_test.go b/dockerutil/fileretriever_test.go index 594c083e3..83ef453b8 100644 --- a/dockerutil/fileretriever_test.go +++ b/dockerutil/fileretriever_test.go @@ -8,8 +8,8 @@ import ( "github.com/stretchr/testify/require" "go.uber.org/zap/zaptest" - "github.com/strangelove-ventures/interchaintest/v8" - "github.com/strangelove-ventures/interchaintest/v8/dockerutil" + "github.com/strangelove-ventures/interchaintest/v9" + "github.com/strangelove-ventures/interchaintest/v9/dockerutil" ) func TestFileRetriever(t *testing.T) { diff --git a/dockerutil/filewriter_test.go b/dockerutil/filewriter_test.go index 3f889028e..4d94f50c0 100644 --- a/dockerutil/filewriter_test.go +++ b/dockerutil/filewriter_test.go @@ -8,8 +8,8 @@ import ( "github.com/stretchr/testify/require" "go.uber.org/zap/zaptest" - "github.com/strangelove-ventures/interchaintest/v8" - "github.com/strangelove-ventures/interchaintest/v8/dockerutil" + "github.com/strangelove-ventures/interchaintest/v9" + "github.com/strangelove-ventures/interchaintest/v9/dockerutil" ) func TestFileWriter(t *testing.T) { diff --git a/dockerutil/setup_test.go b/dockerutil/setup_test.go index 95b78f32d..c06c3bbff 100644 --- a/dockerutil/setup_test.go +++ b/dockerutil/setup_test.go @@ -9,8 +9,8 @@ import ( "github.com/docker/docker/errdefs" "github.com/stretchr/testify/require" - "github.com/strangelove-ventures/interchaintest/v8/dockerutil" - "github.com/strangelove-ventures/interchaintest/v8/mocktesting" + "github.com/strangelove-ventures/interchaintest/v9/dockerutil" + "github.com/strangelove-ventures/interchaintest/v9/mocktesting" ) func TestDockerSetup_KeepVolumes(t *testing.T) { diff --git a/examples/cosmos/bad_genesis_params_test.go b/examples/cosmos/bad_genesis_params_test.go index abbc59453..28b0cadc2 100644 --- a/examples/cosmos/bad_genesis_params_test.go +++ b/examples/cosmos/bad_genesis_params_test.go @@ -4,9 +4,9 @@ import ( "context" "testing" - "github.com/strangelove-ventures/interchaintest/v8" - "github.com/strangelove-ventures/interchaintest/v8/chain/cosmos" - "github.com/strangelove-ventures/interchaintest/v8/ibc" + "github.com/strangelove-ventures/interchaintest/v9" + "github.com/strangelove-ventures/interchaintest/v9/chain/cosmos" + "github.com/strangelove-ventures/interchaintest/v9/ibc" "github.com/stretchr/testify/require" "go.uber.org/zap/zaptest" ) diff --git a/examples/cosmos/blockdb_messages_view_test.go b/examples/cosmos/blockdb_messages_view_test.go index 2a0bbd9ae..afa6b6be0 100644 --- a/examples/cosmos/blockdb_messages_view_test.go +++ b/examples/cosmos/blockdb_messages_view_test.go @@ -13,11 +13,11 @@ import ( "github.com/cosmos/cosmos-sdk/types" - "github.com/strangelove-ventures/interchaintest/v8" - "github.com/strangelove-ventures/interchaintest/v8/ibc" - "github.com/strangelove-ventures/interchaintest/v8/relayer" - "github.com/strangelove-ventures/interchaintest/v8/testreporter" - "github.com/strangelove-ventures/interchaintest/v8/testutil" + "github.com/strangelove-ventures/interchaintest/v9" + "github.com/strangelove-ventures/interchaintest/v9/ibc" + "github.com/strangelove-ventures/interchaintest/v9/relayer" + "github.com/strangelove-ventures/interchaintest/v9/testreporter" + "github.com/strangelove-ventures/interchaintest/v9/testutil" ) func TestBlockDBMessagesView(t *testing.T) { diff --git a/examples/cosmos/chain_core_test.go b/examples/cosmos/chain_core_test.go index 5c1162db1..d4ccf0a34 100644 --- a/examples/cosmos/chain_core_test.go +++ b/examples/cosmos/chain_core_test.go @@ -10,10 +10,10 @@ import ( sdkmath "cosmossdk.io/math" "github.com/cosmos/cosmos-sdk/crypto/keyring" sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/strangelove-ventures/interchaintest/v8" - "github.com/strangelove-ventures/interchaintest/v8/chain/cosmos" - "github.com/strangelove-ventures/interchaintest/v8/ibc" - "github.com/strangelove-ventures/interchaintest/v8/testutil" + "github.com/strangelove-ventures/interchaintest/v9" + "github.com/strangelove-ventures/interchaintest/v9/chain/cosmos" + "github.com/strangelove-ventures/interchaintest/v9/ibc" + "github.com/strangelove-ventures/interchaintest/v9/testutil" "github.com/stretchr/testify/require" "go.uber.org/zap/zaptest" diff --git a/examples/cosmos/chain_export_test.go b/examples/cosmos/chain_export_test.go index 23d571d1f..892748934 100644 --- a/examples/cosmos/chain_export_test.go +++ b/examples/cosmos/chain_export_test.go @@ -5,10 +5,10 @@ import ( "testing" "time" - "github.com/strangelove-ventures/interchaintest/v8" - "github.com/strangelove-ventures/interchaintest/v8/chain/cosmos" - "github.com/strangelove-ventures/interchaintest/v8/ibc" - "github.com/strangelove-ventures/interchaintest/v8/testutil" + "github.com/strangelove-ventures/interchaintest/v9" + "github.com/strangelove-ventures/interchaintest/v9/chain/cosmos" + "github.com/strangelove-ventures/interchaintest/v9/ibc" + "github.com/strangelove-ventures/interchaintest/v9/testutil" "github.com/stretchr/testify/require" "go.uber.org/zap" ) diff --git a/examples/cosmos/chain_genesis_stake_test.go b/examples/cosmos/chain_genesis_stake_test.go index 8f0c39bda..0e1341dd1 100644 --- a/examples/cosmos/chain_genesis_stake_test.go +++ b/examples/cosmos/chain_genesis_stake_test.go @@ -8,10 +8,10 @@ import ( sdkmath "cosmossdk.io/math" sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/strangelove-ventures/interchaintest/v8" - "github.com/strangelove-ventures/interchaintest/v8/chain/cosmos" - "github.com/strangelove-ventures/interchaintest/v8/ibc" - "github.com/strangelove-ventures/interchaintest/v8/testreporter" + "github.com/strangelove-ventures/interchaintest/v9" + "github.com/strangelove-ventures/interchaintest/v9/chain/cosmos" + "github.com/strangelove-ventures/interchaintest/v9/ibc" + "github.com/strangelove-ventures/interchaintest/v9/testreporter" "github.com/stretchr/testify/require" "go.uber.org/zap/zaptest" ) diff --git a/examples/cosmos/chain_miscellaneous_test.go b/examples/cosmos/chain_miscellaneous_test.go index de0450a70..531597368 100644 --- a/examples/cosmos/chain_miscellaneous_test.go +++ b/examples/cosmos/chain_miscellaneous_test.go @@ -12,9 +12,9 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" testutil "github.com/cosmos/cosmos-sdk/types/module/testutil" - "github.com/strangelove-ventures/interchaintest/v8" - "github.com/strangelove-ventures/interchaintest/v8/chain/cosmos" - "github.com/strangelove-ventures/interchaintest/v8/ibc" + "github.com/strangelove-ventures/interchaintest/v9" + "github.com/strangelove-ventures/interchaintest/v9/chain/cosmos" + "github.com/strangelove-ventures/interchaintest/v9/ibc" "github.com/stretchr/testify/require" "go.uber.org/zap/zaptest" ) diff --git a/examples/cosmos/chain_param_change_test.go b/examples/cosmos/chain_param_change_test.go index 881239520..2a889e74a 100644 --- a/examples/cosmos/chain_param_change_test.go +++ b/examples/cosmos/chain_param_change_test.go @@ -7,9 +7,9 @@ import ( "cosmossdk.io/math" paramsutils "github.com/cosmos/cosmos-sdk/x/params/client/utils" - "github.com/strangelove-ventures/interchaintest/v8" - "github.com/strangelove-ventures/interchaintest/v8/chain/cosmos" - "github.com/strangelove-ventures/interchaintest/v8/ibc" + "github.com/strangelove-ventures/interchaintest/v9" + "github.com/strangelove-ventures/interchaintest/v9/chain/cosmos" + "github.com/strangelove-ventures/interchaintest/v9/ibc" "github.com/stretchr/testify/require" govv1beta1 "github.com/cosmos/cosmos-sdk/x/gov/types/v1beta1" diff --git a/examples/cosmos/chain_upgrade_ibc_test.go b/examples/cosmos/chain_upgrade_ibc_test.go index 321759f40..c852a9c8c 100644 --- a/examples/cosmos/chain_upgrade_ibc_test.go +++ b/examples/cosmos/chain_upgrade_ibc_test.go @@ -8,13 +8,13 @@ import ( "cosmossdk.io/math" govv1beta1 "github.com/cosmos/cosmos-sdk/x/gov/types/v1beta1" - interchaintest "github.com/strangelove-ventures/interchaintest/v8" - "github.com/strangelove-ventures/interchaintest/v8/chain/cosmos" - "github.com/strangelove-ventures/interchaintest/v8/conformance" - "github.com/strangelove-ventures/interchaintest/v8/ibc" - "github.com/strangelove-ventures/interchaintest/v8/relayer" - "github.com/strangelove-ventures/interchaintest/v8/testreporter" - "github.com/strangelove-ventures/interchaintest/v8/testutil" + interchaintest "github.com/strangelove-ventures/interchaintest/v9" + "github.com/strangelove-ventures/interchaintest/v9/chain/cosmos" + "github.com/strangelove-ventures/interchaintest/v9/conformance" + "github.com/strangelove-ventures/interchaintest/v9/ibc" + "github.com/strangelove-ventures/interchaintest/v9/relayer" + "github.com/strangelove-ventures/interchaintest/v9/testreporter" + "github.com/strangelove-ventures/interchaintest/v9/testutil" "github.com/stretchr/testify/require" "go.uber.org/zap/zaptest" ) diff --git a/examples/cosmos/code_coverage_test.go b/examples/cosmos/code_coverage_test.go index 9ca4d0a3c..0c9923a68 100644 --- a/examples/cosmos/code_coverage_test.go +++ b/examples/cosmos/code_coverage_test.go @@ -5,11 +5,11 @@ import ( "os" "testing" - "github.com/strangelove-ventures/interchaintest/v8" - "github.com/strangelove-ventures/interchaintest/v8/chain/cosmos" - "github.com/strangelove-ventures/interchaintest/v8/dockerutil" - "github.com/strangelove-ventures/interchaintest/v8/ibc" - "github.com/strangelove-ventures/interchaintest/v8/testreporter" + "github.com/strangelove-ventures/interchaintest/v9" + "github.com/strangelove-ventures/interchaintest/v9/chain/cosmos" + "github.com/strangelove-ventures/interchaintest/v9/dockerutil" + "github.com/strangelove-ventures/interchaintest/v9/ibc" + "github.com/strangelove-ventures/interchaintest/v9/testreporter" "github.com/stretchr/testify/require" "go.uber.org/zap/zapcore" "go.uber.org/zap/zaptest" diff --git a/examples/cosmos/cometmock_test.go b/examples/cosmos/cometmock_test.go index 1bdc4995a..ef36d0244 100644 --- a/examples/cosmos/cometmock_test.go +++ b/examples/cosmos/cometmock_test.go @@ -5,9 +5,9 @@ import ( "testing" "cosmossdk.io/math" - "github.com/strangelove-ventures/interchaintest/v8" - "github.com/strangelove-ventures/interchaintest/v8/chain/cosmos" - "github.com/strangelove-ventures/interchaintest/v8/ibc" + "github.com/strangelove-ventures/interchaintest/v9" + "github.com/strangelove-ventures/interchaintest/v9/chain/cosmos" + "github.com/strangelove-ventures/interchaintest/v9/ibc" "github.com/stretchr/testify/require" "go.uber.org/zap/zaptest" ) diff --git a/examples/cosmos/ethermint_test.go b/examples/cosmos/ethermint_test.go index c822c0d31..f8507298e 100644 --- a/examples/cosmos/ethermint_test.go +++ b/examples/cosmos/ethermint_test.go @@ -12,10 +12,10 @@ import ( sdkmath "cosmossdk.io/math" banktypes "github.com/cosmos/cosmos-sdk/x/bank/types" - "github.com/strangelove-ventures/interchaintest/v8" - "github.com/strangelove-ventures/interchaintest/v8/chain/cosmos" - "github.com/strangelove-ventures/interchaintest/v8/ibc" - "github.com/strangelove-ventures/interchaintest/v8/testutil" + "github.com/strangelove-ventures/interchaintest/v9" + "github.com/strangelove-ventures/interchaintest/v9/chain/cosmos" + "github.com/strangelove-ventures/interchaintest/v9/ibc" + "github.com/strangelove-ventures/interchaintest/v9/testutil" "github.com/stretchr/testify/require" "go.uber.org/zap/zaptest" ) diff --git a/examples/cosmos/sdk_boundary_test.go b/examples/cosmos/sdk_boundary_test.go index 4a66cf01d..3fc9402cf 100644 --- a/examples/cosmos/sdk_boundary_test.go +++ b/examples/cosmos/sdk_boundary_test.go @@ -4,13 +4,13 @@ import ( "context" "testing" - "github.com/strangelove-ventures/interchaintest/v8" - "github.com/strangelove-ventures/interchaintest/v8/chain/cosmos" - "github.com/strangelove-ventures/interchaintest/v8/conformance" - "github.com/strangelove-ventures/interchaintest/v8/ibc" - "github.com/strangelove-ventures/interchaintest/v8/relayer" - "github.com/strangelove-ventures/interchaintest/v8/relayer/rly" - "github.com/strangelove-ventures/interchaintest/v8/testreporter" + "github.com/strangelove-ventures/interchaintest/v9" + "github.com/strangelove-ventures/interchaintest/v9/chain/cosmos" + "github.com/strangelove-ventures/interchaintest/v9/conformance" + "github.com/strangelove-ventures/interchaintest/v9/ibc" + "github.com/strangelove-ventures/interchaintest/v9/relayer" + "github.com/strangelove-ventures/interchaintest/v9/relayer/rly" + "github.com/strangelove-ventures/interchaintest/v9/testreporter" "github.com/stretchr/testify/require" "go.uber.org/zap/zaptest" ) diff --git a/examples/cosmwasm/rust-optimizer/rust_optimizer_test.go b/examples/cosmwasm/rust-optimizer/rust_optimizer_test.go index 7f8aa8fca..7d882f067 100644 --- a/examples/cosmwasm/rust-optimizer/rust_optimizer_test.go +++ b/examples/cosmwasm/rust-optimizer/rust_optimizer_test.go @@ -6,13 +6,13 @@ import ( "testing" "cosmossdk.io/math" - "github.com/strangelove-ventures/interchaintest/v8" - "github.com/strangelove-ventures/interchaintest/v8/chain/cosmos" - "github.com/strangelove-ventures/interchaintest/v8/chain/cosmos/wasm" - "github.com/strangelove-ventures/interchaintest/v8/contract/cosmwasm" - "github.com/strangelove-ventures/interchaintest/v8/ibc" - "github.com/strangelove-ventures/interchaintest/v8/testreporter" - "github.com/strangelove-ventures/interchaintest/v8/testutil" + "github.com/strangelove-ventures/interchaintest/v9" + "github.com/strangelove-ventures/interchaintest/v9/chain/cosmos" + "github.com/strangelove-ventures/interchaintest/v9/chain/cosmos/wasm" + "github.com/strangelove-ventures/interchaintest/v9/contract/cosmwasm" + "github.com/strangelove-ventures/interchaintest/v9/ibc" + "github.com/strangelove-ventures/interchaintest/v9/testreporter" + "github.com/strangelove-ventures/interchaintest/v9/testutil" "github.com/stretchr/testify/require" "go.uber.org/zap/zaptest" ) diff --git a/examples/cosmwasm/workspace-optimizer/workspace_optimizer_test.go b/examples/cosmwasm/workspace-optimizer/workspace_optimizer_test.go index 1c630c71e..b61e9da54 100644 --- a/examples/cosmwasm/workspace-optimizer/workspace_optimizer_test.go +++ b/examples/cosmwasm/workspace-optimizer/workspace_optimizer_test.go @@ -6,13 +6,13 @@ import ( "testing" "cosmossdk.io/math" - "github.com/strangelove-ventures/interchaintest/v8" - "github.com/strangelove-ventures/interchaintest/v8/chain/cosmos" - "github.com/strangelove-ventures/interchaintest/v8/chain/cosmos/wasm" - "github.com/strangelove-ventures/interchaintest/v8/contract/cosmwasm" - "github.com/strangelove-ventures/interchaintest/v8/ibc" - "github.com/strangelove-ventures/interchaintest/v8/testreporter" - "github.com/strangelove-ventures/interchaintest/v8/testutil" + "github.com/strangelove-ventures/interchaintest/v9" + "github.com/strangelove-ventures/interchaintest/v9/chain/cosmos" + "github.com/strangelove-ventures/interchaintest/v9/chain/cosmos/wasm" + "github.com/strangelove-ventures/interchaintest/v9/contract/cosmwasm" + "github.com/strangelove-ventures/interchaintest/v9/ibc" + "github.com/strangelove-ventures/interchaintest/v9/testreporter" + "github.com/strangelove-ventures/interchaintest/v9/testutil" "github.com/stretchr/testify/require" "go.uber.org/zap/zaptest" ) diff --git a/examples/ethereum/foundry_test.go b/examples/ethereum/foundry_test.go index e6af00c44..96c27ef0c 100644 --- a/examples/ethereum/foundry_test.go +++ b/examples/ethereum/foundry_test.go @@ -7,12 +7,12 @@ import ( "time" "cosmossdk.io/math" - "github.com/strangelove-ventures/interchaintest/v8" - "github.com/strangelove-ventures/interchaintest/v8/chain/ethereum" - "github.com/strangelove-ventures/interchaintest/v8/chain/ethereum/foundry" - "github.com/strangelove-ventures/interchaintest/v8/ibc" + "github.com/strangelove-ventures/interchaintest/v9" + "github.com/strangelove-ventures/interchaintest/v9/chain/ethereum" + "github.com/strangelove-ventures/interchaintest/v9/chain/ethereum/foundry" + "github.com/strangelove-ventures/interchaintest/v9/ibc" - "github.com/strangelove-ventures/interchaintest/v8/testreporter" + "github.com/strangelove-ventures/interchaintest/v9/testreporter" "github.com/stretchr/testify/require" "go.uber.org/zap/zaptest" ) diff --git a/examples/ethereum/geth_test.go b/examples/ethereum/geth_test.go index 9e3e53e84..5b095c2a5 100644 --- a/examples/ethereum/geth_test.go +++ b/examples/ethereum/geth_test.go @@ -7,12 +7,12 @@ import ( "testing" "time" - "github.com/strangelove-ventures/interchaintest/v8" - "github.com/strangelove-ventures/interchaintest/v8/chain/ethereum" - "github.com/strangelove-ventures/interchaintest/v8/chain/ethereum/geth" - "github.com/strangelove-ventures/interchaintest/v8/ibc" + "github.com/strangelove-ventures/interchaintest/v9" + "github.com/strangelove-ventures/interchaintest/v9/chain/ethereum" + "github.com/strangelove-ventures/interchaintest/v9/chain/ethereum/geth" + "github.com/strangelove-ventures/interchaintest/v9/ibc" - "github.com/strangelove-ventures/interchaintest/v8/testreporter" + "github.com/strangelove-ventures/interchaintest/v9/testreporter" "github.com/stretchr/testify/require" "go.uber.org/zap/zaptest" ) diff --git a/examples/hyperspace/hyperspace_test.go b/examples/hyperspace/hyperspace_test.go index 78b0a5fb7..c44dd8257 100644 --- a/examples/hyperspace/hyperspace_test.go +++ b/examples/hyperspace/hyperspace_test.go @@ -15,13 +15,13 @@ import ( govv1beta1 "github.com/cosmos/cosmos-sdk/x/gov/types/v1beta1" transfertypes "github.com/cosmos/ibc-go/v8/modules/apps/transfer/types" "github.com/icza/dyno" - "github.com/strangelove-ventures/interchaintest/v8" - "github.com/strangelove-ventures/interchaintest/v8/chain/cosmos" - "github.com/strangelove-ventures/interchaintest/v8/chain/polkadot" - "github.com/strangelove-ventures/interchaintest/v8/ibc" - "github.com/strangelove-ventures/interchaintest/v8/relayer" - "github.com/strangelove-ventures/interchaintest/v8/testreporter" - "github.com/strangelove-ventures/interchaintest/v8/testutil" + "github.com/strangelove-ventures/interchaintest/v9" + "github.com/strangelove-ventures/interchaintest/v9/chain/cosmos" + "github.com/strangelove-ventures/interchaintest/v9/chain/polkadot" + "github.com/strangelove-ventures/interchaintest/v9/ibc" + "github.com/strangelove-ventures/interchaintest/v9/relayer" + "github.com/strangelove-ventures/interchaintest/v9/testreporter" + "github.com/strangelove-ventures/interchaintest/v9/testutil" "github.com/stretchr/testify/require" "go.uber.org/zap/zaptest" ) diff --git a/examples/ibc/client_creation_test.go b/examples/ibc/client_creation_test.go index 64dd11868..2606520ac 100644 --- a/examples/ibc/client_creation_test.go +++ b/examples/ibc/client_creation_test.go @@ -4,10 +4,10 @@ import ( "context" "testing" - "github.com/strangelove-ventures/interchaintest/v8" - "github.com/strangelove-ventures/interchaintest/v8/chain/cosmos" - "github.com/strangelove-ventures/interchaintest/v8/ibc" - "github.com/strangelove-ventures/interchaintest/v8/testreporter" + "github.com/strangelove-ventures/interchaintest/v9" + "github.com/strangelove-ventures/interchaintest/v9/chain/cosmos" + "github.com/strangelove-ventures/interchaintest/v9/ibc" + "github.com/strangelove-ventures/interchaintest/v9/testreporter" "github.com/stretchr/testify/require" "go.uber.org/zap/zaptest" ) diff --git a/examples/ibc/ics_test.go b/examples/ibc/ics_test.go index ca9d59ad5..a600e3139 100644 --- a/examples/ibc/ics_test.go +++ b/examples/ibc/ics_test.go @@ -9,11 +9,11 @@ import ( "cosmossdk.io/math" transfertypes "github.com/cosmos/ibc-go/v8/modules/apps/transfer/types" ibcconntypes "github.com/cosmos/ibc-go/v8/modules/core/03-connection/types" - interchaintest "github.com/strangelove-ventures/interchaintest/v8" - "github.com/strangelove-ventures/interchaintest/v8/chain/cosmos" - "github.com/strangelove-ventures/interchaintest/v8/ibc" - "github.com/strangelove-ventures/interchaintest/v8/relayer" - "github.com/strangelove-ventures/interchaintest/v8/testreporter" + interchaintest "github.com/strangelove-ventures/interchaintest/v9" + "github.com/strangelove-ventures/interchaintest/v9/chain/cosmos" + "github.com/strangelove-ventures/interchaintest/v9/ibc" + "github.com/strangelove-ventures/interchaintest/v9/relayer" + "github.com/strangelove-ventures/interchaintest/v9/testreporter" "github.com/stretchr/testify/require" "go.uber.org/zap/zaptest" ) @@ -24,7 +24,7 @@ var ( ) // This tests Cosmos Interchain Security, spinning up a provider and a single consumer chain. -// go test -timeout 3000s -run ^TestICS$ github.com/strangelove-ventures/interchaintest/v8/examples/ibc -v -test.short +// go test -timeout 3000s -run ^TestICS$ github.com/strangelove-ventures/interchaintest/v9/examples/ibc -v -test.short func TestICS(t *testing.T) { if testing.Short() { ver := icsVersions[0] diff --git a/examples/ibc/learn_ibc_test.go b/examples/ibc/learn_ibc_test.go index 1b583e4cb..db73d268f 100644 --- a/examples/ibc/learn_ibc_test.go +++ b/examples/ibc/learn_ibc_test.go @@ -10,10 +10,10 @@ import ( "cosmossdk.io/math" clienttypes "github.com/cosmos/ibc-go/v8/modules/core/02-client/types" - "github.com/strangelove-ventures/interchaintest/v8" - "github.com/strangelove-ventures/interchaintest/v8/chain/cosmos" - "github.com/strangelove-ventures/interchaintest/v8/ibc" - "github.com/strangelove-ventures/interchaintest/v8/testreporter" + "github.com/strangelove-ventures/interchaintest/v9" + "github.com/strangelove-ventures/interchaintest/v9/chain/cosmos" + "github.com/strangelove-ventures/interchaintest/v9/ibc" + "github.com/strangelove-ventures/interchaintest/v9/testreporter" "github.com/stretchr/testify/require" "go.uber.org/zap/zaptest" ) diff --git a/examples/ibc/wasm/wasm_ibc_test.go b/examples/ibc/wasm/wasm_ibc_test.go index ea6c3ddb8..8e7524248 100644 --- a/examples/ibc/wasm/wasm_ibc_test.go +++ b/examples/ibc/wasm/wasm_ibc_test.go @@ -7,12 +7,12 @@ import ( "time" "cosmossdk.io/math" - "github.com/strangelove-ventures/interchaintest/v8" - "github.com/strangelove-ventures/interchaintest/v8/chain/cosmos" - "github.com/strangelove-ventures/interchaintest/v8/chain/cosmos/wasm" - "github.com/strangelove-ventures/interchaintest/v8/ibc" - "github.com/strangelove-ventures/interchaintest/v8/testreporter" - "github.com/strangelove-ventures/interchaintest/v8/testutil" + "github.com/strangelove-ventures/interchaintest/v9" + "github.com/strangelove-ventures/interchaintest/v9/chain/cosmos" + "github.com/strangelove-ventures/interchaintest/v9/chain/cosmos/wasm" + "github.com/strangelove-ventures/interchaintest/v9/ibc" + "github.com/strangelove-ventures/interchaintest/v9/testreporter" + "github.com/strangelove-ventures/interchaintest/v9/testutil" "github.com/stretchr/testify/require" "go.uber.org/zap/zaptest" ) diff --git a/examples/ibc/wasm/wasm_icq_test.go b/examples/ibc/wasm/wasm_icq_test.go index 9bb33ad5b..da2133d33 100644 --- a/examples/ibc/wasm/wasm_icq_test.go +++ b/examples/ibc/wasm/wasm_icq_test.go @@ -11,14 +11,14 @@ import ( "time" "cosmossdk.io/math" - "github.com/strangelove-ventures/interchaintest/v8" - cosmosChain "github.com/strangelove-ventures/interchaintest/v8/chain/cosmos" - "github.com/strangelove-ventures/interchaintest/v8/chain/cosmos/wasm" - "github.com/strangelove-ventures/interchaintest/v8/dockerutil" - "github.com/strangelove-ventures/interchaintest/v8/ibc" - "github.com/strangelove-ventures/interchaintest/v8/relayer" - "github.com/strangelove-ventures/interchaintest/v8/testreporter" - "github.com/strangelove-ventures/interchaintest/v8/testutil" + "github.com/strangelove-ventures/interchaintest/v9" + cosmosChain "github.com/strangelove-ventures/interchaintest/v9/chain/cosmos" + "github.com/strangelove-ventures/interchaintest/v9/chain/cosmos/wasm" + "github.com/strangelove-ventures/interchaintest/v9/dockerutil" + "github.com/strangelove-ventures/interchaintest/v9/ibc" + "github.com/strangelove-ventures/interchaintest/v9/relayer" + "github.com/strangelove-ventures/interchaintest/v9/testreporter" + "github.com/strangelove-ventures/interchaintest/v9/testutil" "github.com/stretchr/testify/require" "go.uber.org/zap" "go.uber.org/zap/zaptest" diff --git a/examples/namada/namada_chain_test.go b/examples/namada/namada_chain_test.go index 16a0a2388..7d755f307 100644 --- a/examples/namada/namada_chain_test.go +++ b/examples/namada/namada_chain_test.go @@ -11,11 +11,11 @@ import ( transfertypes "github.com/cosmos/ibc-go/v8/modules/apps/transfer/types" "cosmossdk.io/math" - "github.com/strangelove-ventures/interchaintest/v8" - namadachain "github.com/strangelove-ventures/interchaintest/v8/chain/namada" - "github.com/strangelove-ventures/interchaintest/v8/ibc" - "github.com/strangelove-ventures/interchaintest/v8/relayer" - "github.com/strangelove-ventures/interchaintest/v8/testreporter" + "github.com/strangelove-ventures/interchaintest/v9" + namadachain "github.com/strangelove-ventures/interchaintest/v9/chain/namada" + "github.com/strangelove-ventures/interchaintest/v9/ibc" + "github.com/strangelove-ventures/interchaintest/v9/relayer" + "github.com/strangelove-ventures/interchaintest/v9/testreporter" "github.com/stretchr/testify/require" "go.uber.org/zap/zaptest" ) diff --git a/examples/penumbra/penumbra_chain_test.go b/examples/penumbra/penumbra_chain_test.go index 496aafda2..616d822ad 100644 --- a/examples/penumbra/penumbra_chain_test.go +++ b/examples/penumbra/penumbra_chain_test.go @@ -7,11 +7,11 @@ import ( "time" "cosmossdk.io/math" - "github.com/strangelove-ventures/interchaintest/v8" - "github.com/strangelove-ventures/interchaintest/v8/chain/penumbra" - "github.com/strangelove-ventures/interchaintest/v8/ibc" - "github.com/strangelove-ventures/interchaintest/v8/testreporter" - "github.com/strangelove-ventures/interchaintest/v8/testutil" + "github.com/strangelove-ventures/interchaintest/v9" + "github.com/strangelove-ventures/interchaintest/v9/chain/penumbra" + "github.com/strangelove-ventures/interchaintest/v9/ibc" + "github.com/strangelove-ventures/interchaintest/v9/testreporter" + "github.com/strangelove-ventures/interchaintest/v9/testutil" "github.com/stretchr/testify/require" "go.uber.org/zap/zaptest" ) diff --git a/examples/penumbra/penumbra_ibc_test.go b/examples/penumbra/penumbra_ibc_test.go index 1a7196bda..bfbc6e6a9 100644 --- a/examples/penumbra/penumbra_ibc_test.go +++ b/examples/penumbra/penumbra_ibc_test.go @@ -8,12 +8,12 @@ import ( "cosmossdk.io/math" transfertypes "github.com/cosmos/ibc-go/v8/modules/apps/transfer/types" - "github.com/strangelove-ventures/interchaintest/v8" - "github.com/strangelove-ventures/interchaintest/v8/chain/penumbra" - "github.com/strangelove-ventures/interchaintest/v8/ibc" - "github.com/strangelove-ventures/interchaintest/v8/relayer" - "github.com/strangelove-ventures/interchaintest/v8/testreporter" - "github.com/strangelove-ventures/interchaintest/v8/testutil" + "github.com/strangelove-ventures/interchaintest/v9" + "github.com/strangelove-ventures/interchaintest/v9/chain/penumbra" + "github.com/strangelove-ventures/interchaintest/v9/ibc" + "github.com/strangelove-ventures/interchaintest/v9/relayer" + "github.com/strangelove-ventures/interchaintest/v9/testreporter" + "github.com/strangelove-ventures/interchaintest/v9/testutil" "github.com/stretchr/testify/require" "go.uber.org/zap/zaptest" ) diff --git a/examples/polkadot/polkadot_chain_test.go b/examples/polkadot/polkadot_chain_test.go index 2d7baa6d9..245ae7b54 100644 --- a/examples/polkadot/polkadot_chain_test.go +++ b/examples/polkadot/polkadot_chain_test.go @@ -6,11 +6,11 @@ import ( "testing" "cosmossdk.io/math" - "github.com/strangelove-ventures/interchaintest/v8" - "github.com/strangelove-ventures/interchaintest/v8/chain/polkadot" - "github.com/strangelove-ventures/interchaintest/v8/ibc" - "github.com/strangelove-ventures/interchaintest/v8/testreporter" - "github.com/strangelove-ventures/interchaintest/v8/testutil" + "github.com/strangelove-ventures/interchaintest/v9" + "github.com/strangelove-ventures/interchaintest/v9/chain/polkadot" + "github.com/strangelove-ventures/interchaintest/v9/ibc" + "github.com/strangelove-ventures/interchaintest/v9/testreporter" + "github.com/strangelove-ventures/interchaintest/v9/testutil" "github.com/stretchr/testify/require" "go.uber.org/zap/zaptest" ) diff --git a/examples/polkadot/push_wasm_client_code_test.go b/examples/polkadot/push_wasm_client_code_test.go index 0f2647c45..a34bb0bda 100644 --- a/examples/polkadot/push_wasm_client_code_test.go +++ b/examples/polkadot/push_wasm_client_code_test.go @@ -12,11 +12,11 @@ import ( "cosmossdk.io/math" govv1beta1 "github.com/cosmos/cosmos-sdk/x/gov/types/v1beta1" "github.com/icza/dyno" - "github.com/strangelove-ventures/interchaintest/v8" - "github.com/strangelove-ventures/interchaintest/v8/chain/cosmos" - "github.com/strangelove-ventures/interchaintest/v8/ibc" - "github.com/strangelove-ventures/interchaintest/v8/testreporter" - "github.com/strangelove-ventures/interchaintest/v8/testutil" + "github.com/strangelove-ventures/interchaintest/v9" + "github.com/strangelove-ventures/interchaintest/v9/chain/cosmos" + "github.com/strangelove-ventures/interchaintest/v9/ibc" + "github.com/strangelove-ventures/interchaintest/v9/testreporter" + "github.com/strangelove-ventures/interchaintest/v9/testutil" "github.com/stretchr/testify/require" "go.uber.org/zap/zaptest" ) diff --git a/examples/polkadot/substrate_cosmos_ibc_test.go b/examples/polkadot/substrate_cosmos_ibc_test.go index 4a733188a..f90289f37 100644 --- a/examples/polkadot/substrate_cosmos_ibc_test.go +++ b/examples/polkadot/substrate_cosmos_ibc_test.go @@ -6,11 +6,11 @@ import ( "testing" "time" - "github.com/strangelove-ventures/interchaintest/v8" - "github.com/strangelove-ventures/interchaintest/v8/ibc" - "github.com/strangelove-ventures/interchaintest/v8/relayer" - "github.com/strangelove-ventures/interchaintest/v8/testreporter" - "github.com/strangelove-ventures/interchaintest/v8/testutil" + "github.com/strangelove-ventures/interchaintest/v9" + "github.com/strangelove-ventures/interchaintest/v9/ibc" + "github.com/strangelove-ventures/interchaintest/v9/relayer" + "github.com/strangelove-ventures/interchaintest/v9/testreporter" + "github.com/strangelove-ventures/interchaintest/v9/testutil" "github.com/stretchr/testify/require" "go.uber.org/zap/zaptest" ) diff --git a/examples/thorchain/chainspec_exochains_test.go b/examples/thorchain/chainspec_exochains_test.go index 002889e76..1e8860b6c 100644 --- a/examples/thorchain/chainspec_exochains_test.go +++ b/examples/thorchain/chainspec_exochains_test.go @@ -1,13 +1,13 @@ package thorchain_test import ( - "github.com/strangelove-ventures/interchaintest/v8" - "github.com/strangelove-ventures/interchaintest/v8/chain/cosmos" - "github.com/strangelove-ventures/interchaintest/v8/chain/ethereum/foundry" - "github.com/strangelove-ventures/interchaintest/v8/chain/ethereum/geth" - "github.com/strangelove-ventures/interchaintest/v8/chain/thorchain/common" - "github.com/strangelove-ventures/interchaintest/v8/chain/utxo" - "github.com/strangelove-ventures/interchaintest/v8/ibc" + "github.com/strangelove-ventures/interchaintest/v9" + "github.com/strangelove-ventures/interchaintest/v9/chain/cosmos" + "github.com/strangelove-ventures/interchaintest/v9/chain/ethereum/foundry" + "github.com/strangelove-ventures/interchaintest/v9/chain/ethereum/geth" + "github.com/strangelove-ventures/interchaintest/v9/chain/thorchain/common" + "github.com/strangelove-ventures/interchaintest/v9/chain/utxo" + "github.com/strangelove-ventures/interchaintest/v9/ibc" ) type ExoChains map[string]*ExoChain diff --git a/examples/thorchain/chainspec_thorchain_test.go b/examples/thorchain/chainspec_thorchain_test.go index 8825ef79b..3b7767a44 100644 --- a/examples/thorchain/chainspec_thorchain_test.go +++ b/examples/thorchain/chainspec_thorchain_test.go @@ -5,10 +5,10 @@ import ( "strings" "cosmossdk.io/math" - "github.com/strangelove-ventures/interchaintest/v8" - "github.com/strangelove-ventures/interchaintest/v8/chain/thorchain" - "github.com/strangelove-ventures/interchaintest/v8/chain/thorchain/common" - "github.com/strangelove-ventures/interchaintest/v8/ibc" + "github.com/strangelove-ventures/interchaintest/v9" + "github.com/strangelove-ventures/interchaintest/v9/chain/thorchain" + "github.com/strangelove-ventures/interchaintest/v9/chain/thorchain/common" + "github.com/strangelove-ventures/interchaintest/v9/ibc" ) var ( diff --git a/examples/thorchain/features/arb.go b/examples/thorchain/features/arb.go index f9665e3f8..a99061089 100644 --- a/examples/thorchain/features/arb.go +++ b/examples/thorchain/features/arb.go @@ -9,9 +9,9 @@ import ( "time" sdkmath "cosmossdk.io/math" - tc "github.com/strangelove-ventures/interchaintest/v8/chain/thorchain" - "github.com/strangelove-ventures/interchaintest/v8/chain/thorchain/common" - "github.com/strangelove-ventures/interchaintest/v8/ibc" + tc "github.com/strangelove-ventures/interchaintest/v9/chain/thorchain" + "github.com/strangelove-ventures/interchaintest/v9/chain/thorchain/common" + "github.com/strangelove-ventures/interchaintest/v9/ibc" "golang.org/x/sync/errgroup" ) diff --git a/examples/thorchain/features/dual_lper.go b/examples/thorchain/features/dual_lper.go index 1ff32c038..713c4c16a 100644 --- a/examples/thorchain/features/dual_lper.go +++ b/examples/thorchain/features/dual_lper.go @@ -5,9 +5,9 @@ import ( "fmt" "testing" - tc "github.com/strangelove-ventures/interchaintest/v8/chain/thorchain" - "github.com/strangelove-ventures/interchaintest/v8/chain/thorchain/common" - "github.com/strangelove-ventures/interchaintest/v8/ibc" + tc "github.com/strangelove-ventures/interchaintest/v9/chain/thorchain" + "github.com/strangelove-ventures/interchaintest/v9/chain/thorchain/common" + "github.com/strangelove-ventures/interchaintest/v9/ibc" ) func DualLp( diff --git a/examples/thorchain/features/helpers.go b/examples/thorchain/features/helpers.go index e5b949e14..48216f8d6 100644 --- a/examples/thorchain/features/helpers.go +++ b/examples/thorchain/features/helpers.go @@ -9,11 +9,11 @@ import ( "time" sdkmath "cosmossdk.io/math" - "github.com/strangelove-ventures/interchaintest/v8" - tc "github.com/strangelove-ventures/interchaintest/v8/chain/thorchain" - "github.com/strangelove-ventures/interchaintest/v8/chain/thorchain/common" - "github.com/strangelove-ventures/interchaintest/v8/ibc" - "github.com/strangelove-ventures/interchaintest/v8/testutil" + "github.com/strangelove-ventures/interchaintest/v9" + tc "github.com/strangelove-ventures/interchaintest/v9/chain/thorchain" + "github.com/strangelove-ventures/interchaintest/v9/chain/thorchain/common" + "github.com/strangelove-ventures/interchaintest/v9/ibc" + "github.com/strangelove-ventures/interchaintest/v9/testutil" "golang.org/x/sync/errgroup" ) diff --git a/examples/thorchain/features/ragnarok.go b/examples/thorchain/features/ragnarok.go index 3a46eccae..e962405b8 100644 --- a/examples/thorchain/features/ragnarok.go +++ b/examples/thorchain/features/ragnarok.go @@ -6,9 +6,9 @@ import ( "testing" sdkmath "cosmossdk.io/math" - tc "github.com/strangelove-ventures/interchaintest/v8/chain/thorchain" - "github.com/strangelove-ventures/interchaintest/v8/chain/thorchain/common" - "github.com/strangelove-ventures/interchaintest/v8/ibc" + tc "github.com/strangelove-ventures/interchaintest/v9/chain/thorchain" + "github.com/strangelove-ventures/interchaintest/v9/chain/thorchain/common" + "github.com/strangelove-ventures/interchaintest/v9/ibc" ) func Ragnarok( diff --git a/examples/thorchain/features/saver_eject.go b/examples/thorchain/features/saver_eject.go index 20ba3dfb3..362c7f77d 100644 --- a/examples/thorchain/features/saver_eject.go +++ b/examples/thorchain/features/saver_eject.go @@ -10,9 +10,9 @@ import ( "testing" sdkmath "cosmossdk.io/math" - tc "github.com/strangelove-ventures/interchaintest/v8/chain/thorchain" - "github.com/strangelove-ventures/interchaintest/v8/chain/thorchain/common" - "github.com/strangelove-ventures/interchaintest/v8/ibc" + tc "github.com/strangelove-ventures/interchaintest/v9/chain/thorchain" + "github.com/strangelove-ventures/interchaintest/v9/chain/thorchain/common" + "github.com/strangelove-ventures/interchaintest/v9/ibc" ) func SaverEject( diff --git a/examples/thorchain/features/savers.go b/examples/thorchain/features/savers.go index 4bfe8185e..eb9e99e6f 100644 --- a/examples/thorchain/features/savers.go +++ b/examples/thorchain/features/savers.go @@ -8,9 +8,9 @@ import ( "testing" sdkmath "cosmossdk.io/math" - tc "github.com/strangelove-ventures/interchaintest/v8/chain/thorchain" - "github.com/strangelove-ventures/interchaintest/v8/chain/thorchain/common" - "github.com/strangelove-ventures/interchaintest/v8/ibc" + tc "github.com/strangelove-ventures/interchaintest/v9/chain/thorchain" + "github.com/strangelove-ventures/interchaintest/v9/chain/thorchain/common" + "github.com/strangelove-ventures/interchaintest/v9/ibc" ) func Saver( diff --git a/examples/thorchain/features/swap.go b/examples/thorchain/features/swap.go index 9e00a1770..713cd0cf5 100644 --- a/examples/thorchain/features/swap.go +++ b/examples/thorchain/features/swap.go @@ -7,9 +7,9 @@ import ( "testing" sdkmath "cosmossdk.io/math" - tc "github.com/strangelove-ventures/interchaintest/v8/chain/thorchain" - "github.com/strangelove-ventures/interchaintest/v8/chain/thorchain/common" - "github.com/strangelove-ventures/interchaintest/v8/ibc" + tc "github.com/strangelove-ventures/interchaintest/v9/chain/thorchain" + "github.com/strangelove-ventures/interchaintest/v9/chain/thorchain/common" + "github.com/strangelove-ventures/interchaintest/v9/ibc" ) func SingleSwap( diff --git a/examples/thorchain/helper_test.go b/examples/thorchain/helper_test.go index 208fb0487..af990cb53 100644 --- a/examples/thorchain/helper_test.go +++ b/examples/thorchain/helper_test.go @@ -6,7 +6,7 @@ import ( "regexp" "time" - "github.com/strangelove-ventures/interchaintest/v8/ibc" + "github.com/strangelove-ventures/interchaintest/v9/ibc" ) func GetEthAddressFromStdout(stdout string) (string, error) { diff --git a/examples/thorchain/setup_test.go b/examples/thorchain/setup_test.go index 0cce1a92e..34b162dc2 100644 --- a/examples/thorchain/setup_test.go +++ b/examples/thorchain/setup_test.go @@ -18,14 +18,14 @@ import ( "github.com/docker/docker/client" ethcommon "github.com/ethereum/go-ethereum/common" - "github.com/strangelove-ventures/interchaintest/v8" - "github.com/strangelove-ventures/interchaintest/v8/chain/cosmos" - "github.com/strangelove-ventures/interchaintest/v8/chain/ethereum" - "github.com/strangelove-ventures/interchaintest/v8/chain/ethereum/foundry" - "github.com/strangelove-ventures/interchaintest/v8/chain/ethereum/geth" - tc "github.com/strangelove-ventures/interchaintest/v8/chain/thorchain" - "github.com/strangelove-ventures/interchaintest/v8/chain/utxo" - "github.com/strangelove-ventures/interchaintest/v8/ibc" + "github.com/strangelove-ventures/interchaintest/v9" + "github.com/strangelove-ventures/interchaintest/v9/chain/cosmos" + "github.com/strangelove-ventures/interchaintest/v9/chain/ethereum" + "github.com/strangelove-ventures/interchaintest/v9/chain/ethereum/foundry" + "github.com/strangelove-ventures/interchaintest/v9/chain/ethereum/geth" + tc "github.com/strangelove-ventures/interchaintest/v9/chain/thorchain" + "github.com/strangelove-ventures/interchaintest/v9/chain/utxo" + "github.com/strangelove-ventures/interchaintest/v9/ibc" "github.com/stretchr/testify/require" "go.uber.org/zap/zaptest" "golang.org/x/sync/errgroup" diff --git a/examples/thorchain/thorchain_hardfork_test.go b/examples/thorchain/thorchain_hardfork_test.go index 6e5d794bd..082021f9d 100644 --- a/examples/thorchain/thorchain_hardfork_test.go +++ b/examples/thorchain/thorchain_hardfork_test.go @@ -5,12 +5,12 @@ import ( _ "embed" "testing" - "github.com/strangelove-ventures/interchaintest/v8" - tc "github.com/strangelove-ventures/interchaintest/v8/chain/thorchain" - "github.com/strangelove-ventures/interchaintest/v8/ibc" + "github.com/strangelove-ventures/interchaintest/v9" + tc "github.com/strangelove-ventures/interchaintest/v9/chain/thorchain" + "github.com/strangelove-ventures/interchaintest/v9/ibc" - //"github.com/strangelove-ventures/interchaintest/v8/ibc" - "github.com/strangelove-ventures/interchaintest/v8/testutil" + //"github.com/strangelove-ventures/interchaintest/v9/ibc" + "github.com/strangelove-ventures/interchaintest/v9/testutil" "github.com/stretchr/testify/require" "go.uber.org/zap/zaptest" ) diff --git a/examples/thorchain/thorchain_test.go b/examples/thorchain/thorchain_test.go index 26c866853..cdec876f6 100644 --- a/examples/thorchain/thorchain_test.go +++ b/examples/thorchain/thorchain_test.go @@ -7,8 +7,8 @@ import ( "sync" "testing" - "github.com/strangelove-ventures/interchaintest/v8" - "github.com/strangelove-ventures/interchaintest/v8/examples/thorchain/features" + "github.com/strangelove-ventures/interchaintest/v9" + "github.com/strangelove-ventures/interchaintest/v9/examples/thorchain/features" "github.com/stretchr/testify/require" "golang.org/x/sync/errgroup" diff --git a/examples/utxo/start_test.go b/examples/utxo/start_test.go index 537b92d82..b1b145ba0 100644 --- a/examples/utxo/start_test.go +++ b/examples/utxo/start_test.go @@ -8,9 +8,9 @@ import ( "testing" sdkmath "cosmossdk.io/math" - "github.com/strangelove-ventures/interchaintest/v8" - "github.com/strangelove-ventures/interchaintest/v8/chain/utxo" - "github.com/strangelove-ventures/interchaintest/v8/ibc" + "github.com/strangelove-ventures/interchaintest/v9" + "github.com/strangelove-ventures/interchaintest/v9/chain/utxo" + "github.com/strangelove-ventures/interchaintest/v9/ibc" "golang.org/x/sync/errgroup" "github.com/stretchr/testify/require" diff --git a/go.mod b/go.mod index d167e0c6b..da66c9150 100644 --- a/go.mod +++ b/go.mod @@ -1,4 +1,4 @@ -module github.com/strangelove-ventures/interchaintest/v8 +module github.com/strangelove-ventures/interchaintest/v9 go 1.22.5 diff --git a/interchain.go b/interchain.go index 64ff03051..4d55017b0 100644 --- a/interchain.go +++ b/interchain.go @@ -12,11 +12,11 @@ import ( sdkmath "cosmossdk.io/math" - "github.com/strangelove-ventures/interchaintest/v8/chain/cosmos" - "github.com/strangelove-ventures/interchaintest/v8/chain/namada" - "github.com/strangelove-ventures/interchaintest/v8/ibc" - "github.com/strangelove-ventures/interchaintest/v8/relayer/hermes" - "github.com/strangelove-ventures/interchaintest/v8/testreporter" + "github.com/strangelove-ventures/interchaintest/v9/chain/cosmos" + "github.com/strangelove-ventures/interchaintest/v9/chain/namada" + "github.com/strangelove-ventures/interchaintest/v9/ibc" + "github.com/strangelove-ventures/interchaintest/v9/relayer/hermes" + "github.com/strangelove-ventures/interchaintest/v9/testreporter" ) // Interchain represents a full IBC network, encompassing a collection of diff --git a/interchain_builder.go b/interchain_builder.go index 493f6f1fb..669f1322a 100644 --- a/interchain_builder.go +++ b/interchain_builder.go @@ -11,10 +11,10 @@ import ( codectypes "github.com/cosmos/cosmos-sdk/codec/types" "github.com/cosmos/cosmos-sdk/types/module/testutil" - "github.com/strangelove-ventures/interchaintest/v8/chain/cosmos" - "github.com/strangelove-ventures/interchaintest/v8/ibc" - "github.com/strangelove-ventures/interchaintest/v8/relayer" - "github.com/strangelove-ventures/interchaintest/v8/testreporter" + "github.com/strangelove-ventures/interchaintest/v9/chain/cosmos" + "github.com/strangelove-ventures/interchaintest/v9/ibc" + "github.com/strangelove-ventures/interchaintest/v9/relayer" + "github.com/strangelove-ventures/interchaintest/v9/testreporter" ) type codecRegistry func(registry codectypes.InterfaceRegistry) diff --git a/interchain_test.go b/interchain_test.go index b02ea8cd2..54ea848c8 100644 --- a/interchain_test.go +++ b/interchain_test.go @@ -22,12 +22,12 @@ import ( "github.com/cosmos/cosmos-sdk/crypto/keyring" sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/strangelove-ventures/interchaintest/v8" - "github.com/strangelove-ventures/interchaintest/v8/chain/cosmos" - "github.com/strangelove-ventures/interchaintest/v8/ibc" - "github.com/strangelove-ventures/interchaintest/v8/relayer/rly" - "github.com/strangelove-ventures/interchaintest/v8/testreporter" - "github.com/strangelove-ventures/interchaintest/v8/testutil" + "github.com/strangelove-ventures/interchaintest/v9" + "github.com/strangelove-ventures/interchaintest/v9/chain/cosmos" + "github.com/strangelove-ventures/interchaintest/v9/ibc" + "github.com/strangelove-ventures/interchaintest/v9/relayer/rly" + "github.com/strangelove-ventures/interchaintest/v9/testreporter" + "github.com/strangelove-ventures/interchaintest/v9/testutil" ) var ( diff --git a/local-interchain/cmd/local-ic/new_chain.go b/local-interchain/cmd/local-ic/new_chain.go index e428ea456..dd81e9abc 100644 --- a/local-interchain/cmd/local-ic/new_chain.go +++ b/local-interchain/cmd/local-ic/new_chain.go @@ -12,7 +12,7 @@ import ( "github.com/spf13/cobra" "github.com/strangelove-ventures/interchaintest/local-interchain/interchain/types" ictypes "github.com/strangelove-ventures/interchaintest/local-interchain/interchain/types" - "github.com/strangelove-ventures/interchaintest/v8/ibc" + "github.com/strangelove-ventures/interchaintest/v9/ibc" ) var reader = bufio.NewReader(os.Stdin) diff --git a/local-interchain/cmd/local-ic/start_chain.go b/local-interchain/cmd/local-ic/start_chain.go index dea17c8fd..288c50a08 100644 --- a/local-interchain/cmd/local-ic/start_chain.go +++ b/local-interchain/cmd/local-ic/start_chain.go @@ -10,7 +10,7 @@ import ( "github.com/spf13/cobra" "github.com/strangelove-ventures/interchaintest/local-interchain/interchain" "github.com/strangelove-ventures/interchaintest/local-interchain/interchain/types" - "github.com/strangelove-ventures/interchaintest/v8/ibc" + "github.com/strangelove-ventures/interchaintest/v9/ibc" ) const ( @@ -39,10 +39,10 @@ local-ic start https://pastebin.com/raw/Ummk4DTM isURL := strings.HasPrefix(configPath, "http") var ( - parentDir string - config *types.Config - err error - ) + parentDir string + config *types.Config + err error + ) if path.IsAbs(configPath) { dir, err := filepath.Abs(configPath) diff --git a/local-interchain/interchain/config.go b/local-interchain/interchain/config.go index fa8458904..3c2fce20f 100644 --- a/local-interchain/interchain/config.go +++ b/local-interchain/interchain/config.go @@ -16,10 +16,10 @@ import ( "github.com/strangelove-ventures/interchaintest/local-interchain/interchain/util" "gopkg.in/yaml.v3" - "github.com/strangelove-ventures/interchaintest/v8" - "github.com/strangelove-ventures/interchaintest/v8/chain/cosmos" - "github.com/strangelove-ventures/interchaintest/v8/ibc" - "github.com/strangelove-ventures/interchaintest/v8/testutil" + "github.com/strangelove-ventures/interchaintest/v9" + "github.com/strangelove-ventures/interchaintest/v9/chain/cosmos" + "github.com/strangelove-ventures/interchaintest/v9/ibc" + "github.com/strangelove-ventures/interchaintest/v9/testutil" ) const ChainDir = "chains" diff --git a/local-interchain/interchain/genesis.go b/local-interchain/interchain/genesis.go index a0440740f..58f1d768a 100644 --- a/local-interchain/interchain/genesis.go +++ b/local-interchain/interchain/genesis.go @@ -7,8 +7,8 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" types "github.com/strangelove-ventures/interchaintest/local-interchain/interchain/types" - "github.com/strangelove-ventures/interchaintest/v8/chain/cosmos" - "github.com/strangelove-ventures/interchaintest/v8/ibc" + "github.com/strangelove-ventures/interchaintest/v9/chain/cosmos" + "github.com/strangelove-ventures/interchaintest/v9/ibc" ) func AddGenesisKeysToKeyring(ctx context.Context, config *types.Config, chains []ibc.Chain) { diff --git a/local-interchain/interchain/handlers/actions.go b/local-interchain/interchain/handlers/actions.go index d40a03c3a..d5aeab42a 100644 --- a/local-interchain/interchain/handlers/actions.go +++ b/local-interchain/interchain/handlers/actions.go @@ -11,10 +11,10 @@ import ( sdkmath "cosmossdk.io/math" "github.com/strangelove-ventures/interchaintest/local-interchain/interchain/util" - "github.com/strangelove-ventures/interchaintest/v8" - "github.com/strangelove-ventures/interchaintest/v8/chain/cosmos" - "github.com/strangelove-ventures/interchaintest/v8/dockerutil" - "github.com/strangelove-ventures/interchaintest/v8/ibc" + "github.com/strangelove-ventures/interchaintest/v9" + "github.com/strangelove-ventures/interchaintest/v9/chain/cosmos" + "github.com/strangelove-ventures/interchaintest/v9/dockerutil" + "github.com/strangelove-ventures/interchaintest/v9/ibc" ) type actions struct { diff --git a/local-interchain/interchain/handlers/container_log_stream.go b/local-interchain/interchain/handlers/container_log_stream.go index 0f629ab44..d16c14515 100644 --- a/local-interchain/interchain/handlers/container_log_stream.go +++ b/local-interchain/interchain/handlers/container_log_stream.go @@ -11,7 +11,7 @@ import ( dockertypes "github.com/docker/docker/api/types" dockerclient "github.com/docker/docker/client" - "github.com/strangelove-ventures/interchaintest/v8/chain/cosmos" + "github.com/strangelove-ventures/interchaintest/v9/chain/cosmos" "go.uber.org/zap" ) diff --git a/local-interchain/interchain/handlers/info.go b/local-interchain/interchain/handlers/info.go index a5296122e..9f8d48131 100644 --- a/local-interchain/interchain/handlers/info.go +++ b/local-interchain/interchain/handlers/info.go @@ -12,9 +12,9 @@ import ( types "github.com/strangelove-ventures/interchaintest/local-interchain/interchain/types" util "github.com/strangelove-ventures/interchaintest/local-interchain/interchain/util" - "github.com/strangelove-ventures/interchaintest/v8" - "github.com/strangelove-ventures/interchaintest/v8/chain/cosmos" - "github.com/strangelove-ventures/interchaintest/v8/ibc" + "github.com/strangelove-ventures/interchaintest/v9" + "github.com/strangelove-ventures/interchaintest/v9/chain/cosmos" + "github.com/strangelove-ventures/interchaintest/v9/ibc" ) type info struct { diff --git a/local-interchain/interchain/handlers/types.go b/local-interchain/interchain/handlers/types.go index 19de04af2..a2e4af7c7 100644 --- a/local-interchain/interchain/handlers/types.go +++ b/local-interchain/interchain/handlers/types.go @@ -5,7 +5,7 @@ import ( "fmt" "net/http" - "github.com/strangelove-ventures/interchaintest/v8/ibc" + "github.com/strangelove-ventures/interchaintest/v9/ibc" ) func VerifyAuthKey(expected string, r *http.Request) error { diff --git a/local-interchain/interchain/handlers/uploader.go b/local-interchain/interchain/handlers/uploader.go index 6eb7e6151..60c303f0b 100644 --- a/local-interchain/interchain/handlers/uploader.go +++ b/local-interchain/interchain/handlers/uploader.go @@ -9,7 +9,7 @@ import ( "path/filepath" "github.com/strangelove-ventures/interchaintest/local-interchain/interchain/util" - "github.com/strangelove-ventures/interchaintest/v8/chain/cosmos" + "github.com/strangelove-ventures/interchaintest/v9/chain/cosmos" ) type upload struct { diff --git a/local-interchain/interchain/ibc.go b/local-interchain/interchain/ibc.go index 76abae179..ac8e39162 100644 --- a/local-interchain/interchain/ibc.go +++ b/local-interchain/interchain/ibc.go @@ -5,8 +5,8 @@ import ( "fmt" types "github.com/strangelove-ventures/interchaintest/local-interchain/interchain/types" - "github.com/strangelove-ventures/interchaintest/v8" - "github.com/strangelove-ventures/interchaintest/v8/ibc" + "github.com/strangelove-ventures/interchaintest/v9" + "github.com/strangelove-ventures/interchaintest/v9/ibc" ) func VerifyIBCPaths(ibcpaths map[string][]int) error { diff --git a/local-interchain/interchain/logs.go b/local-interchain/interchain/logs.go index e750d9ee5..04787571b 100644 --- a/local-interchain/interchain/logs.go +++ b/local-interchain/interchain/logs.go @@ -7,9 +7,9 @@ import ( "time" types "github.com/strangelove-ventures/interchaintest/local-interchain/interchain/types" - "github.com/strangelove-ventures/interchaintest/v8/chain/cosmos" - "github.com/strangelove-ventures/interchaintest/v8/chain/ethereum/foundry" - "github.com/strangelove-ventures/interchaintest/v8/ibc" + "github.com/strangelove-ventures/interchaintest/v9/chain/cosmos" + "github.com/strangelove-ventures/interchaintest/v9/chain/ethereum/foundry" + "github.com/strangelove-ventures/interchaintest/v9/ibc" "go.uber.org/zap" "go.uber.org/zap/zapcore" ) diff --git a/local-interchain/interchain/router/router.go b/local-interchain/interchain/router/router.go index 7501a22f0..1de100e17 100644 --- a/local-interchain/interchain/router/router.go +++ b/local-interchain/interchain/router/router.go @@ -12,9 +12,9 @@ import ( "github.com/gorilla/mux" ictypes "github.com/strangelove-ventures/interchaintest/local-interchain/interchain/types" "github.com/strangelove-ventures/interchaintest/local-interchain/interchain/util" - "github.com/strangelove-ventures/interchaintest/v8" - "github.com/strangelove-ventures/interchaintest/v8/chain/cosmos" - "github.com/strangelove-ventures/interchaintest/v8/ibc" + "github.com/strangelove-ventures/interchaintest/v9" + "github.com/strangelove-ventures/interchaintest/v9/chain/cosmos" + "github.com/strangelove-ventures/interchaintest/v9/ibc" "go.uber.org/zap" "github.com/strangelove-ventures/interchaintest/local-interchain/interchain/handlers" diff --git a/local-interchain/interchain/start.go b/local-interchain/interchain/start.go index b5c77cdb9..a3a54a04e 100644 --- a/local-interchain/interchain/start.go +++ b/local-interchain/interchain/start.go @@ -17,13 +17,13 @@ import ( "github.com/gorilla/handlers" "github.com/strangelove-ventures/interchaintest/local-interchain/interchain/router" "github.com/strangelove-ventures/interchaintest/local-interchain/interchain/types" - "github.com/strangelove-ventures/interchaintest/v8" - "github.com/strangelove-ventures/interchaintest/v8/chain/cosmos" - "github.com/strangelove-ventures/interchaintest/v8/dockerutil" - "github.com/strangelove-ventures/interchaintest/v8/ibc" - interchaintestrelayer "github.com/strangelove-ventures/interchaintest/v8/relayer" - "github.com/strangelove-ventures/interchaintest/v8/testreporter" - "github.com/strangelove-ventures/interchaintest/v8/testutil" + "github.com/strangelove-ventures/interchaintest/v9" + "github.com/strangelove-ventures/interchaintest/v9/chain/cosmos" + "github.com/strangelove-ventures/interchaintest/v9/dockerutil" + "github.com/strangelove-ventures/interchaintest/v9/ibc" + interchaintestrelayer "github.com/strangelove-ventures/interchaintest/v9/relayer" + "github.com/strangelove-ventures/interchaintest/v9/testreporter" + "github.com/strangelove-ventures/interchaintest/v9/testutil" "go.uber.org/zap" ) diff --git a/local-interchain/interchain/types/chain_builder.go b/local-interchain/interchain/types/chain_builder.go index 79e423e3b..89485130c 100644 --- a/local-interchain/interchain/types/chain_builder.go +++ b/local-interchain/interchain/types/chain_builder.go @@ -6,8 +6,8 @@ import ( "os" "path/filepath" - "github.com/strangelove-ventures/interchaintest/v8/chain/cosmos" - "github.com/strangelove-ventures/interchaintest/v8/ibc" + "github.com/strangelove-ventures/interchaintest/v9/chain/cosmos" + "github.com/strangelove-ventures/interchaintest/v9/ibc" "gopkg.in/yaml.v3" ) diff --git a/local-interchain/interchain/types/chains.go b/local-interchain/interchain/types/chains.go index 2d4ee81ba..0d037b495 100644 --- a/local-interchain/interchain/types/chains.go +++ b/local-interchain/interchain/types/chains.go @@ -1,8 +1,8 @@ package types import ( - "github.com/strangelove-ventures/interchaintest/v8/ibc" - "github.com/strangelove-ventures/interchaintest/v8/testutil" + "github.com/strangelove-ventures/interchaintest/v9/ibc" + "github.com/strangelove-ventures/interchaintest/v9/testutil" ) func ChainCosmosHub(chainID string) *Chain { diff --git a/local-interchain/interchain/types/genesis.go b/local-interchain/interchain/types/genesis.go index a0c15f5eb..bf33bbe86 100644 --- a/local-interchain/interchain/types/genesis.go +++ b/local-interchain/interchain/types/genesis.go @@ -9,7 +9,7 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" moduletestutil "github.com/cosmos/cosmos-sdk/types/module/testutil" "github.com/cosmos/go-bip39" - "github.com/strangelove-ventures/interchaintest/v8/chain/cosmos" + "github.com/strangelove-ventures/interchaintest/v9/chain/cosmos" ) type GenesisAccount struct { diff --git a/local-interchain/interchain/types/types.go b/local-interchain/interchain/types/types.go index 6200a3b2b..9fb3353f7 100644 --- a/local-interchain/interchain/types/types.go +++ b/local-interchain/interchain/types/types.go @@ -7,9 +7,9 @@ import ( "path/filepath" "github.com/go-playground/validator" - "github.com/strangelove-ventures/interchaintest/v8/chain/cosmos" - "github.com/strangelove-ventures/interchaintest/v8/ibc" - "github.com/strangelove-ventures/interchaintest/v8/testutil" + "github.com/strangelove-ventures/interchaintest/v9/chain/cosmos" + "github.com/strangelove-ventures/interchaintest/v9/ibc" + "github.com/strangelove-ventures/interchaintest/v9/testutil" "gopkg.in/yaml.v3" ) diff --git a/mocktesting/t_test.go b/mocktesting/t_test.go index e10516a38..9b772a06d 100644 --- a/mocktesting/t_test.go +++ b/mocktesting/t_test.go @@ -6,7 +6,7 @@ import ( "github.com/stretchr/testify/require" - "github.com/strangelove-ventures/interchaintest/v8/mocktesting" + "github.com/strangelove-ventures/interchaintest/v9/mocktesting" ) func TestT_Name(t *testing.T) { diff --git a/penumbra.go b/penumbra.go index 872d4ab39..739bb6ff4 100644 --- a/penumbra.go +++ b/penumbra.go @@ -4,8 +4,8 @@ import ( "context" "fmt" - "github.com/strangelove-ventures/interchaintest/v8/chain/penumbra" - "github.com/strangelove-ventures/interchaintest/v8/ibc" + "github.com/strangelove-ventures/interchaintest/v9/chain/penumbra" + "github.com/strangelove-ventures/interchaintest/v9/ibc" ) // ErrPclientdInitialization is returned if the CreateClientNode call fails while initializing a new instance of diff --git a/relayer/docker.go b/relayer/docker.go index fef566e46..a00b9ace5 100644 --- a/relayer/docker.go +++ b/relayer/docker.go @@ -15,9 +15,9 @@ import ( "github.com/docker/docker/pkg/stdcopy" "go.uber.org/zap" - "github.com/strangelove-ventures/interchaintest/v8/dockerutil" - "github.com/strangelove-ventures/interchaintest/v8/ibc" - "github.com/strangelove-ventures/interchaintest/v8/testutil" + "github.com/strangelove-ventures/interchaintest/v9/dockerutil" + "github.com/strangelove-ventures/interchaintest/v9/ibc" + "github.com/strangelove-ventures/interchaintest/v9/testutil" ) const ( diff --git a/relayer/hermes/hermes_commander.go b/relayer/hermes/hermes_commander.go index 354a90d9f..d4d78b5f6 100644 --- a/relayer/hermes/hermes_commander.go +++ b/relayer/hermes/hermes_commander.go @@ -10,8 +10,8 @@ import ( ibcexported "github.com/cosmos/ibc-go/v8/modules/core/03-connection/types" "github.com/cosmos/ibc-go/v8/modules/core/23-commitment/types" - "github.com/strangelove-ventures/interchaintest/v8/ibc" - "github.com/strangelove-ventures/interchaintest/v8/relayer" + "github.com/strangelove-ventures/interchaintest/v9/ibc" + "github.com/strangelove-ventures/interchaintest/v9/relayer" ) var _ relayer.RelayerCommander = &commander{} diff --git a/relayer/hermes/hermes_config.go b/relayer/hermes/hermes_config.go index a4b7fdd33..23ef946ba 100644 --- a/relayer/hermes/hermes_config.go +++ b/relayer/hermes/hermes_config.go @@ -5,7 +5,7 @@ import ( "strconv" "strings" - "github.com/strangelove-ventures/interchaintest/v8/ibc" + "github.com/strangelove-ventures/interchaintest/v9/ibc" ) // NewConfig returns a hermes Config with an entry for each of the provided ChainConfigs. diff --git a/relayer/hermes/hermes_relayer.go b/relayer/hermes/hermes_relayer.go index 3ad28b814..95eff259c 100644 --- a/relayer/hermes/hermes_relayer.go +++ b/relayer/hermes/hermes_relayer.go @@ -13,8 +13,8 @@ import ( "github.com/pelletier/go-toml" "go.uber.org/zap" - "github.com/strangelove-ventures/interchaintest/v8/ibc" - "github.com/strangelove-ventures/interchaintest/v8/relayer" + "github.com/strangelove-ventures/interchaintest/v9/ibc" + "github.com/strangelove-ventures/interchaintest/v9/relayer" ) const ( diff --git a/relayer/hermes/hermes_wallet.go b/relayer/hermes/hermes_wallet.go index 053e34b90..461cf0271 100644 --- a/relayer/hermes/hermes_wallet.go +++ b/relayer/hermes/hermes_wallet.go @@ -1,6 +1,6 @@ package hermes -import "github.com/strangelove-ventures/interchaintest/v8/ibc" +import "github.com/strangelove-ventures/interchaintest/v9/ibc" var _ ibc.Wallet = &Wallet{} diff --git a/relayer/hyperspace/hyperspace_commander.go b/relayer/hyperspace/hyperspace_commander.go index 57cdb7fc9..b025ee727 100644 --- a/relayer/hyperspace/hyperspace_commander.go +++ b/relayer/hyperspace/hyperspace_commander.go @@ -14,8 +14,8 @@ import ( ibcexported "github.com/cosmos/ibc-go/v8/modules/core/03-connection/types" types23 "github.com/cosmos/ibc-go/v8/modules/core/23-commitment/types" - "github.com/strangelove-ventures/interchaintest/v8/chain/polkadot" - "github.com/strangelove-ventures/interchaintest/v8/ibc" + "github.com/strangelove-ventures/interchaintest/v9/chain/polkadot" + "github.com/strangelove-ventures/interchaintest/v9/ibc" ) // hyperspaceCommander satisfies relayer.RelayerCommander. diff --git a/relayer/hyperspace/hyperspace_config.go b/relayer/hyperspace/hyperspace_config.go index 733ee4f22..342beb295 100644 --- a/relayer/hyperspace/hyperspace_config.go +++ b/relayer/hyperspace/hyperspace_config.go @@ -12,8 +12,8 @@ import ( "github.com/cosmos/cosmos-sdk/crypto/keyring" "github.com/cosmos/cosmos-sdk/types" - "github.com/strangelove-ventures/interchaintest/v8/chain/polkadot" - "github.com/strangelove-ventures/interchaintest/v8/ibc" + "github.com/strangelove-ventures/interchaintest/v9/chain/polkadot" + "github.com/strangelove-ventures/interchaintest/v9/ibc" ) type HyperspaceRelayerCoreConfig struct { diff --git a/relayer/hyperspace/hyperspace_relayer.go b/relayer/hyperspace/hyperspace_relayer.go index ef697a0ba..544003ad4 100644 --- a/relayer/hyperspace/hyperspace_relayer.go +++ b/relayer/hyperspace/hyperspace_relayer.go @@ -11,8 +11,8 @@ import ( "github.com/pelletier/go-toml/v2" "go.uber.org/zap" - "github.com/strangelove-ventures/interchaintest/v8/ibc" - "github.com/strangelove-ventures/interchaintest/v8/relayer" + "github.com/strangelove-ventures/interchaintest/v9/ibc" + "github.com/strangelove-ventures/interchaintest/v9/relayer" ) var _ ibc.Relayer = &HyperspaceRelayer{} diff --git a/relayer/hyperspace/hyperspace_test.go b/relayer/hyperspace/hyperspace_test.go index 7942acaff..376ab2af4 100644 --- a/relayer/hyperspace/hyperspace_test.go +++ b/relayer/hyperspace/hyperspace_test.go @@ -5,7 +5,7 @@ import ( "github.com/stretchr/testify/require" - "github.com/strangelove-ventures/interchaintest/v8/relayer/hyperspace" + "github.com/strangelove-ventures/interchaintest/v9/relayer/hyperspace" ) func TestKeys(t *testing.T) { diff --git a/relayer/hyperspace/wallet.go b/relayer/hyperspace/wallet.go index e2cfb5522..f63324191 100644 --- a/relayer/hyperspace/wallet.go +++ b/relayer/hyperspace/wallet.go @@ -1,7 +1,7 @@ package hyperspace import ( - "github.com/strangelove-ventures/interchaintest/v8/ibc" + "github.com/strangelove-ventures/interchaintest/v9/ibc" ) var _ ibc.Wallet = &HyperspaceWallet{} diff --git a/relayer/options.go b/relayer/options.go index 49f732899..5ab9e43dc 100644 --- a/relayer/options.go +++ b/relayer/options.go @@ -1,7 +1,7 @@ package relayer import ( - "github.com/strangelove-ventures/interchaintest/v8/ibc" + "github.com/strangelove-ventures/interchaintest/v9/ibc" ) // RelayerOpt is a functional option for configuring a relayer. diff --git a/relayer/rly/cosmos_relayer.go b/relayer/rly/cosmos_relayer.go index 60cc9d445..187ff0eab 100644 --- a/relayer/rly/cosmos_relayer.go +++ b/relayer/rly/cosmos_relayer.go @@ -13,8 +13,8 @@ import ( "github.com/cosmos/cosmos-sdk/crypto/keyring" - "github.com/strangelove-ventures/interchaintest/v8/ibc" - "github.com/strangelove-ventures/interchaintest/v8/relayer" + "github.com/strangelove-ventures/interchaintest/v9/ibc" + "github.com/strangelove-ventures/interchaintest/v9/relayer" ) const ( diff --git a/relayer/rly/wallet.go b/relayer/rly/wallet.go index 2b5d627e3..8275367b3 100644 --- a/relayer/rly/wallet.go +++ b/relayer/rly/wallet.go @@ -1,7 +1,7 @@ package rly import ( - "github.com/strangelove-ventures/interchaintest/v8/ibc" + "github.com/strangelove-ventures/interchaintest/v9/ibc" ) var _ ibc.Wallet = &RlyWallet{} diff --git a/relayerfactory.go b/relayerfactory.go index 12a28c66d..81a4544a7 100644 --- a/relayerfactory.go +++ b/relayerfactory.go @@ -6,11 +6,11 @@ import ( "github.com/docker/docker/client" "go.uber.org/zap" - "github.com/strangelove-ventures/interchaintest/v8/ibc" - "github.com/strangelove-ventures/interchaintest/v8/relayer" - "github.com/strangelove-ventures/interchaintest/v8/relayer/hermes" - "github.com/strangelove-ventures/interchaintest/v8/relayer/hyperspace" - "github.com/strangelove-ventures/interchaintest/v8/relayer/rly" + "github.com/strangelove-ventures/interchaintest/v9/ibc" + "github.com/strangelove-ventures/interchaintest/v9/relayer" + "github.com/strangelove-ventures/interchaintest/v9/relayer/hermes" + "github.com/strangelove-ventures/interchaintest/v9/relayer/hyperspace" + "github.com/strangelove-ventures/interchaintest/v9/relayer/rly" ) type TestName interface { diff --git a/tempdir_test.go b/tempdir_test.go index 491143ca6..aa36fb040 100644 --- a/tempdir_test.go +++ b/tempdir_test.go @@ -8,8 +8,8 @@ import ( "github.com/stretchr/testify/require" - "github.com/strangelove-ventures/interchaintest/v8" - "github.com/strangelove-ventures/interchaintest/v8/mocktesting" + "github.com/strangelove-ventures/interchaintest/v9" + "github.com/strangelove-ventures/interchaintest/v9/mocktesting" ) func TestTempDir_Cleanup(t *testing.T) { diff --git a/test_setup.go b/test_setup.go index eb4162ddd..2236f53e6 100644 --- a/test_setup.go +++ b/test_setup.go @@ -9,9 +9,9 @@ import ( "github.com/docker/docker/client" - "github.com/strangelove-ventures/interchaintest/v8/dockerutil" - "github.com/strangelove-ventures/interchaintest/v8/ibc" - "github.com/strangelove-ventures/interchaintest/v8/testreporter" + "github.com/strangelove-ventures/interchaintest/v9/dockerutil" + "github.com/strangelove-ventures/interchaintest/v9/ibc" + "github.com/strangelove-ventures/interchaintest/v9/testreporter" ) const ( diff --git a/test_user.go b/test_user.go index b7b56186f..5d8575757 100644 --- a/test_user.go +++ b/test_user.go @@ -10,9 +10,9 @@ import ( "cosmossdk.io/math" - "github.com/strangelove-ventures/interchaintest/v8/dockerutil" - "github.com/strangelove-ventures/interchaintest/v8/ibc" - "github.com/strangelove-ventures/interchaintest/v8/testutil" + "github.com/strangelove-ventures/interchaintest/v9/dockerutil" + "github.com/strangelove-ventures/interchaintest/v9/ibc" + "github.com/strangelove-ventures/interchaintest/v9/testutil" ) // GetAndFundTestUserWithMnemonic restores a user using the given mnemonic diff --git a/testreporter/messages_test.go b/testreporter/messages_test.go index fd7ce8c19..018d15d68 100644 --- a/testreporter/messages_test.go +++ b/testreporter/messages_test.go @@ -8,7 +8,7 @@ import ( "github.com/google/go-cmp/cmp" "github.com/stretchr/testify/require" - "github.com/strangelove-ventures/interchaintest/v8/testreporter" + "github.com/strangelove-ventures/interchaintest/v9/testreporter" ) func TestWrappedMessage_RoundTrip(t *testing.T) { diff --git a/testreporter/reporter_test.go b/testreporter/reporter_test.go index 7c30410f8..003fce5b6 100644 --- a/testreporter/reporter_test.go +++ b/testreporter/reporter_test.go @@ -10,8 +10,8 @@ import ( "github.com/google/go-cmp/cmp" "github.com/stretchr/testify/require" - "github.com/strangelove-ventures/interchaintest/v8/mocktesting" - "github.com/strangelove-ventures/interchaintest/v8/testreporter" + "github.com/strangelove-ventures/interchaintest/v9/mocktesting" + "github.com/strangelove-ventures/interchaintest/v9/testreporter" ) // nopCloser wraps an io.Writer to provide a Close method that always returns nil. diff --git a/testutil/poll_for_state.go b/testutil/poll_for_state.go index 167021005..1b5af21fa 100644 --- a/testutil/poll_for_state.go +++ b/testutil/poll_for_state.go @@ -8,7 +8,7 @@ import ( "github.com/davecgh/go-spew/spew" - "github.com/strangelove-ventures/interchaintest/v8/ibc" + "github.com/strangelove-ventures/interchaintest/v9/ibc" ) var ErrNotFound = errors.New("not found") diff --git a/testutil/poll_for_state_test.go b/testutil/poll_for_state_test.go index 15e3b154e..804eaa472 100644 --- a/testutil/poll_for_state_test.go +++ b/testutil/poll_for_state_test.go @@ -8,7 +8,7 @@ import ( "github.com/stretchr/testify/require" - "github.com/strangelove-ventures/interchaintest/v8/ibc" + "github.com/strangelove-ventures/interchaintest/v9/ibc" ) type mockChain struct { diff --git a/testutil/toml.go b/testutil/toml.go index 85228a825..87b4edea4 100644 --- a/testutil/toml.go +++ b/testutil/toml.go @@ -10,7 +10,7 @@ import ( "github.com/docker/docker/client" "go.uber.org/zap" - "github.com/strangelove-ventures/interchaintest/v8/dockerutil" + "github.com/strangelove-ventures/interchaintest/v9/dockerutil" ) // Toml is used for holding the decoded state of a toml config file. From 3c5671431b916d68292c5b82bd04df789092bb00 Mon Sep 17 00:00:00 2001 From: mmsqe Date: Fri, 24 Jan 2025 13:13:28 +0800 Subject: [PATCH 02/10] skip local --- go.work | 1 - local-interchain/.flake8 | 31 - local-interchain/.gitignore | 17 - local-interchain/Makefile | 40 - local-interchain/README.md | 178 -- local-interchain/bash/source.bash | 152 -- local-interchain/bash/test.bash | 88 - local-interchain/chains/README.md | 13 - local-interchain/chains/base.json | 76 - local-interchain/chains/base_ibc.json | 62 - local-interchain/chains/cosmoshub.json | 52 - local-interchain/chains/eth.json | 31 - local-interchain/chains/hub.yml | 33 - .../chains/interchainsecurity.json | 201 -- local-interchain/chains/juno_ibc.json | 91 - local-interchain/chains/osmosis.json | 33 - local-interchain/chains/stargaze.json | 52 - local-interchain/chains/state/README.md | 3 - ...s-and-eigenlayer-deployed-anvil-state.json | 1 - local-interchain/cmd/local-ic/chains.go | 61 - local-interchain/cmd/local-ic/interaction.go | 101 - local-interchain/cmd/local-ic/main.go | 31 - local-interchain/cmd/local-ic/new_chain.go | 128 -- local-interchain/cmd/local-ic/root.go | 77 - local-interchain/cmd/local-ic/start_chain.go | 137 -- .../contracts/cw_ibc_example.wasm | Bin 201305 -> 0 bytes local-interchain/docs/REST_API.md | 169 -- local-interchain/docs/WINDOWS.md | 113 - local-interchain/go.mod | 292 --- local-interchain/go.sum | 1938 ----------------- local-interchain/interchain/config.go | 232 -- local-interchain/interchain/faket.go | 60 - local-interchain/interchain/genesis.go | 86 - .../interchain/handlers/actions.go | 284 --- .../interchain/handlers/chain_registry.go | 33 - .../handlers/container_log_stream.go | 152 -- local-interchain/interchain/handlers/info.go | 231 -- .../interchain/handlers/log_stream.go | 164 -- local-interchain/interchain/handlers/types.go | 57 - .../interchain/handlers/uploader.go | 97 - local-interchain/interchain/ibc.go | 75 - local-interchain/interchain/logs.go | 92 - local-interchain/interchain/router/router.go | 126 -- local-interchain/interchain/start.go | 341 --- .../interchain/types/chain_builder.go | 203 -- local-interchain/interchain/types/chains.go | 74 - .../interchain/types/chains_test.go | 37 - local-interchain/interchain/types/genesis.go | 93 - local-interchain/interchain/types/types.go | 189 -- .../interchain/util/http_writer.go | 16 - local-interchain/interchain/util/replace.go | 40 - local-interchain/python/README.md | 16 - local-interchain/python/api_test.py | 122 -- local-interchain/python/daodao.py | 100 - local-interchain/python/helpers/__init__.py | 4 - local-interchain/python/helpers/cosmwasm.py | 294 --- .../python/helpers/example_req.bash | 52 - local-interchain/python/helpers/file_cache.py | 87 - local-interchain/python/helpers/relayer.py | 74 - local-interchain/python/helpers/testing.py | 17 - .../python/helpers/transactions.py | 178 -- local-interchain/python/ibc_contract.py | 134 -- local-interchain/python/requirements.txt | 1 - local-interchain/python/util_base.py | 40 - local-interchain/rust/.gitignore | 1 - local-interchain/rust/Cargo.lock | 1756 --------------- local-interchain/rust/Cargo.toml | 11 - local-interchain/rust/Makefile | 6 - local-interchain/rust/README.md | 215 -- local-interchain/rust/localic-std/Cargo.toml | 16 - local-interchain/rust/localic-std/Makefile | 6 - .../rust/localic-std/src/errors.rs | 43 - .../rust/localic-std/src/filesystem.rs | 25 - local-interchain/rust/localic-std/src/lib.rs | 10 - .../rust/localic-std/src/modules/bank.rs | 41 - .../rust/localic-std/src/modules/cosmwasm.rs | 325 --- .../rust/localic-std/src/modules/gov.rs | 9 - .../rust/localic-std/src/modules/mod.rs | 3 - local-interchain/rust/localic-std/src/node.rs | 196 -- .../rust/localic-std/src/polling.rs | 21 - .../rust/localic-std/src/relayer.rs | 166 -- .../rust/localic-std/src/transactions.rs | 385 ---- .../rust/localic-std/src/types.rs | 131 -- local-interchain/rust/main/Cargo.toml | 18 - local-interchain/rust/main/src/base.rs | 41 - local-interchain/rust/main/src/main.rs | 314 --- local-interchain/ts/README.md | 22 - local-interchain/ts/package-lock.json | 1134 ---------- local-interchain/ts/package.json | 13 - local-interchain/ts/src/driver.ts | 175 -- local-interchain/ts/src/index.ts | 195 -- local-interchain/ts/tsconfig.json | 108 - 92 files changed, 13389 deletions(-) delete mode 100644 local-interchain/.flake8 delete mode 100644 local-interchain/.gitignore delete mode 100644 local-interchain/Makefile delete mode 100644 local-interchain/README.md delete mode 100755 local-interchain/bash/source.bash delete mode 100755 local-interchain/bash/test.bash delete mode 100644 local-interchain/chains/README.md delete mode 100644 local-interchain/chains/base.json delete mode 100644 local-interchain/chains/base_ibc.json delete mode 100644 local-interchain/chains/cosmoshub.json delete mode 100644 local-interchain/chains/eth.json delete mode 100644 local-interchain/chains/hub.yml delete mode 100644 local-interchain/chains/interchainsecurity.json delete mode 100644 local-interchain/chains/juno_ibc.json delete mode 100644 local-interchain/chains/osmosis.json delete mode 100644 local-interchain/chains/stargaze.json delete mode 100644 local-interchain/chains/state/README.md delete mode 100644 local-interchain/chains/state/avs-and-eigenlayer-deployed-anvil-state.json delete mode 100644 local-interchain/cmd/local-ic/chains.go delete mode 100644 local-interchain/cmd/local-ic/interaction.go delete mode 100644 local-interchain/cmd/local-ic/main.go delete mode 100644 local-interchain/cmd/local-ic/new_chain.go delete mode 100644 local-interchain/cmd/local-ic/root.go delete mode 100644 local-interchain/cmd/local-ic/start_chain.go delete mode 100644 local-interchain/contracts/cw_ibc_example.wasm delete mode 100644 local-interchain/docs/REST_API.md delete mode 100644 local-interchain/docs/WINDOWS.md delete mode 100644 local-interchain/go.mod delete mode 100644 local-interchain/go.sum delete mode 100644 local-interchain/interchain/config.go delete mode 100644 local-interchain/interchain/faket.go delete mode 100644 local-interchain/interchain/genesis.go delete mode 100644 local-interchain/interchain/handlers/actions.go delete mode 100644 local-interchain/interchain/handlers/chain_registry.go delete mode 100644 local-interchain/interchain/handlers/container_log_stream.go delete mode 100644 local-interchain/interchain/handlers/info.go delete mode 100644 local-interchain/interchain/handlers/log_stream.go delete mode 100644 local-interchain/interchain/handlers/types.go delete mode 100644 local-interchain/interchain/handlers/uploader.go delete mode 100644 local-interchain/interchain/ibc.go delete mode 100644 local-interchain/interchain/logs.go delete mode 100644 local-interchain/interchain/router/router.go delete mode 100644 local-interchain/interchain/start.go delete mode 100644 local-interchain/interchain/types/chain_builder.go delete mode 100644 local-interchain/interchain/types/chains.go delete mode 100644 local-interchain/interchain/types/chains_test.go delete mode 100644 local-interchain/interchain/types/genesis.go delete mode 100644 local-interchain/interchain/types/types.go delete mode 100644 local-interchain/interchain/util/http_writer.go delete mode 100644 local-interchain/interchain/util/replace.go delete mode 100644 local-interchain/python/README.md delete mode 100644 local-interchain/python/api_test.py delete mode 100644 local-interchain/python/daodao.py delete mode 100644 local-interchain/python/helpers/__init__.py delete mode 100644 local-interchain/python/helpers/cosmwasm.py delete mode 100644 local-interchain/python/helpers/example_req.bash delete mode 100644 local-interchain/python/helpers/file_cache.py delete mode 100644 local-interchain/python/helpers/relayer.py delete mode 100644 local-interchain/python/helpers/testing.py delete mode 100644 local-interchain/python/helpers/transactions.py delete mode 100644 local-interchain/python/ibc_contract.py delete mode 100644 local-interchain/python/requirements.txt delete mode 100644 local-interchain/python/util_base.py delete mode 100644 local-interchain/rust/.gitignore delete mode 100644 local-interchain/rust/Cargo.lock delete mode 100644 local-interchain/rust/Cargo.toml delete mode 100644 local-interchain/rust/Makefile delete mode 100644 local-interchain/rust/README.md delete mode 100644 local-interchain/rust/localic-std/Cargo.toml delete mode 100644 local-interchain/rust/localic-std/Makefile delete mode 100644 local-interchain/rust/localic-std/src/errors.rs delete mode 100644 local-interchain/rust/localic-std/src/filesystem.rs delete mode 100644 local-interchain/rust/localic-std/src/lib.rs delete mode 100644 local-interchain/rust/localic-std/src/modules/bank.rs delete mode 100644 local-interchain/rust/localic-std/src/modules/cosmwasm.rs delete mode 100644 local-interchain/rust/localic-std/src/modules/gov.rs delete mode 100644 local-interchain/rust/localic-std/src/modules/mod.rs delete mode 100644 local-interchain/rust/localic-std/src/node.rs delete mode 100644 local-interchain/rust/localic-std/src/polling.rs delete mode 100644 local-interchain/rust/localic-std/src/relayer.rs delete mode 100644 local-interchain/rust/localic-std/src/transactions.rs delete mode 100644 local-interchain/rust/localic-std/src/types.rs delete mode 100644 local-interchain/rust/main/Cargo.toml delete mode 100644 local-interchain/rust/main/src/base.rs delete mode 100644 local-interchain/rust/main/src/main.rs delete mode 100644 local-interchain/ts/README.md delete mode 100644 local-interchain/ts/package-lock.json delete mode 100644 local-interchain/ts/package.json delete mode 100644 local-interchain/ts/src/driver.ts delete mode 100644 local-interchain/ts/src/index.ts delete mode 100644 local-interchain/ts/tsconfig.json diff --git a/go.work b/go.work index e287e89be..7788d637a 100644 --- a/go.work +++ b/go.work @@ -4,5 +4,4 @@ toolchain go1.23.0 use ( . - ./local-interchain ) diff --git a/local-interchain/.flake8 b/local-interchain/.flake8 deleted file mode 100644 index aaa9d78ea..000000000 --- a/local-interchain/.flake8 +++ /dev/null @@ -1,31 +0,0 @@ -[flake8] - -plugins = - flake8-simplify - flake8-bandit - flake8-bugbear - flake8-builtins - flake8-comprehensions - flake8-eradicate - flake8-isort - flake8-pytest-style - flakehell - pep8-naming - -spellcheck-targets=comments - -extend-ignore = - E501 - ; docstrings - D - ; try pass - S110 - ; dict(k=v) - C408 - -exclude = - .git, - __pycache__, - .mypy_cache - -max-complexity = 10 \ No newline at end of file diff --git a/local-interchain/.gitignore b/local-interchain/.gitignore deleted file mode 100644 index 3b5fe7ae7..000000000 --- a/local-interchain/.gitignore +++ /dev/null @@ -1,17 +0,0 @@ -bin/ - -dist/ - -chains/*_ignored.json -chains/*_ignore.json - -configs/logs.json -configs/contracts.json - -contracts/*.wasm -!contracts/cw_ibc_example.wasm - - -__pycache__/ - -node_modules/ \ No newline at end of file diff --git a/local-interchain/Makefile b/local-interchain/Makefile deleted file mode 100644 index 841ece774..000000000 --- a/local-interchain/Makefile +++ /dev/null @@ -1,40 +0,0 @@ -#!/usr/bin/make -f - -CWD := $(dir $(abspath $(firstword $(MAKEFILE_LIST)))) -COMMIT := $(shell git log -1 --format='%H') - -# don't override user values -ifeq (,$(VERSION)) - VERSION := $(shell git describe --tags --always) - ifeq (,$(VERSION)) - HEAD := $(shell git rev-parse --abbrev-ref HEAD) - VERSION := $(HEAD)-$(COMMIT) - endif -endif - -# if env IGNORE_STATIC_LINK=true, then only set the main version in ldflags -# required so releasing the binary does not set the main directory incorrectly -# - -# Stripping the debug info with -s -w fixes this so the binary -# is properly signed (MacOS sequoia + XCode 16 causes the binary to instantly die) -# ref: https://github.com/rollchains/spawn/issues/248 -ldflags = -X main.MakeFileInstallDirectory=$(CWD) -X main.Version=$(VERSION) -s -w -ifeq ($(IGNORE_STATIC_LINK),true) - ldflags = -X main.Version=$(VERSION) -endif - -ldflags := $(strip $(ldflags)) -BUILD_FLAGS := -ldflags '$(ldflags)' - -.PHONY: build -build: - go build $(BUILD_FLAGS) -o ../bin/local-ic ./cmd/local-ic - -.PHONY: run -run: - go run ./cmd/local-ic $(filter-out $@,$(MAKECMDGOALS)) - -.PHONY: install -install: - go install $(BUILD_FLAGS) ./cmd/local-ic ./interchain - diff --git a/local-interchain/README.md b/local-interchain/README.md deleted file mode 100644 index 7fcb8eea5..000000000 --- a/local-interchain/README.md +++ /dev/null @@ -1,178 +0,0 @@ -# Local Interchain - -A simple way to config and run IBC local chain testing environments with any language of choice for interaction. - -- [**Rust**](./rust/README.md) -- [**Typescript**](./ts/README.md) -- [**Python**](./python/README.md) - -## External Repository CI - -- [**Rust**](./rust/README.md) - -## Installing Locally - -**Install on Mac / Linux** - -```bash -git clone https://github.com/strangelove-ventures/interchaintest.git - -cd interchaintest/local-interchain - -# NOTE: your binary will link back to this location of where you install. -# If you rename the folder or move it, you need to `make install` the binary again. -make install -``` - -**Install on Windows** - -Follow [this guide](./docs/WINDOWS.md) to setup the Windows OS environment for installing Local Interchain. - -## Running - -- Copy: `cp ./chains/base_ibc.json ./chains/mytest1_ignored.json` -- Run: `local-ic start mytest1_ignored.json [flags]` -- Run in different directory: `ICTEST_HOME=/root/local-interchain local-ic start myother_ignored.json [flags]` - -**NOTE** The ICTEST_HOME path must contain the directories `chains` to be valid. - -*(Default: `make install` links to the cloned directory. `go install .` will use your home directory ~/local-interchain)* - -*(Ending the config file with `_ignored.json` or `_ignore.json` will ignore it from git)* - -### Optional Start Flags - - --api-address string override the default API address (default "127.0.0.1") - --api-port uint16 override the default API port (default 8080) - --auth-key string require an auth key to use the internal API - --help - --relayer-image string override the docker relayer image (default "ghcr.io/cosmos/relayer") - --relayer-startup-flags string override the default relayer startup flags (default "--block-history=100") - --relayer-uidgid string override the default image UID:GID (default "100:1000") - --relayer-version string override the default relayer version (default "latest") - ---- - -## REST API - -A rest API can be found at `curl 127.0.0.1:8080/` by default. Other actions can take place here such as file uploads, actions, querying chain config information, and more! - -Read more about the API [here](./docs/REST_API.md) - -## Helpful Tips - -- Auto complete: edit ~/.bashrc or ~/.zshrc and add `source <(local-ic completion bash)` or `source <(local-ic completion zsh)`. - (fish & windows powershell is also supported) - -- After starting the chain(s), you can read the `./configs/logs.json` file to get useful information. This includes the chain's id, name, RPC address, and more. - -```json -// ./configs/logs.json -[ - { - "chain_id": "exampleid-1", - "chain_name": "example", - "rpc_address": "http://127.0.0.1:38829", - "grpc_address": "127.0.0.1:34917", - "ibc_paths": [] - } -] -``` - -- 'ibc-path' should only be set if you are using 2+ chains. If you are using 1 chain, you can leave it blank. - -- You can use `%DENOM%` anywhere in the chain's config to use the `denom` line. This is useful for gas prices, Genesis accounts, etc. - -- Configuration's have set defaults. The minimum you need to run a single chain is the following - -```json -{ - "name": "juno", - "chain_id": "localjuno-2", - "denom": "ujuno", - "docker_image": { - "version": "v14.1.0" - }, - "gas_prices": "0%DENOM%", - "gas_adjustment": 2.0 -} -``` - ---- - -## Base Chain Template - -Here is a base chain template with every feature the configuration accepts. Accounts have extra data to make it simpler for scripting and read from the file directly. - -```json -{ - "name": "juno", - "chain_id": "localjuno-1", - "denom": "ujuno", - "binary": "junod", - "bech32_prefix": "juno", - "docker_image": { - "repository": "ghcr.io/cosmoscontracts/juno-e2e", - "version": "v14.1.0", - "uid_gid": "1000:1000" - }, - "chain_type": "cosmos", - "coin_type": 118, - "trusting_period": "112h", - "gas_prices": "0%DENOM%", - "gas_adjustment": 2.0, - "number_vals": 1, - "number_node": 0, - "ibc_paths": ["juno-ibc-1"], - "debugging": true, - "block_time": "500ms", - "host_port_override": { - "26656": "26656", - "26657": "26657", - "1317": "1317", - "9090": "9090" - }, - "additional_start_args": [ - "--keyring-backend","test" - ], - "env": [ - "ETH_RPC_URL=https://sepolia.infura.io/v3/key" - ], - "config_file_overrides": [ - { - "file": "config/config.toml", - "paths": { - "rpc.cors_allowed_origins": ["*"], - "rpc.mempool": ["nop"], - "moniker": "myNodeMoniker", - } - } - ], - "genesis": { - "modify": [ - { - "key": "app_state.gov.voting_params.voting_period", - "value": "15s" - }, - { - "key": "app_state.gov.deposit_params.max_deposit_period", - "value": "15s" - }, - { - "key": "app_state.gov.deposit_params.min_deposit.0.denom", - "value": "ujuno" - } - ], - "accounts": [ - { - "name": "acc0", - "address": "juno1efd63aw40lxf3n4mhf7dzhjkr453axurv2zdzk", - "amount": "10000000%DENOM%", - "mnemonic": "decorate bright ozone fork gallery riot bus exhaust worth way bone indoor calm squirrel merry zero scheme cotton until shop any excess stage laundry" - } - ] - } -}, -``` - -**NOTE** The `host_port_override` section maps internal ports to the external host. If no ports are overridden, random host ports are assigned as usual. diff --git a/local-interchain/bash/source.bash b/local-interchain/bash/source.bash deleted file mode 100755 index e0ad4dca6..000000000 --- a/local-interchain/bash/source.bash +++ /dev/null @@ -1,152 +0,0 @@ -# IMPORT ME WITH: source <(curl -s https://raw.githubusercontent.com/strangelove-ventures/interchaintest/main/local-interchain/bash/source.bash) - -# exitIfEmpty "$someKey" someKey -function ICT_exitIfEmpty() { - if [ -z "$1" ]; then - echo "Exiting because ${2} is empty" - exit 1 - fi -} - -# === BASE === - -# ICT_MAKE_REQUEST http://127.0.0.1:8080 localjuno-1 "q" "bank total" -ICT_MAKE_REQUEST() { - local API=$1 CHAIN_ID=$2 ACTION=$3 - shift 3 # get the 4th argument and up as the command - local COMMAND="$*" - - DATA=`printf '{"chain_id":"%s","action":"%s","cmd":"MYCOMMAND"}' $CHAIN_ID $ACTION` - DATA=`echo $DATA | sed "s/MYCOMMAND/$COMMAND/g"` - - curl "$API" -ss --no-progress-meter --header "Content-Type: application/json" -X POST -d "$DATA" -} - -# ICT_QUERY "http://localhost:8080" "localjuno-1" "bank balances juno10r39fueph9fq7a6lgswu4zdsg8t3gxlq670lt0" -ICT_QUERY() { - local API=$1 CHAIN_ID=$2 CMD=$3 # can be multiple words - ICT_MAKE_REQUEST "$API" $CHAIN_ID "q" "$CMD" -} - -# ICT_BIN "http://localhost:8080" "localjuno-1" "decode" -ICT_BIN() { - local API=$1 CHAIN_ID=$2 CMD=$3 # can be multiple words - ICT_MAKE_REQUEST "$API" $CHAIN_ID "bin" "$CMD" -} - -# ICT_SH_EXEC "http://localhost:8080" "localjuno-1" "ls -l" -# NOTE: if using a /, make sure to escape it with \ -ICT_SH_EXEC() { - local API=$1 CHAIN_ID=$2 CMD=$3 # can be multiple words - ICT_MAKE_REQUEST "$API" $CHAIN_ID "exec" "$CMD" -} - -# === RELAYER === - -# ICT_RELAYER_STOP http://127.0.0.1 "localjuno-1" -ICT_RELAYER_STOP() { - local API=$1 CHAIN_ID=$2 - - # TODO: how does this function? - ICT_MAKE_REQUEST $API $CHAIN_ID "stop-relayer" "" -} - -# ICT_RELAYER_START http://127.0.0.1 "localjuno-1" "demo-path2 --max-tx-size 10" -ICT_RELAYER_START() { - local API=$1 CHAIN_ID=$2 CMD=$3 - - ICT_MAKE_REQUEST $API $CHAIN_ID "start-relayer" "$CMD" -} - -# RELAYER_EXEC http://127.0.0.1:8080 "localjuno-1" "rly paths list" -ICT_RELAYER_EXEC() { - local API=$1 CHAIN_ID=$2 - shift 2 # get the 3rd argument and up as the command - local CMD="$*" - - ICT_MAKE_REQUEST $API $CHAIN_ID "relayer-exec" "$CMD" -} - -# RELAYER_CHANNELS http://127.0.0.1:8080 "localjuno-1" -ICT_RELAYER_CHANNELS() { - local API=$1 CHAIN_ID=$2 - - ICT_MAKE_REQUEST $API $CHAIN_ID "get_channels" "" -} - -# === COSMWASM === - -# ICT_WASM_DUMP_CONTRACT_STATE "http://localhost:8080" "localjuno-1" "cosmos1contractaddress" "100" -ICT_WASM_DUMP_CONTRACT_STATE() { - local API=$1 CHAIN_ID=$2 CONTRACT=$3 HEIGHT=$4 - - ICT_MAKE_REQUEST $API $CHAIN_ID "recover-key" "contract=$CONTRACT;height=$HEIGHT" -} - -# ICT_WASM_STORE_FILE "http://localhost:8080" "localjuno-1" "/host/absolute/path.wasm" "keyName" -# returns the code_id of the uploaded contract -ICT_WASM_STORE_FILE() { - local API=$1 CHAIN_ID=$2 FILE=$3 KEYNAME=$4 - - DATA=`printf '{"chain_id":"%s","file_path":"%s","key_name":"%s"}' $CHAIN_ID $FILE $KEYNAME` - curl "$API/upload" --header "Content-Type: application/json" --header "Upload-Type: cosmwasm" -X POST -d "$DATA" -} - -# === OTHER === - -# ICT_POLL_FOR_START "http://localhost:8080" 50 -ICT_POLL_FOR_START() { - local API=$1 ATTEMPTS_MAX=$2 - - curl --head -X GET --retry $ATTEMPTS_MAX --retry-connrefused --retry-delay 3 $API -} - -# ICT_KILL_ALL "http://localhost:8080" "localjuno-1" -# (Kills all running, keeps local-ic process. `killall local-ic` to kill that as well) -ICT_KILL_ALL() { - local API=$1 CHAIN_ID=$2 - ICT_MAKE_REQUEST $API $CHAIN_ID "kill-all" "" -} - -# ICT_GET_PEER "http://localhost:8080" "localjuno-1" -ICT_GET_PEER() { - local API=$1 CHAIN_ID=$2 - - if [[ $API != */info ]]; then - API="$API/info" - fi - - curl -G -d "chain_id=$CHAIN_ID" -d "request=peer" $API -} - -# ICT_FAUCET_REQUEST "http://localhost:8080" "localjuno-1" "1000000000ujuno" "juno1qk7zqy3k2v3jx2zq2z2zq2zq2zq2zq2zq2zq" -ICT_FAUCET_REQUEST() { - local API=$1 CHAIN_ID=$2 AMOUNT=$3 ADDRESS=$4 - ICT_MAKE_REQUEST $API $CHAIN_ID "faucet" "amount=$AMOUNT;address=$ADDRESS" -} - -# ICT_ADD_FULL_NODE http://127.0.0.1:8080 "localjuno-1" "1" -ICT_ADD_FULL_NODE() { - local API=$1 CHAIN_ID=$2 AMOUNT=$3 - - ICT_MAKE_REQUEST $API $CHAIN_ID "add-full-nodes" "amount=$AMOUNT" -} - -# ICT_RECOVER_KEY "http://localhost:8080" "localjuno-1" "mykey" "my mnemonic string here" -ICT_RECOVER_KEY() { - local API=$1 CHAIN_ID=$2 KEYNAME=$3 - shift 3 # get the 4th argument and up as the command - local MNEMONIC="$*" - - ICT_MAKE_REQUEST $API $CHAIN_ID "recover-key" "keyname=$KEYNAME;mnemonic=$MNEMONIC" -} - -# ICT_STORE_FILE "http://localhost:8080" "localjuno-1" "/host/absolute/path" -# Uploads any arbitrary host file to the chain node. -ICT_STORE_FILE() { - local API=$1 CHAIN_ID=$2 FILE=$3 - - DATA=`printf '{"chain_id":"%s","file_path":"%s"}' $CHAIN_ID $FILE` - curl "$API/upload" --header "Content-Type: application/json" -X POST -d "$DATA" -} - diff --git a/local-interchain/bash/test.bash b/local-interchain/bash/test.bash deleted file mode 100755 index 85a44784a..000000000 --- a/local-interchain/bash/test.bash +++ /dev/null @@ -1,88 +0,0 @@ -#!/bin/bash -# local-ic start juno_ibc -# -# bash local-interchain/bash/test.bash - -# exits if any command is non 0 status -set -e - -thisDir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )" -# EXTERNAL: source <(curl -s https://raw.githubusercontent.com/strangelove-ventures/interchaintest/main/local-interchain/bash/source.bash) -source "$thisDir/source.bash" -API_ADDR="http://localhost:8080" - -# === BEGIN TESTS === - -ICT_POLL_FOR_START $API_ADDR 50 - -# Set standard interaction defaults -ICT_BIN "$API_ADDR" "localjuno-1" "config keyring-backend test" -ICT_BIN "$API_ADDR" "localjuno-1" "config output json" - -# Get total bank supply -BANK_TOTAL=`ICT_QUERY $API_ADDR "localjuno-1" "bank total"` && echo "BANK_TOTAL: $BANK_TOTAL" -ICT_exitIfEmpty "$BANK_TOTAL" "BANK_TOTAL" -echo $BANK_TOTAL | jq -r '.supply' - -# Get total bank supply another way (directly) -BANK_TOTAL=`ICT_MAKE_REQUEST $API_ADDR "localjuno-1" "q" "bank total"` && echo "BANK_TOTAL: $BANK_TOTAL" -ICT_exitIfEmpty "$BANK_TOTAL" "BANK_TOTAL" -echo $BANK_TOTAL | jq -r '.supply' - -# faucet to user -FAUCET_RES=`ICT_FAUCET_REQUEST "$API_ADDR" "localjuno-1" "7" "juno10r39fueph9fq7a6lgswu4zdsg8t3gxlq670lt0"` && echo "FAUCET_RES: $FAUCET_RES" -FAUCET_CONFIRM=`ICT_QUERY $API_ADDR "localjuno-1" "bank balances juno10r39fueph9fq7a6lgswu4zdsg8t3gxlq670lt0"` && echo "FAUCET_CONFIRM: $FAUCET_CONFIRM" -ICT_exitIfEmpty "$FAUCET_CONFIRM" "FAUCET_CONFIRM" - -if [ $(echo $FAUCET_CONFIRM | jq -r '.balances[0].amount') -lt 7 ]; then - echo "FAUCET_CONFIRM is less than 7" - exit 1 -fi - -# CosmWasm - Upload source file to chain & store -parent_dir=$(dirname $thisDir) # local-interchain folder -contract_source="$parent_dir/contracts/cw_ibc_example.wasm" -CODE_ID_JSON=`ICT_WASM_STORE_FILE $API_ADDR "localjuno-1" "$contract_source" "acc0"` && echo "CODE_ID_JSON: $CODE_ID_JSON" -CODE_ID=`echo $CODE_ID_JSON | jq -r '.code_id'` && echo "CODE_ID: $CODE_ID" -ICT_exitIfEmpty "$CODE_ID" "CODE_ID" - -# Upload random file -FILE_RESP=`ICT_STORE_FILE $API_ADDR "localjuno-1" "$thisDir/test.bash"` && echo "FILE_RESP: $FILE_RESP" -FILE_LOCATION=`echo $FILE_RESP | jq -r '.location'` && echo "FILE_LOCATION: $FILE_LOCATION" -ICT_exitIfEmpty "$FILE_LOCATION" "FILE_LOCATION" - -# Verify file contents are there -FILE_LOCATION_ESC=$(echo $FILE_LOCATION | sed 's/\//\\\//g') -MISC_BASH_CMD=`ICT_SH_EXEC "$API_ADDR" "localjuno-1" "cat $FILE_LOCATION_ESC"` && echo "MISC_BASH_CMD: $MISC_BASH_CMD" -ICT_exitIfEmpty "$MISC_BASH_CMD" "MISC_BASH_CMD" - -PEER=`ICT_GET_PEER $API_ADDR "localjuno-1"` && echo "PEER: $PEER" -ICT_exitIfEmpty "$PEER" "PEER" - -# RELAYER -CHANNELS=`ICT_RELAYER_CHANNELS $API_ADDR "localjuno-1"` && echo "CHANNELS: $CHANNELS" -ICT_exitIfEmpty "$CHANNELS" "CHANNELS" - -ICT_RELAYER_EXEC $API_ADDR "localjuno-1" "rly paths list" -ICT_RELAYER_EXEC $API_ADDR "localjuno-1" "rly chains list" -RLY_BALANCE=`ICT_RELAYER_EXEC $API_ADDR "localjuno-1" "rly q balance localjuno-1 --output=json"` && echo "RLY_BALANCE: $RLY_BALANCE" -ICT_exitIfEmpty "$RLY_BALANCE" "RLY_BALANCE" -echo $RLY_BALANCE | jq -r '.balance' - - -# Recover a key and validate -COSMOS_KEY_STATUS=`ICT_RECOVER_KEY $API_ADDR "localjuno-1" "mynewkey" "abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon art"` && echo "COSMOS_KEY_STATUS: $COSMOS_KEY_STATUS" - -COSMOS_KEY_ADDRESS=`ICT_BIN "$API_ADDR" "localjuno-1" "keys show mynewkey -a"` && echo "COSMOS_KEY_ADDRESS: $COSMOS_KEY_ADDRESS" -ICT_exitIfEmpty "$COSMOS_KEY_ADDRESS" "COSMOS_KEY_ADDRESS" - -FULL_NODE_ADDED=`ICT_ADD_FULL_NODE $API_ADDR "localjuno-1" "1"` -ICT_exitIfEmpty "$FULL_NODE_ADDED" "FULL_NODE_ADDED" - -# Stop the relayer -ICT_RELAYER_STOP $API_ADDR "localjuno-1" - -# Kills all containers, not the local-ic process. Use `killall local-ic` to kill that as well -ICT_KILL_ALL $API_ADDR "localjuno-1" - -exit 0 diff --git a/local-interchain/chains/README.md b/local-interchain/chains/README.md deleted file mode 100644 index 6feb25125..000000000 --- a/local-interchain/chains/README.md +++ /dev/null @@ -1,13 +0,0 @@ -# Chains Examples - -## interchainsecurity & neutron - -Current the neutron heighliner image does not work due to some /tmp issue in the docker image. For this reason, you must compile the image yourself to use the latest v50 instance. - -```bash -git clone https://github.com/neutron-org/neutron.git --depth 1 --branch v4.2.1 -cd neutron - -# neutron-node:latest -make build-e2e-docker-image -``` diff --git a/local-interchain/chains/base.json b/local-interchain/chains/base.json deleted file mode 100644 index d9c419977..000000000 --- a/local-interchain/chains/base.json +++ /dev/null @@ -1,76 +0,0 @@ -{ - "chains": [ - { - "name": "juno", - "chain_id": "localjuno-1", - "denom": "ujuno", - "binary": "junod", - "bech32_prefix": "juno", - "docker_image": { - "repository": "ghcr.io/cosmoscontracts/juno", - "version": "v17.0.0", - "uid-gid": "1000:1000" - }, - "gas_prices": "0%DENOM%", - "chain_type": "cosmos", - "coin_type": 118, - "trusting_period": "112h", - "gas_adjustment": 2.0, - "number_vals": 2, - "number_node": 0, - "debugging": true, - "block_time": "5000ms", - "host_port_override": { - "26657": "26657", - "1317": "1317", - "9090": "9090" - }, - "config_file_overrides": [ - { - "file": "config/config.toml", - "paths": { - "moniker": "localic", - "rpc.cors_allowed_origins": ["*"] - } - } - ], - "genesis": { - "modify": [ - { - "key": "app_state.gov.params.voting_period", - "value": "15s" - }, - { - "key": "app_state.gov.params.max_deposit_period", - "value": "15s" - }, - { - "key": "app_state.gov.params.min_deposit.0.denom", - "value": "ujuno" - }, - { - "key": "app_state.gov.params.min_deposit.0.amount", - "value": "1" - } - ], - "accounts": [ - { - "name": "acc0", - "address": "juno1hj5fveer5cjtn4wd6wstzugjfdxzl0xps73ftl", - "amount": "10000000000%DENOM%", - "mnemonic": "decorate bright ozone fork gallery riot bus exhaust worth way bone indoor calm squirrel merry zero scheme cotton until shop any excess stage laundry" - }, - { - "name": "acc1", - "address": "juno1efd63aw40lxf3n4mhf7dzhjkr453axurv2zdzk", - "amount": "10000000000%DENOM%", - "mnemonic": "wealth flavor believe regret funny network recall kiss grape useless pepper cram hint member few certain unveil rather brick bargain curious require crowd raise" - } - ], - "startup_commands": [ - "%BIN% keys add example-key-after --keyring-backend test --home %HOME%" - ] - } - } - ] -} \ No newline at end of file diff --git a/local-interchain/chains/base_ibc.json b/local-interchain/chains/base_ibc.json deleted file mode 100644 index f88dfb2d1..000000000 --- a/local-interchain/chains/base_ibc.json +++ /dev/null @@ -1,62 +0,0 @@ -{ - "chains": [ - { - "name": "gaia", - "chain_id": "localcosmos-1", - "denom": "uatom", - "binary": "gaiad", - "bech32_prefix": "cosmos", - "docker_image": { - "version": "v9.1.0" - }, - "host_port_override": { - "26657": "26657", - "1317": "1317", - "9090": "9090" - }, - "block_time": "2s", - "gas_prices": "0%DENOM%", - "gas_adjustment": 2.0, - "ibc_paths": ["atom-juno", "atom-terra"], - "genesis": { - "accounts": [ - { - "name": "acc0", - "address": "cosmos1hj5fveer5cjtn4wd6wstzugjfdxzl0xpxvjjvr", - "amount": "10000000%DENOM%", - "mnemonic": "decorate bright ozone fork gallery riot bus exhaust worth way bone indoor calm squirrel merry zero scheme cotton until shop any excess stage laundry" - } - ] - } - }, - { - "name": "juno", - "chain_id": "localjuno-1", - "binary": "junod", - "bech32_prefix": "juno", - "denom": "ujuno", - "docker_image": { - "repository": "ghcr.io/cosmoscontracts/juno", - "version": "v17.0.0" - }, - "block_time": "2s", - "gas_prices": "0%DENOM%", - "gas_adjustment": 2.0, - "ibc_paths": ["atom-juno", "juno-terra"] - }, - { - "name": "terra", - "chain_id": "localterra-1", - "binary": "terrad", - "bech32_prefix": "terra", - "denom": "uluna", - "docker_image": { - "version": "v2.3.4" - }, - "block_time": "2s", - "gas_prices": "0%DENOM%", - "gas_adjustment": 2.0, - "ibc_paths": ["atom-terra", "juno-terra"] - } - ] -} \ No newline at end of file diff --git a/local-interchain/chains/cosmoshub.json b/local-interchain/chains/cosmoshub.json deleted file mode 100644 index f12b337ab..000000000 --- a/local-interchain/chains/cosmoshub.json +++ /dev/null @@ -1,52 +0,0 @@ -{ - "chains": [ - { - "name": "gaia", - "chain_id": "localcosmos-1", - "denom": "uatom", - "binary": "gaiad", - "bech32_prefix": "cosmos", - "docker_image": { - "version": "v16.0.0" - }, - "gas_prices": "0%DENOM%", - "chain_type": "cosmos", - "coin_type": 118, - "trusting_period": "112h", - "gas_adjustment": 2.0, - "number_vals": 1, - "number_node": 0, - "debugging": true, - "block_time": "500ms", - "host_port_override": { - "26657": "26657", - "1317": "1317", - "9090": "9090" - }, - "genesis": { - "modify": [ - { - "key": "app_state.gov.params.voting_period", - "value": "15s" - }, - { - "key": "app_state.gov.params.max_deposit_period", - "value": "15s" - }, - { - "key": "app_state.gov.params.min_deposit.0.denom", - "value": "uatom" - } - ], - "accounts": [ - { - "name": "acc0", - "address": "cosmos1hj5fveer5cjtn4wd6wstzugjfdxzl0xpxvjjvr", - "amount": "10000000000%DENOM%", - "mnemonic": "decorate bright ozone fork gallery riot bus exhaust worth way bone indoor calm squirrel merry zero scheme cotton until shop any excess stage laundry" - } - ] - } - } - ] -} \ No newline at end of file diff --git a/local-interchain/chains/eth.json b/local-interchain/chains/eth.json deleted file mode 100644 index 1585c865a..000000000 --- a/local-interchain/chains/eth.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "chains": [ - { - "name": "ethereum", - "chain_id": "31337", - "denom": "wei", - "binary": "anvil", - "bech32_prefix": "0x", - "docker_image": { - "repository": "ghcr.io/foundry-rs/foundry", - "version": "latest" - }, - "gas_prices": "0", - "chain_type": "ethereum", - "coin_type": 60, - "trusting_period": "0", - "gas_adjustment": 0, - "debugging": true, - "host_port_override": { - "8545": "8545" - }, - "config_file_overrides": [ - { - "paths": { - "--load-state": "chains/state/avs-and-eigenlayer-deployed-anvil-state.json" - } - } - ] - } - ] -} \ No newline at end of file diff --git a/local-interchain/chains/hub.yml b/local-interchain/chains/hub.yml deleted file mode 100644 index 8587fd593..000000000 --- a/local-interchain/chains/hub.yml +++ /dev/null @@ -1,33 +0,0 @@ ---- -chains: -- name: gaia - chain_id: localcosmos-1 - denom: uatom - binary: gaiad - bech32_prefix: cosmos - docker_image: - version: v10.0.1 - gas_prices: 0%DENOM% - chain_type: cosmos - coin_type: 118 - trusting_period: 112h - gas_adjustment: 2 - number_vals: 1 - number_node: 0 - debugging: true - block_time: 500ms - genesis: - modify: - - key: app_state.gov.voting_params.voting_period - value: 15s - - key: app_state.gov.deposit_params.max_deposit_period - value: 15s - - key: app_state.gov.deposit_params.min_deposit.0.denom - value: uatom - accounts: - - name: acc0 - address: cosmos1hj5fveer5cjtn4wd6wstzugjfdxzl0xpxvjjvr - amount: 10000000000%DENOM% - mnemonic: decorate bright ozone fork gallery riot bus exhaust worth way bone - indoor calm squirrel merry zero scheme cotton until shop any excess stage - laundry diff --git a/local-interchain/chains/interchainsecurity.json b/local-interchain/chains/interchainsecurity.json deleted file mode 100644 index e5463c064..000000000 --- a/local-interchain/chains/interchainsecurity.json +++ /dev/null @@ -1,201 +0,0 @@ -{ - "chains": [ - { - "name": "gaia", - "chain_id": "localcosmos-1", - "denom": "uatom", - "binary": "gaiad", - "bech32_prefix": "cosmos", - "docker_image": { - "version": "v15.0.0-rc2" - }, - "gas_prices": "0%DENOM%", - "chain_type": "cosmos", - "coin_type": 118, - "trusting_period": "336h", - "gas_adjustment": 1.3, - "number_vals": 1, - "number_node": 0, - "debugging": true, - "block_time": "1s", - "genesis": { - "modify": [ - { - "key": "app_state.gov.params.voting_period", - "value": "3s" - }, - { - "key": "app_state.interchainaccounts.host_genesis_state.params.allow_messages", - "value": [ - "/cosmos.bank.v1beta1.MsgSend", - "/cosmos.bank.v1beta1.MsgMultiSend", - "/cosmos.staking.v1beta1.MsgDelegate", - "/cosmos.staking.v1beta1.MsgUndelegate", - "/cosmos.staking.v1beta1.MsgBeginRedelegate", - "/cosmos.staking.v1beta1.MsgRedeemTokensforShares", - "/cosmos.staking.v1beta1.MsgTokenizeShares", - "/cosmos.distribution.v1beta1.MsgWithdrawDelegatorReward", - "/cosmos.distribution.v1beta1.MsgSetWithdrawAddress", - "/ibc.applications.transfer.v1.MsgTransfer" - ] - } - ], - "accounts": [ - { - "name": "acc0", - "address": "cosmos1hj5fveer5cjtn4wd6wstzugjfdxzl0xpxvjjvr", - "amount": "10000000000%DENOM%", - "mnemonic": "decorate bright ozone fork gallery riot bus exhaust worth way bone indoor calm squirrel merry zero scheme cotton until shop any excess stage laundry" - } - ] - } - }, - { - "name": "ics-consumer", - "chain_id": "localstride-1", - "denom": "ustrd", - "binary": "strided", - "bech32_prefix": "stride", - "docker_image": { - "version": "v23.0.0", - "repository": "ghcr.io/strangelove-ventures/heighliner/stride" - }, - "gas_prices": "0.0ustride,0.0uatom", - "chain_type": "cosmos", - "coin_type": 118, - "trusting_period": "336h", - "gas_adjustment": 1.3, - "number_vals": 1, - "number_node": 0, - "ics_consumer_link": "localcosmos-1", - "debugging": true, - "block_time": "1s", - "genesis": { - "modify": [ - { - "key": "consensus_params.block.max_gas", - "value": "100000000" - }, - { - "key": "app_state.ccvconsumer.params.soft_opt_out_threshold", - "value": "0.05" - }, - { - "key": "app_state.ccvconsumer.params.reward_denoms", - "value": [ - "ustrd" - ] - }, - { - "key": "app_state.ccvconsumer.params.provider_reward_denoms", - "value": [ - "uatom" - ] - } - ], - "accounts": [ - { - "name": "acc0", - "address": "stride1hj5fveer5cjtn4wd6wstzugjfdxzl0xp98jwc0", - "amount": "10000000000%DENOM%", - "mnemonic": "decorate bright ozone fork gallery riot bus exhaust worth way bone indoor calm squirrel merry zero scheme cotton until shop any excess stage laundry" - } - ] - } - }, - { - "name": "ics-consumer", - "chain_id": "localneutron-1", - "denom": "untrn", - "binary": "neutrond", - "bech32_prefix": "neutron", - "docker_image": { - "version": "latest", - "repository": "neutron-node" - }, - "ics_version_override": { - "provider": "v3.3.x", - "consumer": "v4.x" - }, - "gas_prices": "0.025untrn,0.0uatom", - "chain_type": "cosmos", - "coin_type": 118, - "trusting_period": "336h", - "gas_adjustment": 1.3, - "number_vals": 1, - "number_node": 0, - "ics_consumer_link": "localcosmos-1", - "debugging": true, - "block_time": "1s", - "genesis": { - "modify": [ - { - "key": "consensus.params.block.max_gas", - "value": "100000000" - }, - { - "key": "app_state.ccvconsumer.params.reward_denoms", - "value": [ - "untrn" - ] - }, - { - "key": "app_state.ccvconsumer.params.provider_reward_denoms", - "value": [ - "uatom" - ] - }, - { - "key": "app_state.globalfee.params.minimum_gas_prices", - "value": [ - { - "denom": "untrn", - "amount": "0" - } - ] - }, - { - "key": "app_state.feemarket.params.enabled", - "value": false - }, - { - "key": "app_state.feeburner.params.treasury_address", - "value": "neutron1hj5fveer5cjtn4wd6wstzugjfdxzl0xpznmsky" - }, - { - "key": "app_state.tokenfactory.params.fee_collector_address", - "value": "neutron1hj5fveer5cjtn4wd6wstzugjfdxzl0xpznmsky" - }, - { - "key": "app_state.interchainaccounts.host_genesis_state.params.allow_messages", - "value": [ - "/cosmos.bank.v1beta1.MsgSend", - "/cosmos.bank.v1beta1.MsgMultiSend", - "/cosmos.staking.v1beta1.MsgDelegate", - "/cosmos.staking.v1beta1.MsgUndelegate", - "/cosmos.staking.v1beta1.MsgBeginRedelegate", - "/cosmos.staking.v1beta1.MsgRedeemTokensforShares", - "/cosmos.staking.v1beta1.MsgTokenizeShares", - "/cosmos.distribution.v1beta1.MsgWithdrawDelegatorReward", - "/cosmos.distribution.v1beta1.MsgSetWithdrawAddress", - "/ibc.applications.transfer.v1.MsgTransfer", - "/ibc.lightclients.localhost.v2.ClientState", - "/ibc.core.client.v1.MsgCreateClient", - "/ibc.core.client.v1.Query/ClientState", - "/ibc.core.client.v1.Query/ConsensusState", - "/ibc.core.connection.v1.Query/Connection" - ] - } - ], - "accounts": [ - { - "name": "acc0", - "address": "neutron1hj5fveer5cjtn4wd6wstzugjfdxzl0xpznmsky", - "amount": "10000000000%DENOM%", - "mnemonic": "decorate bright ozone fork gallery riot bus exhaust worth way bone indoor calm squirrel merry zero scheme cotton until shop any excess stage laundry" - } - ] - } - } - ] -} diff --git a/local-interchain/chains/juno_ibc.json b/local-interchain/chains/juno_ibc.json deleted file mode 100644 index 04a650f76..000000000 --- a/local-interchain/chains/juno_ibc.json +++ /dev/null @@ -1,91 +0,0 @@ -{ - "chains": [ - { - "name": "juno", - "chain_id": "localjuno-1", - "denom": "ujuno", - "binary": "junod", - "bech32_prefix": "juno", - "docker_image": { - "repository": "ghcr.io/cosmoscontracts/juno", - "version": "v17.0.0" - }, - "gas_prices": "0%DENOM%", - "chain_type": "cosmos", - "coin_type": 118, - "trusting_period": "112h", - "gas_adjustment": 2.0, - "number_vals": 1, - "number_node": 0, - "block_time": "500ms", - "host_port_override": { - "26657": "26657", - "1317": "1317", - "9090": "9090" - }, - "ibc_paths": ["juno-ibc-1"], - "debugging": true, - "genesis": { - "modify": [ - { - "key": "app_state.gov.params.voting_period", - "value": "15s" - }, - { - "key": "app_state.gov.params.max_deposit_period", - "value": "15s" - }, - { - "key": "app_state.gov.params.min_deposit.0.denom", - "value": "ujuno" - } - ], - "accounts": [ - { - "name": "acc0", - "address": "juno1hj5fveer5cjtn4wd6wstzugjfdxzl0xps73ftl", - "amount": "10000000%DENOM%", - "mnemonic": "decorate bright ozone fork gallery riot bus exhaust worth way bone indoor calm squirrel merry zero scheme cotton until shop any excess stage laundry" - }, - { - "name": "acc1", - "address": "juno1efd63aw40lxf3n4mhf7dzhjkr453axurv2zdzk", - "amount": "10000000%DENOM%", - "mnemonic": "wealth flavor believe regret funny network recall kiss grape useless pepper cram hint member few certain unveil rather brick bargain curious require crowd raise" - } - ] - } - }, - { - "name": "juno", - "chain_id": "localjuno-2", - "binary": "junod", - "bech32_prefix": "juno", - "denom": "ujuno", - "docker_image": { - "repository": "ghcr.io/cosmoscontracts/juno", - "version": "v17.0.0" - }, - "genesis": { - "accounts": [ - { - "name": "second0", - "address": "juno1hj5fveer5cjtn4wd6wstzugjfdxzl0xps73ftl", - "amount": "10000000%DENOM%", - "mnemonic": "decorate bright ozone fork gallery riot bus exhaust worth way bone indoor calm squirrel merry zero scheme cotton until shop any excess stage laundry" - }, - { - "name": "second1", - "address": "juno1efd63aw40lxf3n4mhf7dzhjkr453axurv2zdzk", - "amount": "10000000%DENOM%", - "mnemonic": "wealth flavor believe regret funny network recall kiss grape useless pepper cram hint member few certain unveil rather brick bargain curious require crowd raise" - } - ] - }, - "block_time": "500ms", - "gas_prices": "0%DENOM%", - "gas_adjustment": 2.0, - "ibc_paths": ["juno-ibc-1"] - } - ] -} \ No newline at end of file diff --git a/local-interchain/chains/osmosis.json b/local-interchain/chains/osmosis.json deleted file mode 100644 index 9d1904618..000000000 --- a/local-interchain/chains/osmosis.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "chains": [ - { - "name": "osmosis", - "chain_id": "localosmo-1", - "denom": "uosmo", - "binary": "osmosisd", - "host_port_override": { - "26657": "26657", - "1317": "1317", - "9090": "9090" - }, - "bech32_prefix": "osmo", - "docker_image": { - "version": "v25.0.0" - }, - "ibc_paths": ["osmo-ibc-1"] - }, - { - "name": "osmosis", - "chain_id": "localosmo-2", - "denom": "uosmo", - "binary": "osmosisd", - "bech32_prefix": "osmo", - "docker_image": { - "version": "v25.0.0" - }, - "ibc_paths": ["osmo-ibc-1"] - } - ] -} - - diff --git a/local-interchain/chains/stargaze.json b/local-interchain/chains/stargaze.json deleted file mode 100644 index b3d7c04cb..000000000 --- a/local-interchain/chains/stargaze.json +++ /dev/null @@ -1,52 +0,0 @@ -{ - "chains": [ - { - "name": "stargaze", - "chain_id": "localstars-1", - "denom": "ustars", - "binary": "starsd", - "bech32_prefix": "stars", - "docker_image": { - "version": "v13.0.0" - }, - "gas_prices": "0%DENOM%", - "chain_type": "cosmos", - "coin_type": 118, - "trusting_period": "112h", - "host_port_override": { - "26657": "26657", - "1317": "1317", - "9090": "9090" - }, - "gas_adjustment": 2.0, - "number_vals": 1, - "number_node": 0, - "debugging": true, - "block_time": "500ms", - "genesis": { - "modify": [ - { - "key": "app_state.gov.params.voting_period", - "value": "15s" - }, - { - "key": "app_state.gov.params.max_deposit_period", - "value": "15s" - }, - { - "key": "app_state.gov.params.min_deposit.0.denom", - "value": "ustars" - } - ], - "accounts": [ - { - "name": "acc0", - "address": "stars1hj5fveer5cjtn4wd6wstzugjfdxzl0xpjs908j", - "amount": "10000000000%DENOM%", - "mnemonic": "decorate bright ozone fork gallery riot bus exhaust worth way bone indoor calm squirrel merry zero scheme cotton until shop any excess stage laundry" - } - ] - } - } - ] -} \ No newline at end of file diff --git a/local-interchain/chains/state/README.md b/local-interchain/chains/state/README.md deleted file mode 100644 index 3dd1ffa6a..000000000 --- a/local-interchain/chains/state/README.md +++ /dev/null @@ -1,3 +0,0 @@ - -## avs-and-eigenlayer-deployed-anvil-state.json -- \ No newline at end of file diff --git a/local-interchain/chains/state/avs-and-eigenlayer-deployed-anvil-state.json b/local-interchain/chains/state/avs-and-eigenlayer-deployed-anvil-state.json deleted file mode 100644 index 1916e1e23..000000000 --- a/local-interchain/chains/state/avs-and-eigenlayer-deployed-anvil-state.json +++ /dev/null @@ -1 +0,0 @@ -{"block":{"number":"0x20","coinbase":"0x0000000000000000000000000000000000000000","timestamp":"0x66427aac","gas_limit":"0x1c9c380","basefee":"0xbc67d05","difficulty":"0x0","prevrandao":"0x0000000000000000000000000000000000000000000000000000000000000000","blob_excess_gas_and_price":{"excess_blob_gas":0,"blob_gasprice":1}},"accounts":{"0x0000000000000000000000000000000000000000":{"nonce":0,"balance":"0x256f1f3387c7600","code":"0x","storage":{}},"0x0165878a594ca255338adfa4d48449f69242eb8f":{"nonce":1,"balance":"0x0","code":"0x60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b6100803660046106f1565b610118565b61005b61009336600461070c565b61015f565b3480156100a457600080fd5b506100ad6101d0565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e43660046106f1565b61020b565b3480156100f557600080fd5b506100ad610235565b61010661029b565b61011661011161033a565b610344565b565b610120610368565b6001600160a01b0316336001600160a01b03161415610157576101548160405180602001604052806000815250600061039b565b50565b6101546100fe565b610167610368565b6001600160a01b0316336001600160a01b031614156101c8576101c38383838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506001925061039b915050565b505050565b6101c36100fe565b60006101da610368565b6001600160a01b0316336001600160a01b03161415610200576101fb61033a565b905090565b6102086100fe565b90565b610213610368565b6001600160a01b0316336001600160a01b0316141561015757610154816103c6565b600061023f610368565b6001600160a01b0316336001600160a01b03161415610200576101fb610368565b6060610285838360405180606001604052806027815260200161080b6027913961041a565b9392505050565b6001600160a01b03163b151590565b6102a3610368565b6001600160a01b0316336001600160a01b031614156101165760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b60006101fb6104f7565b3660008037600080366000845af43d6000803e808015610363573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b6103a48361051f565b6000825111806103b15750805b156101c3576103c08383610260565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103ef610368565b604080516001600160a01b03928316815291841660208301520160405180910390a16101548161055f565b60606001600160a01b0384163b6104825760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610331565b600080856001600160a01b03168560405161049d91906107bb565b600060405180830381855af49150503d80600081146104d8576040519150601f19603f3d011682016040523d82523d6000602084013e6104dd565b606091505b50915091506104ed828286610608565b9695505050505050565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61038c565b61052881610641565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6001600160a01b0381166105c45760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b6064820152608401610331565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b60608315610617575081610285565b8251156106275782518084602001fd5b8160405162461bcd60e51b815260040161033191906107d7565b6001600160a01b0381163b6106ae5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610331565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6105e7565b80356001600160a01b03811681146106ec57600080fd5b919050565b60006020828403121561070357600080fd5b610285826106d5565b60008060006040848603121561072157600080fd5b61072a846106d5565b9250602084013567ffffffffffffffff8082111561074757600080fd5b818601915086601f83011261075b57600080fd5b81358181111561076a57600080fd5b87602082850101111561077c57600080fd5b6020830194508093505050509250925092565b60005b838110156107aa578181015183820152602001610792565b838111156103c05750506000910152565b600082516107cd81846020870161078f565b9190910192915050565b60208152600082518060208401526107f681604085016020870161078f565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212202d8aef871a7506c5a3b3c27bcde2c65544a40c9d05e5fba361c75671607f864e64736f6c634300080c0033","storage":{"0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc":"0x9a676e781a523b5d0c0e43731313a708cb607508","0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103":"0x5fbdb2315678afecb367f032d93f642f64180aa3"}},"0x09635f643e140090a9a8dcd712ed6285858cebef":{"nonce":1,"balance":"0x0","code":"0x60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b6100803660046106f1565b610118565b61005b61009336600461070c565b61015f565b3480156100a457600080fd5b506100ad6101d0565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e43660046106f1565b61020b565b3480156100f557600080fd5b506100ad610235565b61010661029b565b61011661011161033a565b610344565b565b610120610368565b6001600160a01b0316336001600160a01b03161415610157576101548160405180602001604052806000815250600061039b565b50565b6101546100fe565b610167610368565b6001600160a01b0316336001600160a01b031614156101c8576101c38383838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506001925061039b915050565b505050565b6101c36100fe565b60006101da610368565b6001600160a01b0316336001600160a01b03161415610200576101fb61033a565b905090565b6102086100fe565b90565b610213610368565b6001600160a01b0316336001600160a01b0316141561015757610154816103c6565b600061023f610368565b6001600160a01b0316336001600160a01b03161415610200576101fb610368565b6060610285838360405180606001604052806027815260200161080b6027913961041a565b9392505050565b6001600160a01b03163b151590565b6102a3610368565b6001600160a01b0316336001600160a01b031614156101165760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b60006101fb6104f7565b3660008037600080366000845af43d6000803e808015610363573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b6103a48361051f565b6000825111806103b15750805b156101c3576103c08383610260565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103ef610368565b604080516001600160a01b03928316815291841660208301520160405180910390a16101548161055f565b60606001600160a01b0384163b6104825760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610331565b600080856001600160a01b03168560405161049d91906107bb565b600060405180830381855af49150503d80600081146104d8576040519150601f19603f3d011682016040523d82523d6000602084013e6104dd565b606091505b50915091506104ed828286610608565b9695505050505050565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61038c565b61052881610641565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6001600160a01b0381166105c45760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b6064820152608401610331565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b60608315610617575081610285565b8251156106275782518084602001fd5b8160405162461bcd60e51b815260040161033191906107d7565b6001600160a01b0381163b6106ae5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610331565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6105e7565b80356001600160a01b03811681146106ec57600080fd5b919050565b60006020828403121561070357600080fd5b610285826106d5565b60008060006040848603121561072157600080fd5b61072a846106d5565b9250602084013567ffffffffffffffff8082111561074757600080fd5b818601915086601f83011261075b57600080fd5b81358181111561076a57600080fd5b87602082850101111561077c57600080fd5b6020830194508093505050509250925092565b60005b838110156107aa578181015183820152602001610792565b838111156103c05750506000910152565b600082516107cd81846020870161078f565b9190910192915050565b60208152600082518060208401526107f681604085016020870161078f565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212202d8aef871a7506c5a3b3c27bcde2c65544a40c9d05e5fba361c75671607f864e64736f6c634300080c0033","storage":{"0x0":"0xe7f1725e7734ce288f8367e1bb143e90bb3f05120001","0x1":"0x0","0x32":"0x7a2088a1bfc9d81c55368ae168c2c02570cb814f","0x33":"0x64","0x64":"0xde0b6b3a7640000","0x65":"0x56bc75e2d63100000","0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc":"0x322813fd9a801c5507c9de605d63cea4f2ce6c44","0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103":"0x5fbdb2315678afecb367f032d93f642f64180aa3"}},"0x0b306bf915c4d645ff596e518faf3f9669b97016":{"nonce":1,"balance":"0x0","code":"0x6080604052600436106101ee5760003560e01c80638da5cb5b1161010d578063c052bd61116100a0578063d1c64cc91161006f578063d1c64cc914610604578063ea4d3c9b14610624578063f2fde38b14610658578063f6848d2414610678578063fabc1cbc146106b357600080fd5b8063c052bd6114610584578063c1de3aef146105a4578063c2c51c40146105c4578063cf756fdf146105e457600080fd5b8063a38406a3116100dc578063a38406a3146104fa578063a6a509be1461051a578063b134427114610530578063beffbb891461056457600080fd5b80638da5cb5b1461046b5780639104c319146104895780639b4e4634146104b15780639ba06275146104c457600080fd5b8063595c6a6711610185578063715018a611610154578063715018a6146103ed57806374cdd7981461040257806384d8106214610436578063886f11951461044b57600080fd5b8063595c6a67146103565780635ac86ab71461036b5780635c975abb146103ab57806360f4062b146103c057600080fd5b8063387b1300116101c1578063387b1300146102b457806339b70e38146102d457806344e71c8014610308578063463db0381461033657600080fd5b80630e81073c146101f357806310d67a2f14610226578063136439dd14610248578063292b7b2b14610268575b600080fd5b3480156101ff57600080fd5b5061021361020e366004612406565b6106d3565b6040519081526020015b60405180910390f35b34801561023257600080fd5b50610246610241366004612432565b610911565b005b34801561025457600080fd5b5061024661026336600461244f565b6109c4565b34801561027457600080fd5b5061029c7f000000000000000000000000610178da211fef7d417bc0e6fed39f05609ad78881565b6040516001600160a01b03909116815260200161021d565b3480156102c057600080fd5b506102466102cf366004612468565b610b03565b3480156102e057600080fd5b5061029c7f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c981565b34801561031457600080fd5b5061031d610ea1565b60405167ffffffffffffffff909116815260200161021d565b34801561034257600080fd5b506102466103513660046124a9565b610eca565b34801561036257600080fd5b50610246611056565b34801561037757600080fd5b5061039b6103863660046124d3565b606654600160ff9092169190911b9081161490565b604051901515815260200161021d565b3480156103b757600080fd5b50606654610213565b3480156103cc57600080fd5b506102136103db366004612432565b609b6020526000908152604090205481565b3480156103f957600080fd5b5061024661111d565b34801561040e57600080fd5b5061029c7f00000000000000000000000000000000219ab540356cbb839cbe05303d7705fa81565b34801561044257600080fd5b5061029c611131565b34801561045757600080fd5b5060655461029c906001600160a01b031681565b34801561047757600080fd5b506033546001600160a01b031661029c565b34801561049557600080fd5b5061029c73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac081565b6102466104bf36600461253f565b61121b565b3480156104d057600080fd5b5061029c6104df366004612432565b6098602052600090815260409020546001600160a01b031681565b34801561050657600080fd5b5061029c610515366004612432565b61130a565b34801561052657600080fd5b5061021360995481565b34801561053c57600080fd5b5061029c7f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f81565b34801561057057600080fd5b5061024661057f366004612406565b6113dc565b34801561059057600080fd5b5060975461029c906001600160a01b031681565b3480156105b057600080fd5b506102466105bf366004612432565b6115f3565b3480156105d057600080fd5b506102466105df366004612406565b611604565b3480156105f057600080fd5b506102466105ff3660046125b3565b611a07565b34801561061057600080fd5b5061021361061f3660046124a9565b611b30565b34801561063057600080fd5b5061029c7f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc981565b34801561066457600080fd5b50610246610673366004612432565b611c3b565b34801561068457600080fd5b5061039b610693366004612432565b6001600160a01b0390811660009081526098602052604090205416151590565b3480156106bf57600080fd5b506102466106ce36600461244f565b611cb1565b6000336001600160a01b037f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc916146107265760405162461bcd60e51b815260040161071d90612604565b60405180910390fd5b6001600160a01b0383166107a25760405162461bcd60e51b815260206004820152603a60248201527f456967656e506f644d616e616765722e6164645368617265733a20706f644f7760448201527f6e65722063616e6e6f74206265207a65726f2061646472657373000000000000606482015260840161071d565b60008212156108105760405162461bcd60e51b815260206004820152603460248201527f456967656e506f644d616e616765722e6164645368617265733a207368617265604482015273732063616e6e6f74206265206e6567617469766560601b606482015260840161071d565b61081e633b9aca0083612678565b156108915760405162461bcd60e51b815260206004820152603d60248201527f456967656e506f644d616e616765722e6164645368617265733a20736861726560448201527f73206d75737420626520612077686f6c65204777656920616d6f756e74000000606482015260840161071d565b6001600160a01b0383166000908152609b6020526040812054906108b584836126a2565b6001600160a01b0386166000818152609b6020526040908190208390555191925090600080516020613231833981519152906108f49087815260200190565b60405180910390a26109068282611e0d565b925050505b92915050565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610964573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061098891906126e3565b6001600160a01b0316336001600160a01b0316146109b85760405162461bcd60e51b815260040161071d90612700565b6109c181611e4f565b50565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610a0c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a30919061274a565b610a4c5760405162461bcd60e51b815260040161071d9061276c565b60665481811614610ac55760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c6974790000000000000000606482015260840161071d565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b336001600160a01b037f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc91614610b4b5760405162461bcd60e51b815260040161071d90612604565b6001600160a01b038316610bc55760405162461bcd60e51b8152602060048201526047602482015260008051602061325183398151915260448201527f546f6b656e733a20706f644f776e65722063616e6e6f74206265207a65726f206064820152666164647265737360c81b608482015260a40161071d565b6001600160a01b038216610c425760405162461bcd60e51b815260206004820152604a602482015260008051602061325183398151915260448201527f546f6b656e733a2064657374696e6174696f6e2063616e6e6f74206265207a65606482015269726f206164647265737360b01b608482015260a40161071d565b6000811215610cb15760405162461bcd60e51b8152602060048201526041602482015260008051602061325183398151915260448201527f546f6b656e733a207368617265732063616e6e6f74206265206e6567617469766064820152606560f81b608482015260a40161071d565b610cbf633b9aca0082612678565b15610d335760405162461bcd60e51b815260206004820152604a602482015260008051602061325183398151915260448201527f546f6b656e733a20736861726573206d75737420626520612077686f6c6520476064820152691dd95a48185b5bdd5b9d60b21b608482015260a40161071d565b6001600160a01b0383166000908152609b602052604081205490811215610e26576000610d5f826127b4565b905080831115610dc4576001600160a01b0385166000908152609b6020526040812055610d8c81846127d1565b9250846001600160a01b031660008051602061323183398151915282604051610db791815260200190565b60405180910390a2610e24565b6001600160a01b0385166000908152609b602052604081208054859290610dec9084906126a2565b90915550506040518381526001600160a01b038616906000805160206132318339815191529060200160405180910390a25050505050565b505b6001600160a01b03848116600090815260986020526040908190205490516362483a2160e11b815285831660048201526024810185905291169063c490744290604401600060405180830381600087803b158015610e8357600080fd5b505af1158015610e97573d6000803e3d6000fd5b5050505050505050565b609c5460009067ffffffffffffffff1680610ec55767ffffffffffffffff91505090565b919050565b610ed2611f46565b67ffffffffffffffff8116610f645760405162461bcd60e51b815260206004820152604c60248201527f456967656e506f644d616e616765722e73657444656e6562466f726b54696d6560448201527f7374616d703a2063616e6e6f7420736574206e657744656e6562466f726b546960648201526b06d657374616d7020746f20360a41b608482015260a40161071d565b609c5467ffffffffffffffff16156110005760405162461bcd60e51b815260206004820152605360248201527f456967656e506f644d616e616765722e73657444656e6562466f726b54696d6560448201527f7374616d703a2063616e6e6f74207365742064656e6562466f726b54696d657360648201527274616d70206d6f7265207468616e206f6e636560681b608482015260a40161071d565b609c805467ffffffffffffffff191667ffffffffffffffff83169081179091556040519081527f19200b6fdad58f91b2f496b0c444fc4be3eff74a7e24b07770e04a7137bfd9db9060200160405180910390a150565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa15801561109e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110c2919061274a565b6110de5760405162461bcd60e51b815260040161071d9061276c565b600019606681905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b611125611f46565b61112f6000611fa0565b565b6066546000908190600190811614156111885760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b604482015260640161071d565b336000908152609860205260409020546001600160a01b03161561120a5760405162461bcd60e51b815260206004820152603360248201527f456967656e506f644d616e616765722e637265617465506f643a2053656e64656044820152721c88185b1c9958591e481a185cc818481c1bd9606a1b606482015260840161071d565b6000611214611ff2565b9250505090565b606654600090600190811614156112705760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b604482015260640161071d565b336000908152609860205260409020546001600160a01b03168061129957611296611ff2565b90505b6040516326d3918d60e21b81526001600160a01b03821690639b4e46349034906112cf908b908b908b908b908b90600401612811565b6000604051808303818588803b1580156112e857600080fd5b505af11580156112fc573d6000803e3d6000fd5b505050505050505050505050565b6001600160a01b038082166000908152609860205260408120549091168061090b576113d5836001600160a01b031660001b60405180610940016040528061090e815260200161292361090e9139604080516001600160a01b037f000000000000000000000000610178da211fef7d417bc0e6fed39f05609ad788166020820152808201919091526000606082015260800160408051601f19818403018152908290526113ba9291602001612886565b60405160208183030381529060405280519060200120612157565b9392505050565b336001600160a01b037f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc916146114245760405162461bcd60e51b815260040161071d90612604565b600081121561149b5760405162461bcd60e51b815260206004820152603760248201527f456967656e506f644d616e616765722e72656d6f76655368617265733a20736860448201527f617265732063616e6e6f74206265206e65676174697665000000000000000000606482015260840161071d565b6114a9633b9aca0082612678565b1561151e576040805162461bcd60e51b81526020600482015260248101919091527f456967656e506f644d616e616765722e72656d6f76655368617265733a20736860448201527f61726573206d75737420626520612077686f6c65204777656920616d6f756e74606482015260840161071d565b6001600160a01b0382166000908152609b602052604081205461154290839061289b565b905060008112156115d35760405162461bcd60e51b815260206004820152604f60248201527f456967656e506f644d616e616765722e72656d6f76655368617265733a20636160448201527f6e6e6f7420726573756c7420696e20706f64206f776e657220686176696e672060648201526e6e656761746976652073686172657360881b608482015260a40161071d565b6001600160a01b039092166000908152609b602052604090209190915550565b6115fb611f46565b6109c1816121b3565b6001600160a01b03808316600090815260986020526040902054839116331461167f5760405162461bcd60e51b815260206004820152602760248201527f456967656e506f644d616e616765722e6f6e6c79456967656e506f643a206e6f6044820152661d0818481c1bd960ca1b606482015260840161071d565b600260c95414156116d25760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161071d565b600260c9556001600160a01b03831661176e5760405162461bcd60e51b815260206004820152605260248201527f456967656e506f644d616e616765722e7265636f7264426561636f6e4368616960448201527f6e45544842616c616e63655570646174653a20706f644f776e65722063616e6e6064820152716f74206265207a65726f206164647265737360701b608482015260a40161071d565b61177c633b9aca00836128da565b156118155760405162461bcd60e51b815260206004820152605a60248201527f456967656e506f644d616e616765722e7265636f7264426561636f6e4368616960448201527f6e45544842616c616e63655570646174653a2073686172657344656c7461206d60648201527f75737420626520612077686f6c65204777656920616d6f756e74000000000000608482015260a40161071d565b6001600160a01b0383166000908152609b60205260408120549061183984836126a2565b6001600160a01b0386166000908152609b602052604081208290559091506118618383611e0d565b905080156119c957600081121561192c576001600160a01b037f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc91663132d49678773beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac06118c0856127b4565b6040516001600160e01b031960e086901b1681526001600160a01b0393841660048201529290911660248301526044820152606401600060405180830381600087803b15801561190f57600080fd5b505af1158015611923573d6000803e3d6000fd5b505050506119c9565b604051631452b9d760e11b81526001600160a01b03878116600483015273beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac06024830152604482018390527f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc916906328a573ae90606401600060405180830381600087803b1580156119b057600080fd5b505af11580156119c4573d6000803e3d6000fd5b505050505b856001600160a01b0316600080516020613231833981519152866040516119f291815260200190565b60405180910390a25050600160c95550505050565b600054610100900460ff1615808015611a275750600054600160ff909116105b80611a415750303b158015611a41575060005460ff166001145b611aa45760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161071d565b6000805460ff191660011790558015611ac7576000805461ff0019166101001790555b611ad0856121b3565b611ad984611fa0565b611ae383836121fd565b8015611b29576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b60975460405163321accf960e11b815267ffffffffffffffff8316600482015260009182916001600160a01b039091169063643599f290602401602060405180830381865afa158015611b87573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bab91906128ee565b90508061090b5760405162461bcd60e51b815260206004820152605260248201527f456967656e506f644d616e616765722e676574426c6f636b526f6f744174546960448201527f6d657374616d703a20737461746520726f6f742061742074696d657374616d70606482015271081b9bdd081e595d08199a5b985b1a5e995960721b608482015260a40161071d565b611c43611f46565b6001600160a01b038116611ca85760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161071d565b6109c181611fa0565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611d04573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d2891906126e3565b6001600160a01b0316336001600160a01b031614611d585760405162461bcd60e51b815260040161071d90612700565b606654198119606654191614611dd65760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c6974790000000000000000606482015260840161071d565b606681905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c90602001610af8565b6000808313611e2d5760008213611e265750600061090b565b508061090b565b60008213611e4557611e3e836127b4565b905061090b565b611e3e838361289b565b6001600160a01b038116611edd5760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a40161071d565b606554604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1606580546001600160a01b0319166001600160a01b0392909216919091179055565b6033546001600160a01b0316331461112f5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161071d565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600060996000815461200390612907565b9091555060408051610940810190915261090e8082526000916120a291839133916129236020830139604080516001600160a01b037f000000000000000000000000610178da211fef7d417bc0e6fed39f05609ad788166020820152808201919091526000606082015260800160408051601f198184030181529082905261208e9291602001612886565b6040516020818303038152906040526122e7565b60405163189acdbd60e31b81523360048201529091506001600160a01b0382169063c4d66de890602401600060405180830381600087803b1580156120e657600080fd5b505af11580156120fa573d6000803e3d6000fd5b50503360008181526098602052604080822080546001600160a01b0319166001600160a01b038816908117909155905192945092507f21c99d0db02213c32fff5b05cf0a718ab5f858802b91498f80d82270289d856a91a3919050565b604080516001600160f81b03196020808301919091526bffffffffffffffffffffffff193060601b16602183015260358201859052605580830185905283518084039091018152607590920190925280519101206000906113d5565b609780546001600160a01b0319166001600160a01b0383169081179091556040517f08f0470754946ccfbb446ff7fd2d6ae6af1bbdae19f85794c0cc5ed5e8ceb4f690600090a250565b6065546001600160a01b031615801561221e57506001600160a01b03821615155b6122a05760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a40161071d565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a26122e382611e4f565b5050565b6000808447101561233a5760405162461bcd60e51b815260206004820152601d60248201527f437265617465323a20696e73756666696369656e742062616c616e6365000000604482015260640161071d565b82516123885760405162461bcd60e51b815260206004820181905260248201527f437265617465323a2062797465636f6465206c656e677468206973207a65726f604482015260640161071d565b8383516020850187f590506001600160a01b0381166123e95760405162461bcd60e51b815260206004820152601960248201527f437265617465323a204661696c6564206f6e206465706c6f7900000000000000604482015260640161071d565b949350505050565b6001600160a01b03811681146109c157600080fd5b6000806040838503121561241957600080fd5b8235612424816123f1565b946020939093013593505050565b60006020828403121561244457600080fd5b81356113d5816123f1565b60006020828403121561246157600080fd5b5035919050565b60008060006060848603121561247d57600080fd5b8335612488816123f1565b92506020840135612498816123f1565b929592945050506040919091013590565b6000602082840312156124bb57600080fd5b813567ffffffffffffffff811681146113d557600080fd5b6000602082840312156124e557600080fd5b813560ff811681146113d557600080fd5b60008083601f84011261250857600080fd5b50813567ffffffffffffffff81111561252057600080fd5b60208301915083602082850101111561253857600080fd5b9250929050565b60008060008060006060868803121561255757600080fd5b853567ffffffffffffffff8082111561256f57600080fd5b61257b89838a016124f6565b9097509550602088013591508082111561259457600080fd5b506125a1888289016124f6565b96999598509660400135949350505050565b600080600080608085870312156125c957600080fd5b84356125d4816123f1565b935060208501356125e4816123f1565b925060408501356125f4816123f1565b9396929550929360600135925050565b602080825260409082018190527f456967656e506f644d616e616765722e6f6e6c7944656c65676174696f6e4d61908201527f6e616765723a206e6f74207468652044656c65676174696f6e4d616e61676572606082015260800190565b634e487b7160e01b600052601260045260246000fd5b60008261268757612687612662565b500690565b634e487b7160e01b600052601160045260246000fd5b600080821280156001600160ff1b03849003851316156126c4576126c461268c565b600160ff1b83900384128116156126dd576126dd61268c565b50500190565b6000602082840312156126f557600080fd5b81516113d5816123f1565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b60006020828403121561275c57600080fd5b815180151581146113d557600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b6000600160ff1b8214156127ca576127ca61268c565b5060000390565b6000828210156127e3576127e361268c565b500390565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6060815260006128256060830187896127e8565b82810360208401526128388186886127e8565b9150508260408301529695505050505050565b6000815160005b8181101561286c5760208185018101518683015201612852565b8181111561287b576000828601525b509290920192915050565b60006123e9612895838661284b565b8461284b565b60008083128015600160ff1b8501841216156128b9576128b961268c565b6001600160ff1b03840183138116156128d4576128d461268c565b50500390565b6000826128e9576128e9612662565b500790565b60006020828403121561290057600080fd5b5051919050565b600060001982141561291b5761291b61268c565b506001019056fe608060405260405161090e38038061090e83398101604081905261002291610460565b61002e82826000610035565b505061058a565b61003e83610100565b6040516001600160a01b038416907f1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e90600090a260008251118061007f5750805b156100fb576100f9836001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100e99190610520565b836102a360201b6100291760201c565b505b505050565b610113816102cf60201b6100551760201c565b6101725760405162461bcd60e51b815260206004820152602560248201527f455243313936373a206e657720626561636f6e206973206e6f74206120636f6e6044820152641d1c9858dd60da1b60648201526084015b60405180910390fd5b6101e6816001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101d79190610520565b6102cf60201b6100551760201c565b61024b5760405162461bcd60e51b815260206004820152603060248201527f455243313936373a20626561636f6e20696d706c656d656e746174696f6e206960448201526f1cc81b9bdd08184818dbdb9d1c9858dd60821b6064820152608401610169565b806102827fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d5060001b6102de60201b6100641760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b60606102c883836040518060600160405280602781526020016108e7602791396102e1565b9392505050565b6001600160a01b03163b151590565b90565b6060600080856001600160a01b0316856040516102fe919061053b565b600060405180830381855af49150503d8060008114610339576040519150601f19603f3d011682016040523d82523d6000602084013e61033e565b606091505b5090925090506103508683838761035a565b9695505050505050565b606083156103c65782516103bf576001600160a01b0385163b6103bf5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610169565b50816103d0565b6103d083836103d8565b949350505050565b8151156103e85781518083602001fd5b8060405162461bcd60e51b81526004016101699190610557565b80516001600160a01b038116811461041957600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b8381101561044f578181015183820152602001610437565b838111156100f95750506000910152565b6000806040838503121561047357600080fd5b61047c83610402565b60208401519092506001600160401b038082111561049957600080fd5b818501915085601f8301126104ad57600080fd5b8151818111156104bf576104bf61041e565b604051601f8201601f19908116603f011681019083821181831017156104e7576104e761041e565b8160405282815288602084870101111561050057600080fd5b610511836020830160208801610434565b80955050505050509250929050565b60006020828403121561053257600080fd5b6102c882610402565b6000825161054d818460208701610434565b9190910192915050565b6020815260008251806020840152610576816040850160208701610434565b601f01601f19169190910160400192915050565b61034e806105996000396000f3fe60806040523661001357610011610017565b005b6100115b610027610022610067565b610100565b565b606061004e83836040518060600160405280602781526020016102f260279139610124565b9392505050565b6001600160a01b03163b151590565b90565b600061009a7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50546001600160a01b031690565b6001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100fb9190610249565b905090565b3660008037600080366000845af43d6000803e80801561011f573d6000f35b3d6000fd5b6060600080856001600160a01b03168560405161014191906102a2565b600060405180830381855af49150503d806000811461017c576040519150601f19603f3d011682016040523d82523d6000602084013e610181565b606091505b50915091506101928683838761019c565b9695505050505050565b6060831561020d578251610206576001600160a01b0385163b6102065760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064015b60405180910390fd5b5081610217565b610217838361021f565b949350505050565b81511561022f5781518083602001fd5b8060405162461bcd60e51b81526004016101fd91906102be565b60006020828403121561025b57600080fd5b81516001600160a01b038116811461004e57600080fd5b60005b8381101561028d578181015183820152602001610275565b8381111561029c576000848401525b50505050565b600082516102b4818460208701610272565b9190910192915050565b60208152600082518060208401526102dd816040850160208701610272565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220d51e81d3bc5ed20a26aeb05dce7e825c503b2061aa78628027300c8d65b9d89a64736f6c634300080c0033416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c65644e2b791dedccd9fb30141b088cabf5c14a8912b52f59375c95c010700b8c6193456967656e506f644d616e616765722e77697468647261775368617265734173a26469706673582212207d16f46ce9f67dc4935c89b6dc9a4d8aa7d2511b60d48fb7bbb7e635a52f53dd64736f6c634300080c0033","storage":{"0x0":"0xff"}},"0x0dcd1bf9a1b36ce34237eeafef220932846bcd82":{"nonce":1,"balance":"0x0","code":"0x608060405234801561001057600080fd5b50600436106101425760003560e01c80638da5cb5b116100b8578063d79aceab1161007c578063d79aceab146102f8578063df5cf7231461031f578063ec76f44214610346578063f2fde38b14610359578063f698da251461036c578063fabc1cbc1461037457600080fd5b80638da5cb5b1461029b5780639926ee7d146102ac578063a1060c88146102bf578063a364f4da146102d2578063a98fb355146102e557600080fd5b806349075da31161010a57806349075da3146101fa578063595c6a67146102355780635ac86ab71461023d5780635c975abb14610260578063715018a614610268578063886f11951461027057600080fd5b806310d67a2f14610147578063136439dd1461015c5780631794bb3c1461016f57806320606b7014610182578063374823b5146101bc575b600080fd5b61015a6101553660046118ab565b610387565b005b61015a61016a3660046118cf565b610443565b61015a61017d3660046118e8565b610582565b6101a97f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b6040519081526020015b60405180910390f35b6101ea6101ca366004611929565b609960209081526000928352604080842090915290825290205460ff1681565b60405190151581526020016101b3565b610228610208366004611955565b609860209081526000928352604080842090915290825290205460ff1681565b6040516101b391906119a4565b61015a6106ac565b6101ea61024b3660046119cc565b606654600160ff9092169190911b9081161490565b6066546101a9565b61015a610773565b606554610283906001600160a01b031681565b6040516001600160a01b0390911681526020016101b3565b6033546001600160a01b0316610283565b61015a6102ba366004611a5f565b610787565b6101a96102cd366004611b46565b610b1a565b61015a6102e03660046118ab565b610bd3565b61015a6102f3366004611b8c565b610d3c565b6101a97fda2c89bafdd34776a2b8bb9c83c82f419e20cc8c67207f70edd58249b92661bd81565b6102837f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc981565b61015a6103543660046118cf565b610d83565b61015a6103673660046118ab565b610e2e565b6101a9610ea4565b61015a6103823660046118cf565b610ee2565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156103da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103fe9190611bfe565b6001600160a01b0316336001600160a01b0316146104375760405162461bcd60e51b815260040161042e90611c1b565b60405180910390fd5b6104408161103e565b50565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa15801561048b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104af9190611c65565b6104cb5760405162461bcd60e51b815260040161042e90611c87565b606654818116146105445760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c6974790000000000000000606482015260840161042e565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b600054610100900460ff16158080156105a25750600054600160ff909116105b806105bc5750303b1580156105bc575060005460ff166001145b61061f5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161042e565b6000805460ff191660011790558015610642576000805461ff0019166101001790555b61064c8383611135565b61065461121f565b609755610660846112b6565b80156106a6576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa1580156106f4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107189190611c65565b6107345760405162461bcd60e51b815260040161042e90611c87565b600019606681905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b61077b611308565b61078560006112b6565b565b606654600090600190811614156107dc5760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b604482015260640161042e565b42826040015110156108445760405162461bcd60e51b815260206004820152603e6024820152600080516020611dac83398151915260448201527f56533a206f70657261746f72207369676e617475726520657870697265640000606482015260840161042e565b60013360009081526098602090815260408083206001600160a01b038816845290915290205460ff16600181111561087e5761087e61198e565b14156108e05760405162461bcd60e51b815260206004820152603f6024820152600080516020611dac83398151915260448201527f56533a206f70657261746f7220616c7265616479207265676973746572656400606482015260840161042e565b6001600160a01b038316600090815260996020908152604080832085830151845290915290205460ff16156109645760405162461bcd60e51b81526020600482015260366024820152600080516020611dac8339815191526044820152751594ce881cd85b1d08185b1c9958591e481cdc195b9d60521b606482015260840161042e565b6040516336b87bd760e11b81526001600160a01b0384811660048301527f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc91690636d70f7ae90602401602060405180830381865afa1580156109ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ee9190611c65565b610a645760405162461bcd60e51b815260206004820152604d6024820152600080516020611dac83398151915260448201527f56533a206f70657261746f72206e6f74207265676973746572656420746f204560648201526c1a59d95b93185e595c881e595d609a1b608482015260a40161042e565b6000610a7a843385602001518660400151610b1a565b9050610a8b84828560000151611362565b3360008181526098602090815260408083206001600160a01b0389168085529083528184208054600160ff199182168117909255609985528386208a860151875290945293829020805490931684179092555190917ff0952b1c65271d819d39983d2abb044b9cace59bcc4d4dd389f586ebdcb15b4191610b0c91906119a4565b60405180910390a350505050565b604080517fda2c89bafdd34776a2b8bb9c83c82f419e20cc8c67207f70edd58249b92661bd6020808301919091526001600160a01b0387811683850152861660608301526080820185905260a08083018590528351808403909101815260c0909201909252805191012060009081610b90610ea4565b60405161190160f01b602082015260228101919091526042810183905260620160408051808303601f190181529190528051602090910120979650505050505050565b60665460009060019081161415610c285760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b604482015260640161042e565b60013360009081526098602090815260408083206001600160a01b038716845290915290205460ff166001811115610c6257610c6261198e565b14610cd55760405162461bcd60e51b815260206004820152603f60248201527f4156534469726563746f72792e646572656769737465724f70657261746f724660448201527f726f6d4156533a206f70657261746f72206e6f74207265676973746572656400606482015260840161042e565b3360008181526098602090815260408083206001600160a01b0387168085529252808320805460ff191690555190917ff0952b1c65271d819d39983d2abb044b9cace59bcc4d4dd389f586ebdcb15b4191610d3091906119a4565b60405180910390a35050565b336001600160a01b03167fa89c1dc243d8908a96dd84944bcc97d6bc6ac00dd78e20621576be6a3c9437138383604051610d77929190611ccf565b60405180910390a25050565b33600090815260996020908152604080832084845290915290205460ff1615610e085760405162461bcd60e51b815260206004820152603160248201527f4156534469726563746f72792e63616e63656c53616c743a2063616e6e6f742060448201527018d85b98d95b081cdc195b9d081cd85b1d607a1b606482015260840161042e565b33600090815260996020908152604080832093835292905220805460ff19166001179055565b610e36611308565b6001600160a01b038116610e9b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161042e565b610440816112b6565b60007f0000000000000000000000000000000000000000000000000000000000007a69461415610ed5575060975490565b610edd61121f565b905090565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f35573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f599190611bfe565b6001600160a01b0316336001600160a01b031614610f895760405162461bcd60e51b815260040161042e90611c1b565b6066541981196066541916146110075760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c6974790000000000000000606482015260840161042e565b606681905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c90602001610577565b6001600160a01b0381166110cc5760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a40161042e565b606554604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1606580546001600160a01b0319166001600160a01b0392909216919091179055565b6065546001600160a01b031615801561115657506001600160a01b03821615155b6111d85760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a40161042e565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a261121b8261103e565b5050565b604080518082018252600a81526922b4b3b2b72630bcb2b960b11b60209182015281517f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866818301527f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea81840152466060820152306080808301919091528351808303909101815260a0909101909252815191012090565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6033546001600160a01b031633146107855760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161042e565b6001600160a01b0383163b1561148157604051630b135d3f60e11b808252906001600160a01b03851690631626ba7e906113a29086908690600401611cfe565b602060405180830381865afa1580156113bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113e39190611d5b565b6001600160e01b0319161461147c5760405162461bcd60e51b815260206004820152605360248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a2045524331323731207369676e6174757265206064820152721d995c9a599a58d85d1a5bdb8819985a5b1959606a1b608482015260a40161042e565b505050565b826001600160a01b03166114958383611521565b6001600160a01b03161461147c5760405162461bcd60e51b815260206004820152604760248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a207369676e6174757265206e6f742066726f6d6064820152661039b4b3b732b960c91b608482015260a40161042e565b60008060006115308585611545565b9150915061153d816115b5565b509392505050565b60008082516041141561157c5760208301516040840151606085015160001a61157087828585611770565b945094505050506115ae565b8251604014156115a6576020830151604084015161159b86838361185d565b9350935050506115ae565b506000905060025b9250929050565b60008160048111156115c9576115c961198e565b14156115d25750565b60018160048111156115e6576115e661198e565b14156116345760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e61747572650000000000000000604482015260640161042e565b60028160048111156116485761164861198e565b14156116965760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e67746800604482015260640161042e565b60038160048111156116aa576116aa61198e565b14156117035760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b606482015260840161042e565b60048160048111156117175761171761198e565b14156104405760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b606482015260840161042e565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156117a75750600090506003611854565b8460ff16601b141580156117bf57508460ff16601c14155b156117d05750600090506004611854565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015611824573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661184d57600060019250925050611854565b9150600090505b94509492505050565b6000806001600160ff1b0383168161187a60ff86901c601b611d85565b905061188887828885611770565b935093505050935093915050565b6001600160a01b038116811461044057600080fd5b6000602082840312156118bd57600080fd5b81356118c881611896565b9392505050565b6000602082840312156118e157600080fd5b5035919050565b6000806000606084860312156118fd57600080fd5b833561190881611896565b9250602084013561191881611896565b929592945050506040919091013590565b6000806040838503121561193c57600080fd5b823561194781611896565b946020939093013593505050565b6000806040838503121561196857600080fd5b823561197381611896565b9150602083013561198381611896565b809150509250929050565b634e487b7160e01b600052602160045260246000fd5b60208101600283106119c657634e487b7160e01b600052602160045260246000fd5b91905290565b6000602082840312156119de57600080fd5b813560ff811681146118c857600080fd5b634e487b7160e01b600052604160045260246000fd5b6040516060810167ffffffffffffffff81118282101715611a2857611a286119ef565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715611a5757611a576119ef565b604052919050565b60008060408385031215611a7257600080fd5b8235611a7d81611896565b915060208381013567ffffffffffffffff80821115611a9b57600080fd5b9085019060608288031215611aaf57600080fd5b611ab7611a05565b823582811115611ac657600080fd5b8301601f81018913611ad757600080fd5b803583811115611ae957611ae96119ef565b611afb601f8201601f19168701611a2e565b93508084528986828401011115611b1157600080fd5b808683018786013760008682860101525050818152838301358482015260408301356040820152809450505050509250929050565b60008060008060808587031215611b5c57600080fd5b8435611b6781611896565b93506020850135611b7781611896565b93969395505050506040820135916060013590565b60008060208385031215611b9f57600080fd5b823567ffffffffffffffff80821115611bb757600080fd5b818501915085601f830112611bcb57600080fd5b813581811115611bda57600080fd5b866020828501011115611bec57600080fd5b60209290920196919550909350505050565b600060208284031215611c1057600080fd5b81516118c881611896565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b600060208284031215611c7757600080fd5b815180151581146118c857600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b82815260006020604081840152835180604085015260005b81811015611d3257858101830151858201606001528201611d16565b81811115611d44576000606083870101525b50601f01601f191692909201606001949350505050565b600060208284031215611d6d57600080fd5b81516001600160e01b0319811681146118c857600080fd5b60008219821115611da657634e487b7160e01b600052601160045260246000fd5b50019056fe4156534469726563746f72792e72656769737465724f70657261746f72546f41a264697066735822122027588b0b41ad26fb037d5c6c3b99b735bdce03e3e45cffd659e9d5181cdfda0e64736f6c634300080c0033","storage":{"0x0":"0xff"}},"0x0e801d84fa97b50751dbf25036d067dcf18858bf":{"nonce":1,"balance":"0x0","code":"0x608060405234801561001057600080fd5b50600436106101155760003560e01c80636d14a987116100a2578063bf79ce5811610071578063bf79ce58146103cc578063d5254a8c146103df578063de29fac0146103ff578063e8bb9ae61461041f578063f4e24fe51461044857600080fd5b80636d14a9871461030a5780637916cea6146103315780637ff81a8714610372578063a3db80e2146103a557600080fd5b80633fb27952116100e95780633fb27952146101df57806347b314e8146101f25780635f61a88414610233578063605747d51461028f57806368bccaac146102dd57600080fd5b8062a1f4cb1461011a57806313542a4e1461015b57806326d941f214610192578063377ed99d146101a7575b600080fd5b610141610128366004611904565b6003602052600090815260409020805460019091015482565b604080519283526020830191909152015b60405180910390f35b610184610169366004611904565b6001600160a01b031660009081526001602052604090205490565b604051908152602001610152565b6101a56101a0366004611937565b61045b565b005b6101ca6101b5366004611937565b60ff1660009081526004602052604090205490565b60405163ffffffff9091168152602001610152565b6101a56101ed3660046119c2565b6105b4565b61021b610200366004611a68565b6000908152600260205260409020546001600160a01b031690565b6040516001600160a01b039091168152602001610152565b610282610241366004611937565b60408051808201909152600080825260208201525060ff16600090815260056020908152604091829020825180840190935280548352600101549082015290565b6040516101529190611a81565b6102a261029d366004611a98565b610672565b60408051825167ffffffffffffffff1916815260208084015163ffffffff908116918301919091529282015190921690820152606001610152565b6102f06102eb366004611ac2565b610705565b60405167ffffffffffffffff199091168152602001610152565b61021b7f000000000000000000000000851356ae760d987e095750cceb3bc6014560891c81565b61034461033f366004611a98565b6108a0565b6040805167ffffffffffffffff19909416845263ffffffff9283166020850152911690820152606001610152565b610385610380366004611904565b6108eb565b604080518351815260209384015193810193909352820152606001610152565b6101416103b3366004611937565b6005602052600090815260409020805460019091015482565b6101846103da366004611b0a565b6109b8565b6103f26103ed366004611b67565b610e0c565b6040516101529190611bdf565b61018461040d366004611904565b60016020526000908152604090205481565b61021b61042d366004611a68565b6002602052600090815260409020546001600160a01b031681565b6101a56104563660046119c2565b611026565b336001600160a01b037f000000000000000000000000851356ae760d987e095750cceb3bc6014560891c16146104ac5760405162461bcd60e51b81526004016104a390611c29565b60405180910390fd5b60ff81166000908152600460205260409020541561052b5760405162461bcd60e51b815260206004820152603660248201527f424c5341706b52656769737472792e696e697469616c697a6551756f72756d3a6044820152752071756f72756d20616c72656164792065786973747360501b60648201526084016104a3565b60ff166000908152600460209081526040808320815160608101835284815263ffffffff4381168286019081528285018781528454600181018655948852959096209151919092018054955194518316600160e01b026001600160e01b0395909316600160c01b026001600160e01b03199096169190931c179390931791909116919091179055565b336001600160a01b037f000000000000000000000000851356ae760d987e095750cceb3bc6014560891c16146105fc5760405162461bcd60e51b81526004016104a390611c29565b6000610607836108eb565b50905061061482826110cf565b7f73a2b7fb844724b971802ae9b15db094d4b7192df9d7350e14eb466b9b22eb4e83610655856001600160a01b031660009081526001602052604090205490565b8460405161066593929190611c9d565b60405180910390a1505050565b604080516060810182526000808252602080830182905282840182905260ff8616825260049052919091208054839081106106af576106af611d09565b600091825260209182902060408051606081018252919092015467ffffffffffffffff1981841b16825263ffffffff600160c01b8204811694830194909452600160e01b90049092169082015290505b92915050565b60ff8316600090815260046020526040812080548291908490811061072c5761072c611d09565b600091825260209182902060408051606081018252919092015467ffffffffffffffff1981841b16825263ffffffff600160c01b82048116948301859052600160e01b9091048116928201929092529250851610156107f35760405162461bcd60e51b815260206004820152603e60248201527f424c5341706b52656769737472792e5f76616c696461746541706b486173684160448201527f74426c6f636b4e756d6265723a20696e64657820746f6f20726563656e74000060648201526084016104a3565b604081015163ffffffff1615806108195750806040015163ffffffff168463ffffffff16105b6108975760405162461bcd60e51b815260206004820152604360248201527f424c5341706b52656769737472792e5f76616c696461746541706b486173684160448201527f74426c6f636b4e756d6265723a206e6f74206c61746573742061706b2075706460648201526261746560e81b608482015260a4016104a3565b51949350505050565b600460205281600052604060002081815481106108bc57600080fd5b600091825260209091200154604081901b925063ffffffff600160c01b820481169250600160e01b9091041683565b60408051808201909152600080825260208201526001600160a01b0382166000818152600360209081526040808320815180830183528154815260019182015481850152948452909152812054909190806109ae5760405162461bcd60e51b815260206004820152603e60248201527f424c5341706b52656769737472792e676574526567697374657265645075626b60448201527f65793a206f70657261746f72206973206e6f742072656769737465726564000060648201526084016104a3565b9094909350915050565b6000336001600160a01b037f000000000000000000000000851356ae760d987e095750cceb3bc6014560891c1614610a025760405162461bcd60e51b81526004016104a390611c29565b6000610a30610a1936869003860160408701611d1f565b805160009081526020918201519091526040902090565b90507fad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb5811415610ab8576040805162461bcd60e51b8152602060048201526024810191909152600080516020611f3683398151915260448201527f4b65793a2063616e6e6f74207265676973746572207a65726f207075626b657960648201526084016104a3565b6001600160a01b03851660009081526001602052604090205415610b425760405162461bcd60e51b81526020600482015260476024820152600080516020611f3683398151915260448201527f4b65793a206f70657261746f7220616c72656164792072656769737465726564606482015266207075626b657960c81b608482015260a4016104a3565b6000818152600260205260409020546001600160a01b031615610bc65760405162461bcd60e51b81526020600482015260426024820152600080516020611f3683398151915260448201527f4b65793a207075626c6963206b657920616c7265616479207265676973746572606482015261195960f21b608482015260a4016104a3565b604080516000917f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000191610c1f918835916020808b0135928b01359160608c01359160808d019160c08e01918d35918e8201359101611d51565b6040516020818303038152906040528051906020012060001c610c429190611d9c565b9050610cdc610c7b610c6683610c60368a90038a0160408b01611d1f565b9061131a565b610c7536899003890189611d1f565b906113b1565b610c83611445565b610cc5610cb685610c60604080518082018252600080825260209182015281518083019092526001825260029082015290565b610c75368a90038a018a611d1f565b610cd7368a90038a0160808b01611e0e565b611505565b610d775760405162461bcd60e51b815260206004820152606c6024820152600080516020611f3683398151915260448201527f4b65793a2065697468657220746865204731207369676e61747572652069732060648201527f77726f6e672c206f7220473120616e642047322070726976617465206b65792060848201526b0c8de40dcdee840dac2e8c6d60a31b60a482015260c4016104a3565b6001600160a01b03861660008181526003602090815260408083208982018035825560608b013560019283015590835281842087905586845260029092529182902080546001600160a01b0319168417905590517fe3fb6613af2e8930cf85d47fcf6db10192224a64c6cbe8023e0eee1ba382804191610dfb9160808a0190611e6b565b60405180910390a250949350505050565b606060008367ffffffffffffffff811115610e2957610e29611952565b604051908082528060200260200182016040528015610e52578160200160208202803683370190505b50905060005b8481101561101d576000868683818110610e7457610e74611d09565b919091013560f81c6000818152600460205260409020549092509050801580610ed7575060ff821660009081526004602052604081208054909190610ebb57610ebb611d09565b600091825260209091200154600160c01b900463ffffffff1686105b15610f645760405162461bcd60e51b815260206004820152605160248201527f424c5341706b52656769737472792e67657441706b496e64696365734174426c60448201527f6f636b4e756d6265723a20626c6f636b4e756d626572206973206265666f7265606482015270207468652066697273742075706461746560781b608482015260a4016104a3565b805b80156110075760ff831660009081526004602052604090208790610f8b600184611eb5565b81548110610f9b57610f9b611d09565b600091825260209091200154600160c01b900463ffffffff1611610ff557610fc4600182611eb5565b858581518110610fd657610fd6611d09565b602002602001019063ffffffff16908163ffffffff1681525050611007565b80610fff81611ecc565b915050610f66565b505050808061101590611ee3565b915050610e58565b50949350505050565b336001600160a01b037f000000000000000000000000851356ae760d987e095750cceb3bc6014560891c161461106e5760405162461bcd60e51b81526004016104a390611c29565b6000611079836108eb565b50905061108e8261108983611772565b6110cf565b7ff843ecd53a563675e62107be1494fdde4a3d49aeedaf8d88c616d85346e3500e83610655856001600160a01b031660009081526001602052604090205490565b604080518082019091526000808252602082015260005b835181101561131457600084828151811061110357611103611d09565b0160209081015160f81c60008181526004909252604090912054909150806111935760405162461bcd60e51b815260206004820152603d60248201527f424c5341706b52656769737472792e5f70726f6365737351756f72756d41706b60448201527f5570646174653a2071756f72756d20646f6573206e6f7420657869737400000060648201526084016104a3565b60ff821660009081526005602090815260409182902082518084019093528054835260010154908201526111c790866113b1565b60ff831660008181526005602090815260408083208551808255868401805160019384015590855251835281842094845260049092528220939750919290916112109085611eb5565b8154811061122057611220611d09565b600091825260209091200180549091504363ffffffff908116600160c01b9092041614156112615780546001600160c01b031916604083901c1781556112fd565b805463ffffffff438116600160e01b8181026001600160e01b0394851617855560ff88166000908152600460209081526040808320815160608101835267ffffffffffffffff198b16815280840196875280830185815282546001810184559286529390942093519301805495519251871690940291909516600160c01b026001600160e01b0319949094169190941c17919091179092161790555b50505050808061130c90611ee3565b9150506110e6565b50505050565b6040805180820190915260008082526020820152611336611831565b835181526020808501519082015260408082018490526000908360608460076107d05a03fa90508080156113695761136b565bfe5b50806113a95760405162461bcd60e51b815260206004820152600d60248201526c1958cb5b5d5b0b59985a5b1959609a1b60448201526064016104a3565b505092915050565b60408051808201909152600080825260208201526113cd61184f565b835181526020808501518183015283516040808401919091529084015160608301526000908360808460066107d05a03fa90508080156113695750806113a95760405162461bcd60e51b815260206004820152600d60248201526c1958cb5859190b59985a5b1959609a1b60448201526064016104a3565b61144d61186d565b50604080516080810182527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c28183019081527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed6060830152815281518083019092527f275dc4a288d1afb3cbb1ac09187524c7db36395df7be3b99e673b13a075a65ec82527f1d9befcd05a5323e6da4d435f3b617cdb3af83285c2df711ef39c01571827f9d60208381019190915281019190915290565b604080518082018252858152602080820185905282518084019093528583528201839052600091611534611892565b60005b60028110156116f957600061154d826006611efe565b905084826002811061156157611561611d09565b60200201515183611573836000611f1d565b600c811061158357611583611d09565b602002015284826002811061159a5761159a611d09565b602002015160200151838260016115b19190611f1d565b600c81106115c1576115c1611d09565b60200201528382600281106115d8576115d8611d09565b60200201515151836115eb836002611f1d565b600c81106115fb576115fb611d09565b602002015283826002811061161257611612611d09565b602002015151600160200201518361162b836003611f1d565b600c811061163b5761163b611d09565b602002015283826002811061165257611652611d09565b60200201516020015160006002811061166d5761166d611d09565b60200201518361167e836004611f1d565b600c811061168e5761168e611d09565b60200201528382600281106116a5576116a5611d09565b6020020151602001516001600281106116c0576116c0611d09565b6020020151836116d1836005611f1d565b600c81106116e1576116e1611d09565b602002015250806116f181611ee3565b915050611537565b506117026118b1565b60006020826101808560086107d05a03fa90508080156113695750806117625760405162461bcd60e51b81526020600482015260156024820152741c185a5c9a5b99cb5bdc18dbd9194b59985a5b1959605a1b60448201526064016104a3565b5051151598975050505050505050565b6040805180820190915260008082526020820152815115801561179757506020820151155b156117b5575050604080518082019091526000808252602082015290565b6040518060400160405280836000015181526020017f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd4784602001516117fa9190611d9c565b611824907f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47611eb5565b905292915050565b919050565b60405180606001604052806003906020820280368337509192915050565b60405180608001604052806004906020820280368337509192915050565b60405180604001604052806118806118cf565b815260200161188d6118cf565b905290565b604051806101800160405280600c906020820280368337509192915050565b60405180602001604052806001906020820280368337509192915050565b60405180604001604052806002906020820280368337509192915050565b80356001600160a01b038116811461182c57600080fd5b60006020828403121561191657600080fd5b61191f826118ed565b9392505050565b803560ff8116811461182c57600080fd5b60006020828403121561194957600080fd5b61191f82611926565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff8111828210171561198b5761198b611952565b60405290565b604051601f8201601f1916810167ffffffffffffffff811182821017156119ba576119ba611952565b604052919050565b600080604083850312156119d557600080fd5b6119de836118ed565b915060208084013567ffffffffffffffff808211156119fc57600080fd5b818601915086601f830112611a1057600080fd5b813581811115611a2257611a22611952565b611a34601f8201601f19168501611991565b91508082528784828501011115611a4a57600080fd5b80848401858401376000848284010152508093505050509250929050565b600060208284031215611a7a57600080fd5b5035919050565b8151815260208083015190820152604081016106ff565b60008060408385031215611aab57600080fd5b611ab483611926565b946020939093013593505050565b600080600060608486031215611ad757600080fd5b611ae084611926565b9250602084013563ffffffff81168114611af957600080fd5b929592945050506040919091013590565b6000806000838503610160811215611b2157600080fd5b611b2a856118ed565b9350610100601f1982011215611b3f57600080fd5b602085019250604061011f1982011215611b5857600080fd5b50610120840190509250925092565b600080600060408486031215611b7c57600080fd5b833567ffffffffffffffff80821115611b9457600080fd5b818601915086601f830112611ba857600080fd5b813581811115611bb757600080fd5b876020828501011115611bc957600080fd5b6020928301989097509590910135949350505050565b6020808252825182820181905260009190848201906040850190845b81811015611c1d57835163ffffffff1683529284019291840191600101611bfb565b50909695505050505050565b6020808252604e908201527f424c5341706b52656769737472792e6f6e6c795265676973747279436f6f726460408201527f696e61746f723a2063616c6c6572206973206e6f74207468652072656769737460608201526d393c9031b7b7b93234b730ba37b960911b608082015260a00190565b60018060a01b038416815260006020848184015260606040840152835180606085015260005b81811015611cdf57858101830151858201608001528201611cc3565b81811115611cf1576000608083870101525b50601f01601f19169290920160800195945050505050565b634e487b7160e01b600052603260045260246000fd5b600060408284031215611d3157600080fd5b611d39611968565b82358152602083013560208201528091505092915050565b8881528760208201528660408201528560608201526040856080830137600060c082016000815260408682375050610100810192909252610120820152610140019695505050505050565b600082611db957634e487b7160e01b600052601260045260246000fd5b500690565b600082601f830112611dcf57600080fd5b611dd7611968565b806040840185811115611de957600080fd5b845b81811015611e03578035845260209384019301611deb565b509095945050505050565b600060808284031215611e2057600080fd5b6040516040810181811067ffffffffffffffff82111715611e4357611e43611952565b604052611e508484611dbe565b8152611e5f8460408501611dbe565b60208201529392505050565b823581526020808401359082015260c081016040838184013760808201600081526040808501823750600081529392505050565b634e487b7160e01b600052601160045260246000fd5b600082821015611ec757611ec7611e9f565b500390565b600081611edb57611edb611e9f565b506000190190565b6000600019821415611ef757611ef7611e9f565b5060010190565b6000816000190483118215151615611f1857611f18611e9f565b500290565b60008219821115611f3057611f30611e9f565b50019056fe424c5341706b52656769737472792e7265676973746572424c535075626c6963a26469706673582212204db616f9eb8db4a06fc579da75805915c68b75362267a16d73f4d2b4d189ad5f64736f6c634300080c0033","storage":{"0x0":"0xff"}},"0x14dc79964da2c08b23698b3d3cc7ca32193d9955":{"nonce":0,"balance":"0x21e19e0c9bab2400000","code":"0x","storage":{}},"0x15d34aaf54267db7d7c367839aaf71a00a2c6a65":{"nonce":0,"balance":"0x21e19e0c9bab2400000","code":"0x","storage":{}},"0x1613beb3b2c4f22ee086b2b38c1476a3ce7f78e8":{"nonce":1,"balance":"0x0","code":"0x60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b6100803660046106f1565b610118565b61005b61009336600461070c565b61015f565b3480156100a457600080fd5b506100ad6101d0565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e43660046106f1565b61020b565b3480156100f557600080fd5b506100ad610235565b61010661029b565b61011661011161033a565b610344565b565b610120610368565b6001600160a01b0316336001600160a01b03161415610157576101548160405180602001604052806000815250600061039b565b50565b6101546100fe565b610167610368565b6001600160a01b0316336001600160a01b031614156101c8576101c38383838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506001925061039b915050565b505050565b6101c36100fe565b60006101da610368565b6001600160a01b0316336001600160a01b03161415610200576101fb61033a565b905090565b6102086100fe565b90565b610213610368565b6001600160a01b0316336001600160a01b0316141561015757610154816103c6565b600061023f610368565b6001600160a01b0316336001600160a01b03161415610200576101fb610368565b6060610285838360405180606001604052806027815260200161080b6027913961041a565b9392505050565b6001600160a01b03163b151590565b6102a3610368565b6001600160a01b0316336001600160a01b031614156101165760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b60006101fb6104f7565b3660008037600080366000845af43d6000803e808015610363573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b6103a48361051f565b6000825111806103b15750805b156101c3576103c08383610260565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103ef610368565b604080516001600160a01b03928316815291841660208301520160405180910390a16101548161055f565b60606001600160a01b0384163b6104825760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610331565b600080856001600160a01b03168560405161049d91906107bb565b600060405180830381855af49150503d80600081146104d8576040519150601f19603f3d011682016040523d82523d6000602084013e6104dd565b606091505b50915091506104ed828286610608565b9695505050505050565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61038c565b61052881610641565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6001600160a01b0381166105c45760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b6064820152608401610331565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b60608315610617575081610285565b8251156106275782518084602001fd5b8160405162461bcd60e51b815260040161033191906107d7565b6001600160a01b0381163b6106ae5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610331565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6105e7565b80356001600160a01b03811681146106ec57600080fd5b919050565b60006020828403121561070357600080fd5b610285826106d5565b60008060006040848603121561072157600080fd5b61072a846106d5565b9250602084013567ffffffffffffffff8082111561074757600080fd5b818601915086601f83011261075b57600080fd5b81358181111561076a57600080fd5b87602082850101111561077c57600080fd5b6020830194508093505050509250925092565b60005b838110156107aa578181015183820152602001610792565b838111156103c05750506000910152565b600082516107cd81846020870161078f565b9190910192915050565b60208152600082518060208401526107f681604085016020870161078f565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212202d8aef871a7506c5a3b3c27bcde2c65544a40c9d05e5fba361c75671607f864e64736f6c634300080c0033","storage":{"0x0":"0x1","0x33":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","0x65":"0x84ea74d481ee0a5332c457a4d796187f6ba67feb","0x66":"0x0","0xcc":"0xa0ee7a142d267c1f36714e4a8f75612f20a79720","0xcd":"0xa0ee7a142d267c1f36714e4a8f75612f20a79720","0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc":"0x5f3f1dbd7b74c6b46e8c44f98792a1daf8d69154","0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103":"0xc3e53f4d16ae77db1c982e75a937b9f60fe63690"}},"0x2279b7a0a67db372996a5fab50d91eaa73d2ebe6":{"nonce":1,"balance":"0x0","code":"0x60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b6100803660046106f1565b610118565b61005b61009336600461070c565b61015f565b3480156100a457600080fd5b506100ad6101d0565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e43660046106f1565b61020b565b3480156100f557600080fd5b506100ad610235565b61010661029b565b61011661011161033a565b610344565b565b610120610368565b6001600160a01b0316336001600160a01b03161415610157576101548160405180602001604052806000815250600061039b565b50565b6101546100fe565b610167610368565b6001600160a01b0316336001600160a01b031614156101c8576101c38383838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506001925061039b915050565b505050565b6101c36100fe565b60006101da610368565b6001600160a01b0316336001600160a01b03161415610200576101fb61033a565b905090565b6102086100fe565b90565b610213610368565b6001600160a01b0316336001600160a01b0316141561015757610154816103c6565b600061023f610368565b6001600160a01b0316336001600160a01b03161415610200576101fb610368565b6060610285838360405180606001604052806027815260200161080b6027913961041a565b9392505050565b6001600160a01b03163b151590565b6102a3610368565b6001600160a01b0316336001600160a01b031614156101165760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b60006101fb6104f7565b3660008037600080366000845af43d6000803e808015610363573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b6103a48361051f565b6000825111806103b15750805b156101c3576103c08383610260565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103ef610368565b604080516001600160a01b03928316815291841660208301520160405180910390a16101548161055f565b60606001600160a01b0384163b6104825760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610331565b600080856001600160a01b03168560405161049d91906107bb565b600060405180830381855af49150503d80600081146104d8576040519150601f19603f3d011682016040523d82523d6000602084013e6104dd565b606091505b50915091506104ed828286610608565b9695505050505050565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61038c565b61052881610641565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6001600160a01b0381166105c45760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b6064820152608401610331565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b60608315610617575081610285565b8251156106275782518084602001fd5b8160405162461bcd60e51b815260040161033191906107d7565b6001600160a01b0381163b6106ae5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610331565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6105e7565b80356001600160a01b03811681146106ec57600080fd5b919050565b60006020828403121561070357600080fd5b610285826106d5565b60008060006040848603121561072157600080fd5b61072a846106d5565b9250602084013567ffffffffffffffff8082111561074757600080fd5b818601915086601f83011261075b57600080fd5b81358181111561076a57600080fd5b87602082850101111561077c57600080fd5b6020830194508093505050509250925092565b60005b838110156107aa578181015183820152602001610792565b838111156103c05750506000910152565b600082516107cd81846020870161078f565b9190910192915050565b60208152600082518060208401526107f681604085016020870161078f565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212202d8aef871a7506c5a3b3c27bcde2c65544a40c9d05e5fba361c75671607f864e64736f6c634300080c0033","storage":{"0x0":"0x1","0x33":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","0x97":"0xe7f1725e7734ce288f8367e1bb143e90bb3f0512","0x98":"0x0","0xc9":"0x1","0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc":"0x959922be3caee4b8cd9a407cc3ac1c251c2007b1","0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103":"0x5fbdb2315678afecb367f032d93f642f64180aa3"}},"0x23618e81e3f5cdf7f54c3d65f7fbc0abf5b21e8f":{"nonce":0,"balance":"0x21e19e0c9bab2400000","code":"0x","storage":{}},"0x322813fd9a801c5507c9de605d63cea4f2ce6c44":{"nonce":1,"balance":"0x0","code":"0x608060405234801561001057600080fd5b506004361061018e5760003560e01c80635c975abb116100de578063ab5921e111610097578063df6fadc111610071578063df6fadc114610366578063e3dae51c14610381578063f3e7387514610394578063fabc1cbc146103a757600080fd5b8063ab5921e11461032b578063ce7c2ac214610340578063d9caed121461035357600080fd5b80635c975abb146102c857806361b01b5d146102d05780637a8b2637146102d9578063886f1195146102ec5780638c871019146103055780638f6a62401461031857600080fd5b80633a98ef391161014b578063485cc95511610125578063485cc9551461026b578063553ca5f81461027e578063595c6a67146102915780635ac86ab71461029957600080fd5b80633a98ef391461023857806343fe08b01461024f57806347e7ef241461025857600080fd5b8063019e27291461019357806310d67a2f146101a857806311c70c9d146101bb578063136439dd146101ce5780632495a599146101e157806339b70e3814610211575b600080fd5b6101a66101a13660046117b8565b6103ba565b005b6101a66101b6366004611802565b61049d565b6101a66101c936600461181f565b610550565b6101a66101dc366004611841565b610605565b6032546101f4906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b6101f47f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c981565b61024160335481565b604051908152602001610208565b61024160645481565b61024161026636600461185a565b610749565b6101a6610279366004611886565b6108ed565b61024161028c366004611802565b6109bb565b6101a66109cf565b6102b86102a73660046118bf565b6001805460ff9092161b9081161490565b6040519015158152602001610208565b600154610241565b61024160655481565b6102416102e7366004611841565b610a9b565b6000546101f4906201000090046001600160a01b031681565b610241610313366004611841565b610ae6565b610241610326366004611802565b610af1565b610333610aff565b6040516102089190611912565b61024161034e366004611802565b610b1f565b6101a6610361366004611945565b610bb4565b60645460655460408051928352602083019190915201610208565b61024161038f366004611841565b610d7d565b6102416103a2366004611841565b610db6565b6101a66103b5366004611841565b610dc1565b600054610100900460ff16158080156103da5750600054600160ff909116105b806103f45750303b1580156103f4575060005460ff166001145b6104195760405162461bcd60e51b815260040161041090611986565b60405180910390fd5b6000805460ff19166001179055801561043c576000805461ff0019166101001790555b6104468585610f1d565b610450838361102a565b8015610496576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b600060029054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104f0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061051491906119d4565b6001600160a01b0316336001600160a01b0316146105445760405162461bcd60e51b8152600401610410906119f1565b61054d816110bb565b50565b600060029054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105c791906119d4565b6001600160a01b0316336001600160a01b0316146105f75760405162461bcd60e51b8152600401610410906119f1565b6106018282610f1d565b5050565b60005460405163237dfb4760e11b8152336004820152620100009091046001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610652573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106769190611a3b565b6106925760405162461bcd60e51b815260040161041090611a5d565b6001548181161461070b5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608401610410565b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b6001805460009182918116141561079e5760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b6044820152606401610410565b336001600160a01b037f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c916146108165760405162461bcd60e51b815260206004820181905260248201527f5374726174656779426173652e6f6e6c7953747261746567794d616e616765726044820152606401610410565b61082084846111c0565b60335460006108316103e883611abb565b905060006103e86108406112a2565b61084a9190611abb565b905060006108588783611ad3565b9050806108658489611aea565b61086f9190611b09565b9550856108d55760405162461bcd60e51b815260206004820152602e60248201527f5374726174656779426173652e6465706f7369743a206e65775368617265732060448201526d63616e6e6f74206265207a65726f60901b6064820152608401610410565b6108df8685611abb565b603355505050505092915050565b600054610100900460ff161580801561090d5750600054600160ff909116105b806109275750303b158015610927575060005460ff166001145b6109435760405162461bcd60e51b815260040161041090611986565b6000805460ff191660011790558015610966576000805461ff0019166101001790555b610970838361102a565b80156109b6576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b60006109c96102e783610b1f565b92915050565b60005460405163237dfb4760e11b8152336004820152620100009091046001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610a1c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a409190611a3b565b610a5c5760405162461bcd60e51b815260040161041090611a5d565b600019600181905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b6000806103e8603354610aae9190611abb565b905060006103e8610abd6112a2565b610ac79190611abb565b905081610ad48583611aea565b610ade9190611b09565b949350505050565b60006109c982610d7d565b60006109c96103a283610b1f565b60606040518060800160405280604d8152602001611b61604d9139905090565b604051633d3f06c960e11b81526001600160a01b0382811660048301523060248301526000917f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c990911690637a7e0d9290604401602060405180830381865afa158015610b90573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109c99190611b2b565b6001805460029081161415610c075760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b6044820152606401610410565b336001600160a01b037f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c91614610c7f5760405162461bcd60e51b815260206004820181905260248201527f5374726174656779426173652e6f6e6c7953747261746567794d616e616765726044820152606401610410565b610c8a848484611314565b60335480831115610d195760405162461bcd60e51b815260206004820152604d60248201527f5374726174656779426173652e77697468647261773a20616d6f756e7453686160448201527f726573206d757374206265206c657373207468616e206f7220657175616c207460648201526c6f20746f74616c53686172657360981b608482015260a401610410565b6000610d276103e883611abb565b905060006103e8610d366112a2565b610d409190611abb565b9050600082610d4f8784611aea565b610d599190611b09565b9050610d658685611ad3565b603355610d73888883611397565b5050505050505050565b6000806103e8603354610d909190611abb565b905060006103e8610d9f6112a2565b610da99190611abb565b905080610ad48386611aea565b60006109c982610a9b565b600060029054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e14573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e3891906119d4565b6001600160a01b0316336001600160a01b031614610e685760405162461bcd60e51b8152600401610410906119f1565b600154198119600154191614610ee65760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608401610410565b600181905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200161073e565b60645460408051918252602082018490527ff97ed4e083acac67830025ecbc756d8fe847cdbdca4cee3fe1e128e98b54ecb5910160405180910390a160655460408051918252602082018390527f6ab181e0440bfbf4bacdf2e99674735ce6638005490688c5f994f5399353e452910160405180910390a18082111561101f5760405162461bcd60e51b815260206004820152604b60248201527f53747261746567794261736554564c4c696d6974732e5f73657454564c4c696d60448201527f6974733a206d61785065724465706f7369742065786365656473206d6178546f60648201526a74616c4465706f7369747360a81b608482015260a401610410565b606491909155606555565b600054610100900460ff166110955760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401610410565b603280546001600160a01b0319166001600160a01b0384161790556106018160006113ab565b6001600160a01b0381166111495760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a401610410565b600054604080516001600160a01b03620100009093048316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1600080546001600160a01b03909216620100000262010000600160b01b0319909216919091179055565b60645481111561122a5760405162461bcd60e51b815260206004820152602f60248201527f53747261746567794261736554564c4c696d6974733a206d617820706572206460448201526e195c1bdcda5d08195e18d959591959608a1b6064820152608401610410565b6065546112356112a2565b11156112985760405162461bcd60e51b815260206004820152602c60248201527f53747261746567794261736554564c4c696d6974733a206d6178206465706f7360448201526b1a5d1cc8195e18d95959195960a21b6064820152608401610410565b6106018282611497565b6032546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa1580156112eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061130f9190611b2b565b905090565b6032546001600160a01b038381169116146109b65760405162461bcd60e51b815260206004820152603b60248201527f5374726174656779426173652e77697468647261773a2043616e206f6e6c792060448201527f77697468647261772074686520737472617465677920746f6b656e00000000006064820152608401610410565b6109b66001600160a01b0383168483611513565b6000546201000090046001600160a01b03161580156113d257506001600160a01b03821615155b6114545760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a401610410565b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2610601826110bb565b6032546001600160a01b038381169116146106015760405162461bcd60e51b815260206004820152603660248201527f5374726174656779426173652e6465706f7369743a2043616e206f6e6c79206460448201527532b837b9b4ba103ab73232b9363cb4b733aa37b5b2b760511b6064820152608401610410565b604080516001600160a01b03848116602483015260448083018590528351808403909101815260649092018352602080830180516001600160e01b031663a9059cbb60e01b17905283518085019094528084527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564908401526109b6928692916000916115a3918516908490611620565b8051909150156109b657808060200190518101906115c19190611a3b565b6109b65760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610410565b606061162f8484600085611639565b90505b9392505050565b60608247101561169a5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610410565b6001600160a01b0385163b6116f15760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610410565b600080866001600160a01b0316858760405161170d9190611b44565b60006040518083038185875af1925050503d806000811461174a576040519150601f19603f3d011682016040523d82523d6000602084013e61174f565b606091505b509150915061175f82828661176a565b979650505050505050565b60608315611779575081611632565b8251156117895782518084602001fd5b8160405162461bcd60e51b81526004016104109190611912565b6001600160a01b038116811461054d57600080fd5b600080600080608085870312156117ce57600080fd5b843593506020850135925060408501356117e7816117a3565b915060608501356117f7816117a3565b939692955090935050565b60006020828403121561181457600080fd5b8135611632816117a3565b6000806040838503121561183257600080fd5b50508035926020909101359150565b60006020828403121561185357600080fd5b5035919050565b6000806040838503121561186d57600080fd5b8235611878816117a3565b946020939093013593505050565b6000806040838503121561189957600080fd5b82356118a4816117a3565b915060208301356118b4816117a3565b809150509250929050565b6000602082840312156118d157600080fd5b813560ff8116811461163257600080fd5b60005b838110156118fd5781810151838201526020016118e5565b8381111561190c576000848401525b50505050565b60208152600082518060208401526119318160408501602087016118e2565b601f01601f19169190910160400192915050565b60008060006060848603121561195a57600080fd5b8335611965816117a3565b92506020840135611975816117a3565b929592945050506040919091013590565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b6000602082840312156119e657600080fd5b8151611632816117a3565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b600060208284031215611a4d57600080fd5b8151801515811461163257600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b60008219821115611ace57611ace611aa5565b500190565b600082821015611ae557611ae5611aa5565b500390565b6000816000190483118215151615611b0457611b04611aa5565b500290565b600082611b2657634e487b7160e01b600052601260045260246000fd5b500490565b600060208284031215611b3d57600080fd5b5051919050565b60008251611b568184602087016118e2565b919091019291505056fe4261736520537472617465677920696d706c656d656e746174696f6e20746f20696e68657269742066726f6d20666f72206d6f726520636f6d706c657820696d706c656d656e746174696f6e73a2646970667358221220b9e1998196c21f2c1b5e003e1d12dcabb988e50f661fcc6f65cc67588dc8099364736f6c634300080c0033","storage":{"0x0":"0xff"}},"0x36c02da8a0983159322a80ffe9f24b1acff8b570":{"nonce":1,"balance":"0x0","code":"0x608060405234801561001057600080fd5b50600436106102945760003560e01c80635df45946116101675780639feab859116100ce578063d75b4c8811610087578063d75b4c88146106f5578063dd8283f314610708578063e65797ad1461071b578063f2fde38b146107be578063fabc1cbc146107d1578063fd39105a146107e457600080fd5b80639feab85914610659578063a50857bf14610680578063c391425e14610693578063ca0de882146106b3578063ca4f2d97146106da578063d72d8dd6146106ed57600080fd5b8063871ef04911610120578063871ef049146105cc578063886f1195146105df5780638da5cb5b146105f85780639aa1653d146106005780639b5d177b1461061f5780639e9923c21461063257600080fd5b80635df459461461053d5780636347c9001461056457806368304835146105775780636e3b17db1461059e578063715018a6146105b157806384ca5213146105b957600080fd5b806328f61b311161020b5780635140a548116101c45780635140a548146104c85780635865c60c146104db578063595c6a67146104fb5780635ac86ab7146105035780635b0b829f146105225780635c975abb1461053557600080fd5b806328f61b3114610435578063296bb0641461044857806329d1e0c31461045b5780632cdd1e861461046e5780633998fdd3146104815780633c2a7f4c146104a857600080fd5b806310d67a2f1161025d57806310d67a2f1461034a57806313542a4e1461035d578063136439dd146103865780631478851f146103995780631eb812da146103cc578063249a0c421461041557600080fd5b8062cf2ab51461029957806303fd3492146102ae57806304ec6351146102e1578063054310e61461030c5780630cf4b76714610337575b600080fd5b6102ac6102a73660046148b5565b610820565b005b6102ce6102bc3660046148f6565b60009081526098602052604090205490565b6040519081526020015b60405180910390f35b6102f46102ef366004614921565b610936565b6040516001600160c01b0390911681526020016102d8565b609d5461031f906001600160a01b031681565b6040516001600160a01b0390911681526020016102d8565b6102ac610345366004614a40565b610b2c565b6102ac610358366004614ab5565b610c14565b6102ce61036b366004614ab5565b6001600160a01b031660009081526099602052604090205490565b6102ac6103943660046148f6565b610cc7565b6103bc6103a73660046148f6565b609a6020526000908152604090205460ff1681565b60405190151581526020016102d8565b6103df6103da366004614ad2565b610e04565b60408051825163ffffffff908116825260208085015190911690820152918101516001600160c01b0316908201526060016102d8565b6102ce610423366004614b05565b609b6020526000908152604090205481565b609e5461031f906001600160a01b031681565b61031f6104563660046148f6565b610e95565b6102ac610469366004614ab5565b610f21565b6102ac61047c366004614ab5565b610f32565b61031f7f000000000000000000000000a82ff9afd8f496c3d6ac40e2a0f282e47488cfc981565b6104bb6104b6366004614ab5565b610f43565b6040516102d89190614b20565b6102ac6104d6366004614b78565b610fc2565b6104ee6104e9366004614ab5565b6114d3565b6040516102d89190614c1b565b6102ac611547565b6103bc610511366004614b05565b6001805460ff9092161b9081161490565b6102ac610530366004614ca0565b611613565b6001546102ce565b61031f7f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f3681565b61031f6105723660046148f6565b6116aa565b61031f7f000000000000000000000000998abeb3e57409262ae5b751f60747921b33613e81565b6102ac6105ac366004614cd4565b6116d4565b6102ac611794565b6102ce6105c7366004614d8b565b6117a8565b6102f46105da3660046148f6565b6117f2565b60005461031f906201000090046001600160a01b031681565b61031f6117fd565b60965461060d9060ff1681565b60405160ff90911681526020016102d8565b6102ac61062d366004614f24565b611816565b61031f7f00000000000000000000000095401dc811bb5740090279ba06cfa8fcf611377881565b6102ce7f2bd82124057f0913bc3b772ce7b83e8057c1ad1f3510fc83778be20f10ec5de681565b6102ac61068e36600461501d565b611b4e565b6106a66106a13660046150c5565b611cd2565b6040516102d8919061516a565b6102ce7f4d404e3276e7ac2163d8ee476afa6a41d1f68fb71f2d8b6546b24e55ce01b72a81565b6102ac6106e83660046151b4565b611d8b565b609c546102ce565b6102ac61070336600461529a565b611df2565b6102ac61071636600461544d565b611e05565b61078a610729366004614b05565b60408051606080820183526000808352602080840182905292840181905260ff9490941684526097825292829020825193840183525463ffffffff8116845261ffff600160201b8204811692850192909252600160301b9004169082015290565b60408051825163ffffffff16815260208084015161ffff9081169183019190915292820151909216908201526060016102d8565b6102ac6107cc366004614ab5565b612109565b6102ac6107df3660046148f6565b61217f565b6108136107f2366004614ab5565b6001600160a01b031660009081526099602052604090206001015460ff1690565b6040516102d89190615521565b600154600290600490811614156108525760405162461bcd60e51b81526004016108499061552f565b60405180910390fd5b60005b8281101561093057600084848381811061087157610871615566565b90506020020160208101906108869190614ab5565b6001600160a01b03811660009081526099602090815260408083208151808301909252805482526001810154949550929390929183019060ff1660028111156108d1576108d1614be3565b60028111156108e2576108e2614be3565b905250805190915060006108f5826122db565b9050600061090b826001600160c01b0316612344565b9050610918858583612410565b5050505050808061092890615592565b915050610855565b50505050565b600083815260986020526040812080548291908490811061095957610959615566565b600091825260209182902060408051606081018252929091015463ffffffff808216808552600160201b8304821695850195909552600160401b9091046001600160c01b03169183019190915290925085161015610a535760405162461bcd60e51b815260206004820152606560248201527f5265676973747279436f6f7264696e61746f722e67657451756f72756d42697460448201527f6d61704174426c6f636b4e756d6265724279496e6465783a2071756f72756d4260648201527f69746d61705570646174652069732066726f6d20616674657220626c6f636b4e6084820152643ab6b132b960d91b60a482015260c401610849565b602081015163ffffffff161580610a795750806020015163ffffffff168463ffffffff16105b610b205760405162461bcd60e51b815260206004820152606660248201527f5265676973747279436f6f7264696e61746f722e67657451756f72756d42697460448201527f6d61704174426c6f636b4e756d6265724279496e6465783a2071756f72756d4260648201527f69746d61705570646174652069732066726f6d206265666f726520626c6f636b608482015265273ab6b132b960d11b60a482015260c401610849565b60400151949350505050565b60013360009081526099602052604090206001015460ff166002811115610b5557610b55614be3565b14610bc85760405162461bcd60e51b815260206004820152603c60248201527f5265676973747279436f6f7264696e61746f722e757064617465536f636b657460448201527f3a206f70657261746f72206973206e6f742072656769737465726564000000006064820152608401610849565b33600090815260996020526040908190205490517fec2963ab21c1e50e1e582aa542af2e4bf7bf38e6e1403c27b42e1c5d6e621eaa90610c099084906155fa565b60405180910390a250565b600060029054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c67573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c8b919061560d565b6001600160a01b0316336001600160a01b031614610cbb5760405162461bcd60e51b81526004016108499061562a565b610cc4816124fd565b50565b60005460405163237dfb4760e11b8152336004820152620100009091046001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610d14573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d389190615674565b610d545760405162461bcd60e51b815260040161084990615696565b60015481811614610dcd5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608401610849565b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d90602001610c09565b60408051606081018252600080825260208201819052918101919091526000838152609860205260409020805483908110610e4157610e41615566565b600091825260209182902060408051606081018252919092015463ffffffff8082168352600160201b820416938201939093526001600160c01b03600160401b909304929092169082015290505b92915050565b6040516308f6629d60e31b8152600481018290526000907f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f366001600160a01b0316906347b314e890602401602060405180830381865afa158015610efd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e8f919061560d565b610f29612602565b610cc481612661565b610f3a612602565b610cc4816126ca565b6040805180820190915260008082526020820152610e8f610fbd7f2bd82124057f0913bc3b772ce7b83e8057c1ad1f3510fc83778be20f10ec5de684604051602001610fa29291909182526001600160a01b0316602082015260400190565b60405160208183030381529060405280519060200120612733565b612781565b60015460029060049081161415610feb5760405162461bcd60e51b81526004016108499061552f565b600061103384848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060965460ff1691506128119050565b90508483146110a45760405162461bcd60e51b81526020600482015260436024820152600080516020615d2e83398151915260448201527f6f7273466f7251756f72756d3a20696e707574206c656e677468206d69736d616064820152620e8c6d60eb1b608482015260a401610849565b60005b838110156114ca5760008585838181106110c3576110c3615566565b919091013560f81c915036905060008989858181106110e4576110e4615566565b90506020028101906110f691906156de565b6040516379a0849160e11b815260ff8616600482015291935091507f00000000000000000000000095401dc811bb5740090279ba06cfa8fcf61137786001600160a01b03169063f341092290602401602060405180830381865afa158015611162573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111869190615727565b63ffffffff1681146112225760405162461bcd60e51b81526020600482015260656024820152600080516020615d2e83398151915260448201527f6f7273466f7251756f72756d3a206e756d626572206f6620757064617465642060648201527f6f70657261746f727320646f6573206e6f74206d617463682071756f72756d206084820152641d1bdd185b60da1b60a482015260c401610849565b6000805b8281101561146957600084848381811061124257611242615566565b90506020020160208101906112579190614ab5565b6001600160a01b03811660009081526099602090815260408083208151808301909252805482526001810154949550929390929183019060ff1660028111156112a2576112a2614be3565b60028111156112b3576112b3614be3565b905250805190915060006112c6826122db565b905060016001600160c01b03821660ff8b161c81161461134a5760405162461bcd60e51b815260206004820152604460248201819052600080516020615d2e833981519152908201527f6f7273466f7251756f72756d3a206f70657261746f72206e6f7420696e2071756064820152636f72756d60e01b608482015260a401610849565b856001600160a01b0316846001600160a01b0316116113f55760405162461bcd60e51b81526020600482015260676024820152600080516020615d2e83398151915260448201527f6f7273466f7251756f72756d3a206f70657261746f7273206172726179206d7560648201527f737420626520736f7274656420696e20617363656e64696e6720616464726573608482015266399037b93232b960c91b60a482015260c401610849565b5061145383838f8f8d908e600161140c9190615744565b926114199392919061575c565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061241092505050565b50909250611462905081615592565b9050611226565b5060ff84166000818152609b6020908152604091829020439081905591519182527f46077d55330763f16269fd75e5761663f4192d2791747c0189b16ad31db07db4910160405180910390a250505050806114c390615592565b90506110a7565b50505050505050565b60408051808201909152600080825260208201526001600160a01b0382166000908152609960209081526040918290208251808401909352805483526001810154909183019060ff16600281111561152d5761152d614be3565b600281111561153e5761153e614be3565b90525092915050565b60005460405163237dfb4760e11b8152336004820152620100009091046001600160a01b0316906346fbf68e90602401602060405180830381865afa158015611594573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115b89190615674565b6115d45760405162461bcd60e51b815260040161084990615696565b600019600181905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b61161b612602565b609654829060ff9081169082161061169b5760405162461bcd60e51b815260206004820152603760248201527f5265676973747279436f6f7264696e61746f722e71756f72756d45786973747360448201527f3a2071756f72756d20646f6573206e6f742065786973740000000000000000006064820152608401610849565b6116a583836128a2565b505050565b609c81815481106116ba57600080fd5b6000918252602090912001546001600160a01b0316905081565b609e546001600160a01b031633146117545760405162461bcd60e51b815260206004820152603a60248201527f5265676973747279436f6f7264696e61746f722e6f6e6c79456a6563746f723a60448201527f2063616c6c6572206973206e6f742074686520656a6563746f720000000000006064820152608401610849565b6116a58383838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061294f92505050565b61179c612602565b6117a66000612dc1565b565b60006117e87f4d404e3276e7ac2163d8ee476afa6a41d1f68fb71f2d8b6546b24e55ce01b72a8787878787604051602001610fa296959493929190615786565b9695505050505050565b6000610e8f826122db565b60006118116064546001600160a01b031690565b905090565b60018054600091908116141561183e5760405162461bcd60e51b81526004016108499061552f565b8389146118c15760405162461bcd60e51b8152602060048201526044602482018190527f5265676973747279436f6f7264696e61746f722e72656769737465724f706572908201527f61746f7257697468436875726e3a20696e707574206c656e677468206d69736d6064820152630c2e8c6d60e31b608482015260a401610849565b60006118cd3388612e13565b905061192d33828888808060200260200160405190810160405280939291908181526020016000905b82821015611922576119136040830286013681900381019061580b565b815260200190600101906118f6565b505050505087612f44565b600061197433838e8e8e8e8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508c92506130d1915050565b905060005b8b811015611b3f576000609760008f8f8581811061199957611999615566565b919091013560f81c82525060208082019290925260409081016000208151606081018352905463ffffffff811680835261ffff600160201b8304811695840195909552600160301b90910490931691810191909152845180519193509084908110611a0657611a06615566565b602002602001015163ffffffff161115611b2c57611aa78e8e84818110611a2f57611a2f615566565b9050013560f81c60f81b60f81c84604001518481518110611a5257611a52615566565b60200260200101513386602001518681518110611a7157611a71615566565b60200260200101518d8d88818110611a8b57611a8b615566565b905060400201803603810190611aa1919061580b565b866135e8565b611b2c898984818110611abc57611abc615566565b9050604002016020016020810190611ad49190614ab5565b8f8f8590866001611ae59190615744565b92611af29392919061575c565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061294f92505050565b5080611b3781615592565b915050611979565b50505050505050505050505050565b600180546000919081161415611b765760405162461bcd60e51b81526004016108499061552f565b6000611b823385612e13565b90506000611bcb33838b8b8b8b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508c92506130d1915050565b51905060005b88811015611cc65760008a8a83818110611bed57611bed615566565b919091013560f81c600081815260976020526040902054855191935063ffffffff169150849084908110611c2357611c23615566565b602002602001015163ffffffff161115611cb35760405162461bcd60e51b8152602060048201526044602482018190527f5265676973747279436f6f7264696e61746f722e72656769737465724f706572908201527f61746f723a206f70657261746f7220636f756e742065786365656473206d6178606482015263696d756d60e01b608482015260a401610849565b5080611cbe81615592565b915050611bd1565b50505050505050505050565b6060600082516001600160401b03811115611cef57611cef614959565b604051908082528060200260200182016040528015611d18578160200160208202803683370190505b50905060005b8351811015611d8357611d4a85858381518110611d3d57611d3d615566565b60200260200101516138bd565b828281518110611d5c57611d5c615566565b63ffffffff9092166020928302919091019091015280611d7b81615592565b915050611d1e565b509392505050565b6001805460029081161415611db25760405162461bcd60e51b81526004016108499061552f565b6116a53384848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061294f92505050565b611dfa612602565b6116a58383836139f9565b600054610100900460ff1615808015611e255750600054600160ff909116105b80611e3f5750303b158015611e3f575060005460ff166001145b611ea25760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610849565b6000805460ff191660011790558015611ec5576000805461ff0019166101001790555b82518451148015611ed7575081518351145b611f415760405162461bcd60e51b815260206004820152603560248201527f5265676973747279436f6f7264696e61746f722e696e697469616c697a653a206044820152740d2dce0eae840d8cadccee8d040dad2e6dac2e8c6d605b1b6064820152608401610849565b611f4a89612dc1565b611f548686613c10565b611f5d88612661565b611f66876126ca565b609c80546001818101835560008381527faf85b9071dfafeac1409d3f1d19bafc9bc7c37974cde8df0ee6168f0086e539c92830180546001600160a01b037f000000000000000000000000998abeb3e57409262ae5b751f60747921b33613e81166001600160a01b03199283161790925585548085018755850180547f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f36841690831617905585549384019095559190920180547f00000000000000000000000095401dc811bb5740090279ba06cfa8fcf611377890921691909316179091555b84518110156120b7576120a585828151811061206457612064615566565b602002602001015185838151811061207e5761207e615566565b602002602001015185848151811061209857612098615566565b60200260200101516139f9565b806120af81615592565b915050612046565b5080156120fe576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050505050565b612111612602565b6001600160a01b0381166121765760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610849565b610cc481612dc1565b600060029054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156121d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121f6919061560d565b6001600160a01b0316336001600160a01b0316146122265760405162461bcd60e51b81526004016108499061562a565b6001541981196001541916146122a45760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608401610849565b600181905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c90602001610c09565b600081815260986020526040812054806122f85750600092915050565b6000838152609860205260409020612311600183615827565b8154811061232157612321615566565b600091825260209091200154600160401b90046001600160c01b03169392505050565b606060008061235284613d00565b61ffff166001600160401b0381111561236d5761236d614959565b6040519080825280601f01601f191660200182016040528015612397576020820181803683370190505b5090506000805b8251821080156123af575061010081105b15612406576001811b9350858416156123f6578060f81b8383815181106123d8576123d8615566565b60200101906001600160f81b031916908160001a9053508160010191505b6123ff81615592565b905061239e565b5090949350505050565b60018260200151600281111561242857612428614be3565b1461243257505050565b81516040516333567f7f60e11b81526000906001600160a01b037f000000000000000000000000998abeb3e57409262ae5b751f60747921b33613e16906366acfefe906124879088908690889060040161583e565b6020604051808303816000875af11580156124a6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124ca919061586e565b90506001600160c01b038116156124f6576124f6856124f1836001600160c01b0316612344565b61294f565b5050505050565b6001600160a01b03811661258b5760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a401610849565b600054604080516001600160a01b03620100009093048316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1600080546001600160a01b03909216620100000262010000600160b01b0319909216919091179055565b3361260b6117fd565b6001600160a01b0316146117a65760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610849565b609d54604080516001600160a01b03928316815291831660208301527f315457d8a8fe60f04af17c16e2f5a5e1db612b31648e58030360759ef8f3528c910160405180910390a1609d80546001600160a01b0319166001600160a01b0392909216919091179055565b609e54604080516001600160a01b03928316815291831660208301527f8f30ab09f43a6c157d7fce7e0a13c003042c1c95e8a72e7a146a21c0caa24dc9910160405180910390a1609e80546001600160a01b0319166001600160a01b0392909216919091179055565b6000610e8f612740613d2b565b8360405161190160f01b6020820152602281018390526042810182905260009060620160405160208183030381529060405280519060200120905092915050565b6040805180820190915260008082526020820152600080806127b1600080516020615d6e833981519152866158ad565b90505b6127bd81613e52565b9093509150600080516020615d6e8339815191528283098314156127f7576040805180820190915290815260208101919091529392505050565b600080516020615d6e8339815191526001820890506127b4565b60008061281d84613ed4565b9050808360ff166001901b1161289b5760405162461bcd60e51b815260206004820152603f60248201527f4269746d61705574696c732e6f72646572656442797465734172726179546f4260448201527f69746d61703a206269746d61702065786365656473206d61782076616c7565006064820152608401610849565b9392505050565b60ff8216600081815260976020908152604091829020845181548684018051888701805163ffffffff90951665ffffffffffff199094168417600160201b61ffff938416021767ffff0000000000001916600160301b95831695909502949094179094558551918252518316938101939093525116918101919091527f3ee6fe8d54610244c3e9d3c066ae4aee997884aa28f10616ae821925401318ac9060600160405180910390a25050565b6001600160a01b0382166000908152609960205260409020805460018083015460ff16600281111561298357612983614be3565b14612a025760405162461bcd60e51b815260206004820152604360248201527f5265676973747279436f6f7264696e61746f722e5f646572656769737465724f60448201527f70657261746f723a206f70657261746f72206973206e6f7420726567697374656064820152621c995960ea1b608482015260a401610849565b609654600090612a1690859060ff16612811565b90506000612a23836122db565b90506001600160c01b038216612aa15760405162461bcd60e51b815260206004820152603b60248201527f5265676973747279436f6f7264696e61746f722e5f646572656769737465724f60448201527f70657261746f723a206269746d61702063616e6e6f74206265203000000000006064820152608401610849565b612ab86001600160c01b0383811690831681161490565b612b505760405162461bcd60e51b815260206004820152605960248201527f5265676973747279436f6f7264696e61746f722e5f646572656769737465724f60448201527f70657261746f723a206f70657261746f72206973206e6f74207265676973746560648201527f72656420666f72207370656369666965642071756f72756d7300000000000000608482015260a401610849565b6001600160c01b0382811619821616612b698482614061565b6001600160c01b038116612c385760018501805460ff191660021790556040516351b27a6d60e11b81526001600160a01b0388811660048301527f000000000000000000000000a82ff9afd8f496c3d6ac40e2a0f282e47488cfc9169063a364f4da90602401600060405180830381600087803b158015612be957600080fd5b505af1158015612bfd573d6000803e3d6000fd5b50506040518692506001600160a01b038a1691507f396fdcb180cb0fea26928113fb0fd1c3549863f9cd563e6a184f1d578116c8e490600090a35b60405163f4e24fe560e01b81526001600160a01b037f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f36169063f4e24fe590612c86908a908a906004016158c1565b600060405180830381600087803b158015612ca057600080fd5b505af1158015612cb4573d6000803e3d6000fd5b505060405163bd29b8cd60e01b81526001600160a01b037f000000000000000000000000998abeb3e57409262ae5b751f60747921b33613e16925063bd29b8cd9150612d069087908a906004016158e5565b600060405180830381600087803b158015612d2057600080fd5b505af1158015612d34573d6000803e3d6000fd5b505060405163bd29b8cd60e01b81526001600160a01b037f00000000000000000000000095401dc811bb5740090279ba06cfa8fcf611377816925063bd29b8cd9150612d869087908a906004016158e5565b600060405180830381600087803b158015612da057600080fd5b505af1158015612db4573d6000803e3d6000fd5b5050505050505050505050565b606480546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6040516309aa152760e11b81526001600160a01b0383811660048301526000917f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f36909116906313542a4e90602401602060405180830381865afa158015612e7e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ea291906158fe565b905080610e8f577f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f366001600160a01b031663bf79ce588484612ee387610f43565b6040518463ffffffff1660e01b8152600401612f0193929190615917565b6020604051808303816000875af1158015612f20573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061289b91906158fe565b6020808201516000908152609a909152604090205460ff1615612fea5760405162461bcd60e51b815260206004820152605260248201527f5265676973747279436f6f7264696e61746f722e5f766572696679436875726e60448201527f417070726f7665725369676e61747572653a20636875726e417070726f766572606482015271081cd85b1d08185b1c9958591e481d5cd95960721b608482015260a401610849565b428160400151101561307f5760405162461bcd60e51b815260206004820152605260248201527f5265676973747279436f6f7264696e61746f722e5f766572696679436875726e60448201527f417070726f7665725369676e61747572653a20636875726e417070726f766572606482015271081cda59db985d1d5c9948195e1c1a5c995960721b608482015260a401610849565b602080820180516000908152609a909252604091829020805460ff19166001179055609d54905191830151610930926001600160a01b03909216916130ca91889188918891906117a8565b8351614221565b6130f560405180606001604052806060815260200160608152602001606081525090565b600061313d86868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060965460ff1691506128119050565b9050600061314a886122db565b90506001600160c01b0382166131c85760405162461bcd60e51b815260206004820152603960248201527f5265676973747279436f6f7264696e61746f722e5f72656769737465724f706560448201527f7261746f723a206269746d61702063616e6e6f742062652030000000000000006064820152608401610849565b8082166001600160c01b03161561327e5760405162461bcd60e51b815260206004820152606860248201527f5265676973747279436f6f7264696e61746f722e5f72656769737465724f706560448201527f7261746f723a206f70657261746f7220616c726561647920726567697374657260648201527f656420666f7220736f6d652071756f72756d73206265696e672072656769737460848201526732b932b2103337b960c11b60a482015260c401610849565b6001600160c01b03818116908316176132978982614061565b887fec2963ab21c1e50e1e582aa542af2e4bf7bf38e6e1403c27b42e1c5d6e621eaa876040516132c791906155fa565b60405180910390a260016001600160a01b038b1660009081526099602052604090206001015460ff16600281111561330157613301614be3565b1461341a576040805180820182528a8152600160208083018281526001600160a01b038f166000908152609990925293902082518155925183820180549394939192909160ff19169083600281111561335c5761335c614be3565b021790555050604051639926ee7d60e01b81526001600160a01b037f000000000000000000000000a82ff9afd8f496c3d6ac40e2a0f282e47488cfc9169150639926ee7d906133b1908d908990600401615996565b600060405180830381600087803b1580156133cb57600080fd5b505af11580156133df573d6000803e3d6000fd5b50506040518b92506001600160a01b038d1691507fe8e68cef1c3a761ed7be7e8463a375f27f7bc335e51824223cacce636ec5c3fe90600090a35b604051631fd93ca960e11b81526001600160a01b037f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f361690633fb279529061346a908d908c908c90600401615a0a565b600060405180830381600087803b15801561348457600080fd5b505af1158015613498573d6000803e3d6000fd5b5050604051632550477760e01b81526001600160a01b037f000000000000000000000000998abeb3e57409262ae5b751f60747921b33613e169250632550477791506134ee908d908d908d908d90600401615a2f565b6000604051808303816000875af115801561350d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526135359190810190615abb565b60408087019190915260208601919091525162bff04d60e01b81526001600160a01b037f00000000000000000000000095401dc811bb5740090279ba06cfa8fcf6113778169062bff04d90613592908c908c908c90600401615b1e565b6000604051808303816000875af11580156135b1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526135d99190810190615b38565b84525050509695505050505050565b6020808301516001600160a01b0380821660008181526099909452604090932054919290871614156136685760405162461bcd60e51b81526020600482015260356024820152600080516020615d4e83398151915260448201527439371d1031b0b73737ba1031b43ab9371039b2b63360591b6064820152608401610849565b8760ff16846000015160ff16146136e55760405162461bcd60e51b81526020600482015260476024820152600080516020615d4e83398151915260448201527f726e3a2071756f72756d4e756d626572206e6f74207468652073616d65206173606482015266081cda59db995960ca1b608482015260a401610849565b604051635401ed2760e01b81526004810182905260ff891660248201526000907f000000000000000000000000998abeb3e57409262ae5b751f60747921b33613e6001600160a01b031690635401ed2790604401602060405180830381865afa158015613756573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061377a9190615bd1565b905061378681856143db565b6001600160601b0316866001600160601b0316116138195760405162461bcd60e51b81526020600482015260566024820152600080516020615d4e83398151915260448201527f726e3a20696e636f6d696e67206f70657261746f722068617320696e7375666660648201527534b1b4b2b73a1039ba30b5b2903337b91031b43ab93760511b608482015260a401610849565b61382388856143ff565b6001600160601b0316816001600160601b0316106120fe5760405162461bcd60e51b815260206004820152605c6024820152600080516020615d4e83398151915260448201527f726e3a2063616e6e6f74206b69636b206f70657261746f722077697468206d6f60648201527f7265207468616e206b69636b424950734f66546f74616c5374616b6500000000608482015260a401610849565b600081815260986020526040812054815b8181101561394f5760016138e28284615827565b6138ec9190615827565b92508463ffffffff16609860008681526020019081526020016000208463ffffffff168154811061391f5761391f615566565b60009182526020909120015463ffffffff161161393d575050610e8f565b8061394781615592565b9150506138ce565b5060405162461bcd60e51b815260206004820152606c60248201527f5265676973747279436f6f7264696e61746f722e67657451756f72756d42697460448201527f6d6170496e6465784174426c6f636b4e756d6265723a206e6f206269746d617060648201527f2075706461746520666f756e6420666f72206f70657261746f7249642061742060848201526b313637b1b590373ab6b132b960a11b60a482015260c401610849565b60965460ff1660c08110613a6d5760405162461bcd60e51b815260206004820152603560248201527f5265676973747279436f6f7264696e61746f722e63726561746551756f72756d6044820152740e881b585e081c5d5bdc9d5b5cc81c995858da1959605a1b6064820152608401610849565b613a78816001615bee565b6096805460ff191660ff9290921691909117905580613a9781866128a2565b60405160016296b58960e01b031981526001600160a01b037f000000000000000000000000998abeb3e57409262ae5b751f60747921b33613e169063ff694a7790613aea90849088908890600401615c13565b600060405180830381600087803b158015613b0457600080fd5b505af1158015613b18573d6000803e3d6000fd5b505060405163136ca0f960e11b815260ff841660048201527f00000000000000000000000095401dc811bb5740090279ba06cfa8fcf61137786001600160a01b031692506326d941f29150602401600060405180830381600087803b158015613b8057600080fd5b505af1158015613b94573d6000803e3d6000fd5b505060405163136ca0f960e11b815260ff841660048201527f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f366001600160a01b031692506326d941f29150602401600060405180830381600087803b158015613bfc57600080fd5b505af11580156120fe573d6000803e3d6000fd5b6000546201000090046001600160a01b0316158015613c3757506001600160a01b03821615155b613cb95760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a401610849565b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2613cfc826124fd565b5050565b6000805b8215610e8f57613d15600184615827565b9092169180613d2381615c8c565b915050613d04565b6000306001600160a01b037f00000000000000000000000036c02da8a0983159322a80ffe9f24b1acff8b57016148015613d8457507f0000000000000000000000000000000000000000000000000000000000007a6946145b15613dae57507fd8cea607dc87be4701da97f1f02070e2cf469db0dbbbfc55a7d169f75da1f4bc90565b50604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f6020808301919091527f6ec8a99f0e7f9ebde7354a446dcb9423f3af9c58f386a53c59c5b384f9e82d11828401527f6bda7e3f385e48841048390444cced5cc795af87758af67622e5f4f0882c4a9960608301524660808301523060a0808401919091528351808403909101815260c0909201909252805191012090565b60008080600080516020615d6e8339815191526003600080516020615d6e83398151915286600080516020615d6e833981519152888909090890506000613ec8827f0c19139cb84c680a6e14116da060561765e05aa45a1c72a34f082305b61f3f52600080516020615d6e833981519152614419565b91959194509092505050565b600061010082511115613f5d5760405162461bcd60e51b8152602060048201526044602482018190527f4269746d61705574696c732e6f72646572656442797465734172726179546f42908201527f69746d61703a206f7264657265644279746573417272617920697320746f6f206064820152636c6f6e6760e01b608482015260a401610849565b8151613f6b57506000919050565b60008083600081518110613f8157613f81615566565b0160200151600160f89190911c81901b92505b845181101561405857848181518110613faf57613faf615566565b0160200151600160f89190911c1b91508282116140445760405162461bcd60e51b815260206004820152604760248201527f4269746d61705574696c732e6f72646572656442797465734172726179546f4260448201527f69746d61703a206f72646572656442797465734172726179206973206e6f74206064820152661bdc99195c995960ca1b608482015260a401610849565b9181179161405181615592565b9050613f94565b50909392505050565b60008281526098602052604090205480614106576000838152609860209081526040808320815160608101835263ffffffff43811682528185018681526001600160c01b03808a16958401958652845460018101865594885295909620915191909201805495519351909416600160401b026001600160401b03938316600160201b0267ffffffffffffffff1990961691909216179390931716919091179055505050565b600083815260986020526040812061411f600184615827565b8154811061412f5761412f615566565b600091825260209091200180549091504363ffffffff908116911614156141735780546001600160401b0316600160401b6001600160c01b03851602178155610930565b805463ffffffff438116600160201b81810267ffffffff0000000019909416939093178455600087815260986020908152604080832081516060810183529485528483018481526001600160c01b03808c1693870193845282546001810184559286529390942094519401805493519151909216600160401b026001600160401b0391861690960267ffffffffffffffff199093169390941692909217179190911691909117905550505050565b6001600160a01b0383163b1561433b57604051630b135d3f60e11b808252906001600160a01b03851690631626ba7e9061426190869086906004016158e5565b602060405180830381865afa15801561427e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906142a29190615cae565b6001600160e01b031916146116a55760405162461bcd60e51b815260206004820152605360248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a2045524331323731207369676e6174757265206064820152721d995c9a599a58d85d1a5bdb8819985a5b1959606a1b608482015260a401610849565b826001600160a01b031661434f83836144c8565b6001600160a01b0316146116a55760405162461bcd60e51b815260206004820152604760248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a207369676e6174757265206e6f742066726f6d6064820152661039b4b3b732b960c91b608482015260a401610849565b6020810151600090612710906143f59061ffff1685615cd8565b61289b9190615d07565b6040810151600090612710906143f59061ffff1685615cd8565b600080614424614835565b61442c614853565b602080825281810181905260408201819052606082018890526080820187905260a082018690528260c08360056107d05a03fa925082801561446d5761446f565bfe5b50826144bd5760405162461bcd60e51b815260206004820152601a60248201527f424e3235342e6578704d6f643a2063616c6c206661696c7572650000000000006044820152606401610849565b505195945050505050565b60008060006144d785856144e4565b91509150611d8381614554565b60008082516041141561451b5760208301516040840151606085015160001a61450f8782858561470f565b9450945050505061454d565b825160401415614545576020830151604084015161453a8683836147fc565b93509350505061454d565b506000905060025b9250929050565b600081600481111561456857614568614be3565b14156145715750565b600181600481111561458557614585614be3565b14156145d35760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610849565b60028160048111156145e7576145e7614be3565b14156146355760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610849565b600381600481111561464957614649614be3565b14156146a25760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610849565b60048160048111156146b6576146b6614be3565b1415610cc45760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b6064820152608401610849565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561474657506000905060036147f3565b8460ff16601b1415801561475e57508460ff16601c14155b1561476f57506000905060046147f3565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa1580156147c3573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166147ec576000600192509250506147f3565b9150600090505b94509492505050565b6000806001600160ff1b0383168161481960ff86901c601b615744565b90506148278782888561470f565b935093505050935093915050565b60405180602001604052806001906020820280368337509192915050565b6040518060c001604052806006906020820280368337509192915050565b60008083601f84011261488357600080fd5b5081356001600160401b0381111561489a57600080fd5b6020830191508360208260051b850101111561454d57600080fd5b600080602083850312156148c857600080fd5b82356001600160401b038111156148de57600080fd5b6148ea85828601614871565b90969095509350505050565b60006020828403121561490857600080fd5b5035919050565b63ffffffff81168114610cc457600080fd5b60008060006060848603121561493657600080fd5b8335925060208401356149488161490f565b929592945050506040919091013590565b634e487b7160e01b600052604160045260246000fd5b604051606081016001600160401b038111828210171561499157614991614959565b60405290565b604080519081016001600160401b038111828210171561499157614991614959565b604051601f8201601f191681016001600160401b03811182821017156149e1576149e1614959565b604052919050565b60006001600160401b03831115614a0257614a02614959565b614a15601f8401601f19166020016149b9565b9050828152838383011115614a2957600080fd5b828260208301376000602084830101529392505050565b600060208284031215614a5257600080fd5b81356001600160401b03811115614a6857600080fd5b8201601f81018413614a7957600080fd5b614a88848235602084016149e9565b949350505050565b6001600160a01b0381168114610cc457600080fd5b8035614ab081614a90565b919050565b600060208284031215614ac757600080fd5b813561289b81614a90565b60008060408385031215614ae557600080fd5b50508035926020909101359150565b803560ff81168114614ab057600080fd5b600060208284031215614b1757600080fd5b61289b82614af4565b815181526020808301519082015260408101610e8f565b60008083601f840112614b4957600080fd5b5081356001600160401b03811115614b6057600080fd5b60208301915083602082850101111561454d57600080fd5b60008060008060408587031215614b8e57600080fd5b84356001600160401b0380821115614ba557600080fd5b614bb188838901614871565b90965094506020870135915080821115614bca57600080fd5b50614bd787828801614b37565b95989497509550505050565b634e487b7160e01b600052602160045260246000fd5b60038110614c1757634e487b7160e01b600052602160045260246000fd5b9052565b815181526020808301516040830191614c3690840182614bf9565b5092915050565b803561ffff81168114614ab057600080fd5b600060608284031215614c6157600080fd5b614c6961496f565b90508135614c768161490f565b8152614c8460208301614c3d565b6020820152614c9560408301614c3d565b604082015292915050565b60008060808385031215614cb357600080fd5b614cbc83614af4565b9150614ccb8460208501614c4f565b90509250929050565b600080600060408486031215614ce957600080fd5b8335614cf481614a90565b925060208401356001600160401b03811115614d0f57600080fd5b614d1b86828701614b37565b9497909650939450505050565b60006001600160401b03821115614d4157614d41614959565b5060051b60200190565b600060408284031215614d5d57600080fd5b614d65614997565b9050614d7082614af4565b81526020820135614d8081614a90565b602082015292915050565b600080600080600060a08688031215614da357600080fd5b8535614dae81614a90565b945060208681013594506040808801356001600160401b03811115614dd257600080fd5b8801601f81018a13614de357600080fd5b8035614df6614df182614d28565b6149b9565b81815260069190911b8201840190848101908c831115614e1557600080fd5b928501925b82841015614e3b57614e2c8d85614d4b565b82529284019290850190614e1a565b999c989b5098996060810135995060800135979650505050505050565b60006101008284031215614e6b57600080fd5b50919050565b60008083601f840112614e8357600080fd5b5081356001600160401b03811115614e9a57600080fd5b6020830191508360208260061b850101111561454d57600080fd5b600060608284031215614ec757600080fd5b614ecf61496f565b905081356001600160401b03811115614ee757600080fd5b8201601f81018413614ef857600080fd5b614f07848235602084016149e9565b825250602082013560208201526040820135604082015292915050565b60008060008060008060008060006101a08a8c031215614f4357600080fd5b89356001600160401b0380821115614f5a57600080fd5b614f668d838e01614b37565b909b50995060208c0135915080821115614f7f57600080fd5b614f8b8d838e01614b37565b9099509750879150614fa08d60408e01614e58565b96506101408c0135915080821115614fb757600080fd5b614fc38d838e01614e71565b90965094506101608c0135915080821115614fdd57600080fd5b614fe98d838e01614eb5565b93506101808c013591508082111561500057600080fd5b5061500d8c828d01614eb5565b9150509295985092959850929598565b600080600080600080610160878903121561503757600080fd5b86356001600160401b038082111561504e57600080fd5b61505a8a838b01614b37565b9098509650602089013591508082111561507357600080fd5b61507f8a838b01614b37565b90965094508491506150948a60408b01614e58565b93506101408901359150808211156150ab57600080fd5b506150b889828a01614eb5565b9150509295509295509295565b600080604083850312156150d857600080fd5b82356150e38161490f565b91506020838101356001600160401b038111156150ff57600080fd5b8401601f8101861361511057600080fd5b803561511e614df182614d28565b81815260059190911b8201830190838101908883111561513d57600080fd5b928401925b8284101561515b57833582529284019290840190615142565b80955050505050509250929050565b6020808252825182820181905260009190848201906040850190845b818110156151a857835163ffffffff1683529284019291840191600101615186565b50909695505050505050565b600080602083850312156151c757600080fd5b82356001600160401b038111156151dd57600080fd5b6148ea85828601614b37565b6001600160601b0381168114610cc457600080fd5b600082601f83011261520f57600080fd5b8135602061521f614df183614d28565b82815260069290921b8401810191818101908684111561523e57600080fd5b8286015b8481101561528f576040818903121561525b5760008081fd5b615263614997565b813561526e81614a90565b81528185013561527d816151e9565b81860152835291830191604001615242565b509695505050505050565b600080600060a084860312156152af57600080fd5b6152b98585614c4f565b925060608401356152c9816151e9565b915060808401356001600160401b038111156152e457600080fd5b6152f0868287016151fe565b9150509250925092565b600082601f83011261530b57600080fd5b8135602061531b614df183614d28565b8281526060928302850182019282820191908785111561533a57600080fd5b8387015b8581101561535d576153508982614c4f565b845292840192810161533e565b5090979650505050505050565b600082601f83011261537b57600080fd5b8135602061538b614df183614d28565b82815260059290921b840181019181810190868411156153aa57600080fd5b8286015b8481101561528f5780356153c1816151e9565b83529183019183016153ae565b600082601f8301126153df57600080fd5b813560206153ef614df183614d28565b82815260059290921b8401810191818101908684111561540e57600080fd5b8286015b8481101561528f5780356001600160401b038111156154315760008081fd5b61543f8986838b01016151fe565b845250918301918301615412565b600080600080600080600080610100898b03121561546a57600080fd5b61547389614aa5565b975061548160208a01614aa5565b965061548f60408a01614aa5565b955061549d60608a01614aa5565b94506080890135935060a08901356001600160401b03808211156154c057600080fd5b6154cc8c838d016152fa565b945060c08b01359150808211156154e257600080fd5b6154ee8c838d0161536a565b935060e08b013591508082111561550457600080fd5b506155118b828c016153ce565b9150509295985092959890939650565b60208101610e8f8284614bf9565b60208082526019908201527f5061757361626c653a20696e6465782069732070617573656400000000000000604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006000198214156155a6576155a661557c565b5060010190565b6000815180845260005b818110156155d3576020818501810151868301820152016155b7565b818111156155e5576000602083870101525b50601f01601f19169290920160200192915050565b60208152600061289b60208301846155ad565b60006020828403121561561f57600080fd5b815161289b81614a90565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b60006020828403121561568657600080fd5b8151801515811461289b57600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b6000808335601e198436030181126156f557600080fd5b8301803591506001600160401b0382111561570f57600080fd5b6020019150600581901b360382131561454d57600080fd5b60006020828403121561573957600080fd5b815161289b8161490f565b600082198211156157575761575761557c565b500190565b6000808585111561576c57600080fd5b8386111561577957600080fd5b5050820193919092039150565b600060c08201888352602060018060a01b03808a16828601526040898187015260c0606087015283895180865260e088019150848b01955060005b818110156157eb578651805160ff16845286015185168684015295850195918301916001016157c1565b505060808701989098525050505060a09091019190915250949350505050565b60006040828403121561581d57600080fd5b61289b8383614d4b565b6000828210156158395761583961557c565b500390565b60018060a01b038416815282602082015260606040820152600061586560608301846155ad565b95945050505050565b60006020828403121561588057600080fd5b81516001600160c01b038116811461289b57600080fd5b634e487b7160e01b600052601260045260246000fd5b6000826158bc576158bc615897565b500690565b6001600160a01b0383168152604060208201819052600090614a88908301846155ad565b828152604060208201526000614a8860408301846155ad565b60006020828403121561591057600080fd5b5051919050565b6001600160a01b0384168152610160810161593f602083018580358252602090810135910152565b615959606083016040860180358252602090810135910152565b60406080850160a084013760e0820160008152604060c0860182375060006101208301908152835190526020909201516101409091015292915050565b60018060a01b03831681526040602082015260008251606060408401526159c060a08401826155ad565b90506020840151606084015260408401516080840152809150509392505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6001600160a01b038416815260406020820181905260009061586590830184866159e1565b60018060a01b03851681528360208201526060604082015260006117e86060830184866159e1565b600082601f830112615a6857600080fd5b81516020615a78614df183614d28565b82815260059290921b84018101918181019086841115615a9757600080fd5b8286015b8481101561528f578051615aae816151e9565b8352918301918301615a9b565b60008060408385031215615ace57600080fd5b82516001600160401b0380821115615ae557600080fd5b615af186838701615a57565b93506020850151915080821115615b0757600080fd5b50615b1485828601615a57565b9150509250929050565b8381526040602082015260006158656040830184866159e1565b60006020808385031215615b4b57600080fd5b82516001600160401b03811115615b6157600080fd5b8301601f81018513615b7257600080fd5b8051615b80614df182614d28565b81815260059190911b82018301908381019087831115615b9f57600080fd5b928401925b82841015615bc6578351615bb78161490f565b82529284019290840190615ba4565b979650505050505050565b600060208284031215615be357600080fd5b815161289b816151e9565b600060ff821660ff84168060ff03821115615c0b57615c0b61557c565b019392505050565b60006060820160ff8616835260206001600160601b03808716828601526040606081870152838751808652608088019150848901955060005b81811015615c7c57865180516001600160a01b031684528601518516868401529585019591830191600101615c4c565b50909a9950505050505050505050565b600061ffff80831681811415615ca457615ca461557c565b6001019392505050565b600060208284031215615cc057600080fd5b81516001600160e01b03198116811461289b57600080fd5b60006001600160601b0380831681851681830481118215151615615cfe57615cfe61557c565b02949350505050565b60006001600160601b0380841680615d2157615d21615897565b9216919091049291505056fe5265676973747279436f6f7264696e61746f722e7570646174654f70657261745265676973747279436f6f7264696e61746f722e5f76616c696461746543687530644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47a2646970667358221220c46dbbd3cbf9c19ec3f0506d6da00edc62bed2ab5ebee2db59b63aa3575fcbe864736f6c634300080c0033","storage":{"0x0":"0xff"}},"0x3c44cdddb6a900fa2b585dd299e03d12fa4293bc":{"nonce":0,"balance":"0x21e19e0c9bab2400000","code":"0x","storage":{}},"0x4826533b4897376654bb4d4ad88b7fafd0c98528":{"nonce":1,"balance":"0x0","code":"0x608060405234801561001057600080fd5b50600436106101e55760003560e01c80639f3ccf651161010f578063c8294c56116100a2578063f2be94ae11610071578063f2be94ae1461054b578063f851e1981461055e578063fa28c62714610571578063ff694a771461058457600080fd5b8063c8294c56146104d6578063d5eccc05146104e9578063dd9846b9146104fc578063df5cf7231461052457600080fd5b8063bc9a40c3116100de578063bc9a40c314610474578063bd29b8cd14610487578063c46778a51461049a578063c601527d146104c357600080fd5b80639f3ccf65146103ee578063ac6bfb0314610401578063adc804da14610421578063b6904b781461046157600080fd5b80634bd26e091161018757806366acfefe1161015657806366acfefe1461034a5780636d14a987146103755780637c172347146103b457806381c07502146103ce57600080fd5b80634bd26e09146102e55780635401ed27146103155780635e5a6775146103285780635f1f2d771461033757600080fd5b806320b66298116101c357806320b662981461026c57806325504777146102815780632cd95940146102a25780633ca5a5f5146102c257600080fd5b80630491b41c146101ea57806308732461146102205780631f9b74e014610241575b600080fd5b61020d6101f8366004612c27565b60ff1660009081526001602052604090205490565b6040519081526020015b60405180910390f35b61023361022e366004612c42565b610597565b604051610217929190612c6c565b61025461024f366004612ca6565b6105e0565b6040516001600160601b039091168152602001610217565b61027f61027a366004612d21565b610630565b005b61029461028f366004612de2565b610961565b604051610217929190612e81565b6102b56102b0366004612ea6565b610c2c565b6040516102179190612ed2565b61020d6102d0366004612c27565b60ff1660009081526003602052604090205490565b61020d6102f3366004612ea6565b600091825260026020908152604080842060ff93909316845291905290205490565b610254610323366004612ea6565b610ccb565b61020d670de0b6b3a764000081565b61027f610345366004612fdb565b610ce4565b61035d610358366004612de2565b611104565b6040516001600160c01b039091168152602001610217565b61039c7f000000000000000000000000851356ae760d987e095750cceb3bc6014560891c81565b6040516001600160a01b039091168152602001610217565b6103bc602081565b60405160ff9091168152602001610217565b6103e16103dc366004613097565b61125e565b60405161021791906130e9565b61039c6103fc366004612c42565b611528565b61041461040f366004613127565b611560565b604051610217919061315a565b61043461042f366004612c42565b6115f8565b6040805182516001600160a01b031681526020928301516001600160601b03169281019290925201610217565b61041461046f366004612c42565b611672565b61027f6104823660046131a6565b611701565b61027f6104953660046131d0565b6117fa565b6102546104a8366004612c27565b6000602081905290815260409020546001600160601b031681565b61027f6104d136600461329c565b611927565b6102546104e43660046132e9565b611a1b565b6102546104f7366004612c27565b611a99565b61050f61050a366004613325565b611aec565b60405163ffffffff9091168152602001610217565b61039c7f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc981565b610254610559366004613361565b611b01565b61041461056c366004612ea6565b611b96565b61025461057f366004613325565b611c7b565b61027f6105923660046133a3565b611cdc565b600360205281600052604060002081815481106105b357600080fd5b6000918252602090912001546001600160a01b0381169250600160a01b90046001600160601b0316905082565b60ff8216600090815260016020526040812054839061061a5760405162461bcd60e51b815260040161061190613400565b60405180910390fd5b60006106268585611e47565b5095945050505050565b7f000000000000000000000000851356ae760d987e095750cceb3bc6014560891c6001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561068e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106b29190613451565b6001600160a01b0316336001600160a01b0316146106e25760405162461bcd60e51b81526004016106119061346e565b846106fe8160ff16600090815260016020526040902054151590565b61071a5760405162461bcd60e51b815260040161061190613400565b8380610790576040805162461bcd60e51b81526020600482015260248101919091527f5374616b6552656769737472792e6d6f6469667953747261746567795061726160448201527f6d733a206e6f20737472617465677920696e64696365732070726f76696465646064820152608401610611565b8281146108055760405162461bcd60e51b815260206004820152603960248201527f5374616b6552656769737472792e6d6f6469667953747261746567795061726160448201527f6d733a20696e707574206c656e677468206d69736d61746368000000000000006064820152608401610611565b60ff87166000908152600360205260408120905b8281101561095657858582818110610833576108336134ea565b90506020020160208101906108489190613500565b8289898481811061085b5761085b6134ea565b9050602002013581548110610872576108726134ea565b9060005260206000200160000160146101000a8154816001600160601b0302191690836001600160601b031602179055508860ff167f11a5641322da1dff56a4b66eaac31ffa465295ece907cd163437793b4d009a75838a8a858181106108db576108db6134ea565b90506020020135815481106108f2576108f26134ea565b6000918252602090912001546001600160a01b0316888885818110610919576109196134ea565b905060200201602081019061092e9190613500565b60405161093c929190612c6c565b60405180910390a28061094e81613531565b915050610819565b505050505050505050565b606080336001600160a01b037f000000000000000000000000851356ae760d987e095750cceb3bc6014560891c16146109ac5760405162461bcd60e51b81526004016106119061354c565b6000836001600160401b038111156109c6576109c6612f4a565b6040519080825280602002602001820160405280156109ef578160200160208202803683370190505b5090506000846001600160401b03811115610a0c57610a0c612f4a565b604051908082528060200260200182016040528015610a35578160200160208202803683370190505b50905060005b85811015610c1e576000878783818110610a5757610a576134ea565b919091013560f81c60008181526001602052604090205490925015159050610adf5760405162461bcd60e51b815260206004820152603560248201527f5374616b6552656769737472792e72656769737465724f70657261746f723a206044820152741c5d5bdc9d5b48191bd95cc81b9bdd08195e1a5cdd605a1b6064820152608401610611565b600080610aec838d611e47565b9150915080610b895760405162461bcd60e51b815260206004820152605b60248201527f5374616b6552656769737472792e72656769737465724f70657261746f723a2060448201527f4f70657261746f7220646f6573206e6f74206d656574206d696e696d756d207360648201527f74616b6520726571756972656d656e7420666f722071756f72756d0000000000608482015260a401610611565b6000610b968c8585612045565b905082878681518110610bab57610bab6134ea565b60200260200101906001600160601b031690816001600160601b031681525050610bd584826122c5565b868681518110610be757610be76134ea565b60200260200101906001600160601b031690816001600160601b031681525050505050508080610c1690613531565b915050610a3b565b509097909650945050505050565b600082815260026020908152604080832060ff851684528252808320805482518185028101850190935280835260609492939192909184015b82821015610cbe576000848152602090819020604080516060810182529185015463ffffffff8082168452600160201b82041683850152600160401b90046001600160601b031690820152825260019092019101610c65565b5050505090505b92915050565b600080610cd88484611b96565b60400151949350505050565b7f000000000000000000000000851356ae760d987e095750cceb3bc6014560891c6001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d42573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d669190613451565b6001600160a01b0316336001600160a01b031614610d965760405162461bcd60e51b81526004016106119061346e565b81610db28160ff16600090815260016020526040902054151590565b610dce5760405162461bcd60e51b815260040161061190613400565b815180610e435760405162461bcd60e51b815260206004820152603d60248201527f5374616b6552656769737472792e72656d6f7665537472617465676965733a2060448201527f6e6f20696e646963657320746f2072656d6f76652070726f76696465640000006064820152608401610611565b60ff841660009081526003602090815260408083206004909252822090915b838110156110fb578660ff167f31fa2e2cd280c9375e13ffcf3d81e2378100186e4058f8d3ddb690b82dcd31f784888481518110610ea257610ea26134ea565b602002602001015181548110610eba57610eba6134ea565b600091825260209182902001546040516001600160a01b0390911681520160405180910390a28660ff167f11a5641322da1dff56a4b66eaac31ffa465295ece907cd163437793b4d009a7584888481518110610f1857610f186134ea565b602002602001015181548110610f3057610f306134ea565b600091825260208083209190910154604080516001600160a01b039092168252918101929092520160405180910390a282548390610f70906001906135be565b81548110610f8057610f806134ea565b9060005260206000200183878381518110610f9d57610f9d6134ea565b602002602001015181548110610fb557610fb56134ea565b600091825260209091208254910180546001600160a01b0319166001600160a01b03909216918217815591546001600160601b03600160a01b9182900416021790558254839080611008576110086135d5565b60008281526020812082016000199081019190915501905581548290611030906001906135be565b81548110611040576110406134ea565b9060005260206000200160009054906101000a90046001600160a01b031682878381518110611071576110716134ea565b602002602001015181548110611089576110896134ea565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550818054806110c7576110c76135d5565b600082815260209020810160001990810180546001600160a01b0319169055019055806110f381613531565b915050610e62565b50505050505050565b6000336001600160a01b037f000000000000000000000000851356ae760d987e095750cceb3bc6014560891c161461114e5760405162461bcd60e51b81526004016106119061354c565b6000805b8381101561062657600085858381811061116e5761116e6134ea565b919091013560f81c600081815260016020526040902054909250151590506111fe5760405162461bcd60e51b815260206004820152603860248201527f5374616b6552656769737472792e7570646174654f70657261746f725374616b60448201527f653a2071756f72756d20646f6573206e6f7420657869737400000000000000006064820152608401610611565b60008061120b838b611e47565b915091508061122d5760009150600160ff84161b6001600160c01b0386161794505b600061123a8a8585612045565b905061124684826122c5565b5050505050808061125690613531565b915050611152565b60606000826001600160401b0381111561127a5761127a612f4a565b6040519080825280602002602001820160405280156112a3578160200160208202803683370190505b50905060005b8381101561151d5760008585838181106112c5576112c56134ea565b919091013560f81c600081815260016020526040902054909250151590506113645760405162461bcd60e51b815260206004820152604660248201527f5374616b6552656769737472792e676574546f74616c5374616b65496e64696360448201527f65734174426c6f636b4e756d6265723a2071756f72756d20646f6573206e6f7460648201526508195e1a5cdd60d21b608482015260a401610611565b60ff81166000908152600160205260408120805463ffffffff8a16929061138d5761138d6134ea565b60009182526020909120015463ffffffff1611156114395760405162461bcd60e51b815260206004820152605b60248201527f5374616b6552656769737472792e676574546f74616c5374616b65496e64696360448201527f65734174426c6f636b4e756d6265723a2071756f72756d20686173206e6f207360648201527f74616b6520686973746f727920617420626c6f636b4e756d6265720000000000608482015260a401610611565b60ff8116600090815260016020526040812054905b818110156115075760ff8316600090815260016020819052604090912063ffffffff8b169161147d84866135be565b61148791906135be565b81548110611497576114976134ea565b60009182526020909120015463ffffffff16116114f55760016114ba82846135be565b6114c491906135be565b8585815181106114d6576114d66134ea565b602002602001019063ffffffff16908163ffffffff1681525050611507565b806114ff81613531565b91505061144e565b505050808061151590613531565b9150506112a9565b5090505b9392505050565b6004602052816000526040600020818154811061154457600080fd5b6000918252602090912001546001600160a01b03169150829050565b60408051606081018252600080825260208083018290528284018290528582526002815283822060ff881683529052919091208054839081106115a5576115a56134ea565b600091825260209182902060408051606081018252929091015463ffffffff8082168452600160201b82041693830193909352600160401b9092046001600160601b031691810191909152949350505050565b604080518082019091526000808252602082015260ff83166000908152600360205260409020805483908110611630576116306134ea565b6000918252602091829020604080518082019091529101546001600160a01b0381168252600160a01b90046001600160601b0316918101919091529392505050565b604080516060810182526000808252602080830182905282840182905260ff8616825260019052919091208054839081106116af576116af6134ea565b600091825260209182902060408051606081018252929091015463ffffffff8082168452600160201b82041693830193909352600160401b9092046001600160601b0316918101919091529392505050565b7f000000000000000000000000851356ae760d987e095750cceb3bc6014560891c6001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561175f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117839190613451565b6001600160a01b0316336001600160a01b0316146117b35760405162461bcd60e51b81526004016106119061346e565b816117cf8160ff16600090815260016020526040902054151590565b6117eb5760405162461bcd60e51b815260040161061190613400565b6117f5838361243f565b505050565b336001600160a01b037f000000000000000000000000851356ae760d987e095750cceb3bc6014560891c16146118425760405162461bcd60e51b81526004016106119061354c565b60005b81811015611921576000838383818110611861576118616134ea565b919091013560f81c600081815260016020526040902054909250151590506118f15760405162461bcd60e51b815260206004820152603760248201527f5374616b6552656769737472792e646572656769737465724f70657261746f7260448201527f3a2071756f72756d20646f6573206e6f742065786973740000000000000000006064820152608401610611565b60006118ff86836000612045565b905061190b82826122c5565b505050808061191990613531565b915050611845565b50505050565b7f000000000000000000000000851356ae760d987e095750cceb3bc6014560891c6001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611985573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119a99190613451565b6001600160a01b0316336001600160a01b0316146119d95760405162461bcd60e51b81526004016106119061346e565b816119f58160ff16600090815260016020526040902054151590565b611a115760405162461bcd60e51b815260040161061190613400565b6117f583836124a8565b60ff83166000908152600160205260408120805482919084908110611a4257611a426134ea565b600091825260209182902060408051606081018252919092015463ffffffff8082168352600160201b820416938201939093526001600160601b03600160401b90930492909216908201529050610cd881856128eb565b60ff81166000908152600160208190526040822080549091611aba916135be565b81548110611aca57611aca6134ea565b600091825260209091200154600160401b90046001600160601b031692915050565b6000611af9848484612a65565b949350505050565b600082815260026020908152604080832060ff881684529091528120805482919084908110611b3257611b326134ea565b600091825260209182902060408051606081018252919092015463ffffffff8082168352600160201b820416938201939093526001600160601b03600160401b90930492909216908201529050611b8981866128eb565b6040015195945050505050565b6040805160608082018352600080835260208084018290528385018290528682526002815284822060ff87168352815284822054855193840186528284529083018290529382015290919081611bef579150610cc59050565b600085815260026020908152604080832060ff881684529091529020611c166001846135be565b81548110611c2657611c266134ea565b600091825260209182902060408051606081018252919092015463ffffffff8082168352600160201b820416938201939093526001600160601b03600160401b90930492909216908201529250610cc5915050565b600083815260026020908152604080832060ff861684529091528120611ca2858585612a65565b63ffffffff1681548110611cb857611cb86134ea565b600091825260209091200154600160401b90046001600160601b0316949350505050565b336001600160a01b037f000000000000000000000000851356ae760d987e095750cceb3bc6014560891c1614611d245760405162461bcd60e51b81526004016106119061354c565b60ff831660009081526001602052604090205415611da25760405162461bcd60e51b815260206004820152603560248201527f5374616b6552656769737472792e696e697469616c697a6551756f72756d3a2060448201527471756f72756d20616c72656164792065786973747360581b6064820152608401610611565b611dac83826124a8565b611db6838361243f565b505060ff166000908152600160208181526040808420815160608101835263ffffffff438116825281850187815293820187815283549687018455928752939095209451949093018054915193516001600160601b0316600160401b02600160401b600160a01b0319948416600160201b0267ffffffffffffffff1990931695909316949094171791909116179055565b600080600080611e668660ff1660009081526003602052604090205490565b604080518082019091526000808252602082015290915060ff871660009081526004602081905260408083209051639004134760e01b81526001600160a01b037f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc91692639004134792611edb928c92016135eb565b600060405180830381865afa158015611ef8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611f20919081019061364a565b905060005b838110156120115760ff89166000908152600360205260409020805482908110611f5157611f516134ea565b60009182526020808320604080518082019091529201546001600160a01b0381168352600160a01b90046001600160601b0316908201528351909450839083908110611f9f57611f9f6134ea565b60200260200101511115611fff57670de0b6b3a764000083602001516001600160601b0316838381518110611fd657611fd66134ea565b6020026020010151611fe891906136da565b611ff291906136f9565b611ffc908661371b565b94505b8061200981613531565b915050611f25565b50505060ff8616600090815260208190526040902054919350506001600160601b03908116908316101590505b9250929050565b600083815260026020908152604080832060ff8616845290915281205481908061210957600086815260026020908152604080832060ff891684528252808320815160608101835263ffffffff43811682528185018681526001600160601b03808c16958401958652845460018101865594885295909620915191909201805495519351909416600160401b02600160401b600160a01b0319938316600160201b0267ffffffffffffffff199096169190921617939093171691909117905561226b565b600086815260026020908152604080832060ff8916845290915281206121306001846135be565b81548110612140576121406134ea565b600091825260209091200180546001600160601b03600160401b9091048116945090915085168314156121795760009350505050611521565b80544363ffffffff908116911614156121b3578054600160401b600160a01b031916600160401b6001600160601b03871602178155612269565b805467ffffffff000000001916600160201b4363ffffffff90811682810293909317845560008a815260026020908152604080832060ff8d168452825280832081516060810183529687528683018481526001600160601b038d81169389019384528254600181018455928652939094209651960180549351915196851667ffffffffffffffff1990941693909317931690930291909117600160401b600160a01b031916600160401b93909216929092021790555b505b6040805160ff871681526001600160601b038616602082015287917f2f527d527e95d8fe40aec55377743bb779087da3f6d0d08f12e36444da62327d910160405180910390a26122bb8285612bcb565b9695505050505050565b60ff8216600090815260016020819052604082208054918391906122e990846135be565b815481106122f9576122f96134ea565b90600052602060002001905083600014156123285754600160401b90046001600160601b03169150610cc59050565b805460009061234790600160401b90046001600160601b031686612be3565b82549091504363ffffffff90811691161415612384578154600160401b600160a01b031916600160401b6001600160601b03831602178255612436565b815463ffffffff438116600160201b81810267ffffffff000000001990941693909317855560ff8916600090815260016020818152604080842081516060810183529586528583018581526001600160601b03808b169388019384528254958601835591865292909420945194909201805491519251909316600160401b02600160401b600160a01b031992861690960267ffffffffffffffff19909116939094169290921792909217169190911790555b95945050505050565b60ff82166000818152602081815260409182902080546bffffffffffffffffffffffff19166001600160601b03861690811790915591519182527f26eecff2b70b0a71104ff4d940ba7162d23a95c248771fc487a7be17a596b3cf910160405180910390a25050565b600081511161250d5760405162461bcd60e51b815260206004820152603860248201526000805160206137fa83398151915260448201527f3a206e6f20737472617465676965732070726f766964656400000000000000006064820152608401610611565b805160ff8316600090815260036020908152604090912054906125308383613746565b11156125a05760405162461bcd60e51b815260206004820152604560248201526000805160206137fa83398151915260448201527f3a20657863656564204d41585f5745494748494e475f46554e4354494f4e5f4c60648201526408a9c8ea8960db1b608482015260a401610611565b60005b828110156128e45760005b6125b88284613746565b811015612699578482815181106125d1576125d16134ea565b6020026020010151600001516001600160a01b0316600360008860ff1660ff1681526020019081526020016000208281548110612610576126106134ea565b6000918252602090912001546001600160a01b031614156126875760405162461bcd60e51b815260206004820152603d60248201526000805160206137fa83398151915260448201527f3a2063616e6e6f74206164642073616d652073747261746567792032780000006064820152608401610611565b8061269181613531565b9150506125ae565b5060008482815181106126ae576126ae6134ea565b6020026020010151602001516001600160601b0316116127335760405162461bcd60e51b815260206004820152604660248201526000805160206137fa83398151915260448201527f3a2063616e6e6f74206164642073747261746567792077697468207a65726f206064820152651dd95a59da1d60d21b608482015260a401610611565b60ff851660009081526003602052604090208451859083908110612759576127596134ea565b602090810291909101810151825460018101845560009384528284208251928401516001600160601b0316600160a01b026001600160a01b039093169290921791015560ff87168252600490526040902084518590839081106127be576127be6134ea565b6020908102919091018101515182546001810184556000938452919092200180546001600160a01b0319166001600160a01b03909216919091179055835160ff8616907f10565e56cacbf32eca267945f054fec02e59750032d113d3302182ad967f540490869084908110612835576128356134ea565b602090810291909101810151516040516001600160a01b0390911681520160405180910390a28460ff167f11a5641322da1dff56a4b66eaac31ffa465295ece907cd163437793b4d009a75858381518110612892576128926134ea565b6020026020010151600001518684815181106128b0576128b06134ea565b6020026020010151602001516040516128ca929190612c6c565b60405180910390a2806128dc81613531565b9150506125a3565b5050505050565b816000015163ffffffff168163ffffffff1610156129905760405162461bcd60e51b815260206004820152605660248201527f5374616b6552656769737472792e5f76616c69646174655374616b655570646160448201527f74654174426c6f636b4e756d6265723a207374616b6555706461746520697320606482015275333937b69030b33a32b910313637b1b5a73ab6b132b960511b608482015260a401610611565b602082015163ffffffff1615806129b65750816020015163ffffffff168163ffffffff16105b612a615760405162461bcd60e51b815260206004820152606a60248201527f5374616b6552656769737472792e5f76616c69646174655374616b655570646160448201527f74654174426c6f636b4e756d6265723a2074686572652069732061206e65776560648201527f72207374616b6555706461746520617661696c61626c65206265666f726520626084820152693637b1b5a73ab6b132b960b11b60a482015260c401610611565b5050565b600083815260026020908152604080832060ff86168452909152812054805b8015612b0657600086815260026020908152604080832060ff89168452909152902063ffffffff851690612ab96001846135be565b81548110612ac957612ac96134ea565b60009182526020909120015463ffffffff1611612af457612aeb6001826135be565b92505050611521565b80612afe8161375e565b915050612a84565b5060405162461bcd60e51b815260206004820152608160248201527f5374616b6552656769737472792e5f6765745374616b65557064617465496e6460448201527f6578466f724f70657261746f724174426c6f636b4e756d6265723a206e6f207360648201527f74616b652075706461746520666f756e6420666f72206f70657261746f72496460848201527f20616e642071756f72756d4e756d62657220617420626c6f636b206e756d626560a4820152603960f91b60c482015260e401610611565b60006115216001600160601b03808516908416613775565b600080821215612c0757612bf6826137b4565b612c0090846137d1565b9050610cc5565b612c00828461371b565b803560ff81168114612c2257600080fd5b919050565b600060208284031215612c3957600080fd5b61152182612c11565b60008060408385031215612c5557600080fd5b612c5e83612c11565b946020939093013593505050565b6001600160a01b039290921682526001600160601b0316602082015260400190565b6001600160a01b0381168114612ca357600080fd5b50565b60008060408385031215612cb957600080fd5b612cc283612c11565b91506020830135612cd281612c8e565b809150509250929050565b60008083601f840112612cef57600080fd5b5081356001600160401b03811115612d0657600080fd5b6020830191508360208260051b850101111561203e57600080fd5b600080600080600060608688031215612d3957600080fd5b612d4286612c11565b945060208601356001600160401b0380821115612d5e57600080fd5b612d6a89838a01612cdd565b90965094506040880135915080821115612d8357600080fd5b50612d9088828901612cdd565b969995985093965092949392505050565b60008083601f840112612db357600080fd5b5081356001600160401b03811115612dca57600080fd5b60208301915083602082850101111561203e57600080fd5b60008060008060608587031215612df857600080fd5b8435612e0381612c8e565b93506020850135925060408501356001600160401b03811115612e2557600080fd5b612e3187828801612da1565b95989497509550505050565b600081518084526020808501945080840160005b83811015612e765781516001600160601b031687529582019590820190600101612e51565b509495945050505050565b604081526000612e946040830185612e3d565b82810360208401526124368185612e3d565b60008060408385031215612eb957600080fd5b82359150612ec960208401612c11565b90509250929050565b6020808252825182820181905260009190848201906040850190845b81811015612f3e57612f2b83855163ffffffff808251168352806020830151166020840152506001600160601b0360408201511660408301525050565b9284019260609290920191600101612eee565b50909695505050505050565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b0381118282101715612f8257612f82612f4a565b60405290565b604051601f8201601f191681016001600160401b0381118282101715612fb057612fb0612f4a565b604052919050565b60006001600160401b03821115612fd157612fd1612f4a565b5060051b60200190565b60008060408385031215612fee57600080fd5b612ff783612c11565b91506020808401356001600160401b0381111561301357600080fd5b8401601f8101861361302457600080fd5b803561303761303282612fb8565b612f88565b81815260059190911b8201830190838101908883111561305657600080fd5b928401925b828410156130745783358252928401929084019061305b565b80955050505050509250929050565b803563ffffffff81168114612c2257600080fd5b6000806000604084860312156130ac57600080fd5b6130b584613083565b925060208401356001600160401b038111156130d057600080fd5b6130dc86828701612da1565b9497909650939450505050565b6020808252825182820181905260009190848201906040850190845b81811015612f3e57835163ffffffff1683529284019291840191600101613105565b60008060006060848603121561313c57600080fd5b61314584612c11565b95602085013595506040909401359392505050565b815163ffffffff9081168252602080840151909116908201526040808301516001600160601b03169082015260608101610cc5565b80356001600160601b0381168114612c2257600080fd5b600080604083850312156131b957600080fd5b6131c283612c11565b9150612ec96020840161318f565b6000806000604084860312156131e557600080fd5b8335925060208401356001600160401b038111156130d057600080fd5b600082601f83011261321357600080fd5b8135602061322361303283612fb8565b82815260069290921b8401810191818101908684111561324257600080fd5b8286015b84811015613291576040818903121561325f5760008081fd5b613267612f60565b813561327281612c8e565b815261327f82860161318f565b81860152835291830191604001613246565b509695505050505050565b600080604083850312156132af57600080fd5b6132b883612c11565b915060208301356001600160401b038111156132d357600080fd5b6132df85828601613202565b9150509250929050565b6000806000606084860312156132fe57600080fd5b61330784612c11565b925061331560208501613083565b9150604084013590509250925092565b60008060006060848603121561333a57600080fd5b8335925061334a60208501612c11565b915061335860408501613083565b90509250925092565b6000806000806080858703121561337757600080fd5b61338085612c11565b935061338e60208601613083565b93969395505050506040820135916060013590565b6000806000606084860312156133b857600080fd5b6133c184612c11565b92506133cf6020850161318f565b915060408401356001600160401b038111156133ea57600080fd5b6133f686828701613202565b9150509250925092565b60208082526031908201527f5374616b6552656769737472792e71756f72756d4578697374733a2071756f726040820152701d5b48191bd95cc81b9bdd08195e1a5cdd607a1b606082015260800190565b60006020828403121561346357600080fd5b815161152181612c8e565b60208082526056908201527f5374616b6552656769737472792e6f6e6c79436f6f7264696e61746f724f776e60408201527f65723a2063616c6c6572206973206e6f7420746865206f776e6572206f6620746060820152753432903932b3b4b9ba393ca1b7b7b93234b730ba37b960511b608082015260a00190565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561351257600080fd5b6115218261318f565b634e487b7160e01b600052601160045260246000fd5b60006000198214156135455761354561351b565b5060010190565b6020808252604c908201527f5374616b6552656769737472792e6f6e6c795265676973747279436f6f72646960408201527f6e61746f723a2063616c6c6572206973206e6f7420746865205265676973747260608201526b3ca1b7b7b93234b730ba37b960a11b608082015260a00190565b6000828210156135d0576135d061351b565b500390565b634e487b7160e01b600052603160045260246000fd5b60006040820160018060a01b03808616845260206040818601528286548085526060870191508760005282600020945060005b8181101561363c57855485168352600195860195928401920161361e565b509098975050505050505050565b6000602080838503121561365d57600080fd5b82516001600160401b0381111561367357600080fd5b8301601f8101851361368457600080fd5b805161369261303282612fb8565b81815260059190911b820183019083810190878311156136b157600080fd5b928401925b828410156136cf578351825292840192908401906136b6565b979650505050505050565b60008160001904831182151516156136f4576136f461351b565b500290565b60008261371657634e487b7160e01b600052601260045260246000fd5b500490565b60006001600160601b0380831681851680830382111561373d5761373d61351b565b01949350505050565b600082198211156137595761375961351b565b500190565b60008161376d5761376d61351b565b506000190190565b60008083128015600160ff1b8501841216156137935761379361351b565b6001600160ff1b03840183138116156137ae576137ae61351b565b50500390565b6000600160ff1b8214156137ca576137ca61351b565b5060000390565b60006001600160601b03838116908316818110156137f1576137f161351b565b03939250505056fe5374616b6552656769737472792e5f6164645374726174656779506172616d73a2646970667358221220ca36d2119db6ac2267e616da7f122a461c6e82a6db3c9c4253c0027e81f9cf3764736f6c634300080c0033","storage":{}},"0x4c5859f0f772848b2d91f1d83e2fe57935348029":{"nonce":1,"balance":"0x0","code":"0x608060405234801561001057600080fd5b50600436106100a95760003560e01c8063a364f4da11610071578063a364f4da1461013f578063a50a640e14610152578063a98fb35514610179578063c4d66de81461018c578063e481af9d1461019f578063f2fde38b146101a757600080fd5b806333cfb7b7146100ae5780636b3aa72e146100d7578063715018a6146101115780638da5cb5b1461011b5780639926ee7d1461012c575b600080fd5b6100c16100bc366004611004565b6101ba565b6040516100ce9190611028565b60405180910390f35b7f0000000000000000000000005fc8d32690cc91d4c39d9d3abcbd16989f8757075b6040516001600160a01b0390911681526020016100ce565b61011961068a565b005b6033546001600160a01b03166100f9565b61011961013a36600461112a565b61069e565b61011961014d366004611004565b610773565b6100f97f0000000000000000000000001613beb3b2c4f22ee086b2b38c1476a3ce7f78e881565b6101196101873660046111d5565b61083a565b61011961019a366004611004565b61088e565b6100c16109a1565b6101196101b5366004611004565b610d6b565b6040516309aa152760e11b81526001600160a01b0382811660048301526060916000917f000000000000000000000000851356ae760d987e095750cceb3bc6014560891c16906313542a4e90602401602060405180830381865afa158015610226573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061024a9190611226565b60405163871ef04960e01b8152600481018290529091506000906001600160a01b037f000000000000000000000000851356ae760d987e095750cceb3bc6014560891c169063871ef04990602401602060405180830381865afa1580156102b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102d9919061123f565b90506001600160c01b038116158061037357507f000000000000000000000000851356ae760d987e095750cceb3bc6014560891c6001600160a01b0316639aa1653d6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561034a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061036e9190611268565b60ff16155b1561038f57505060408051600081526020810190915292915050565b60006103a3826001600160c01b0316610de4565b90506000805b8251811015610479577f000000000000000000000000998abeb3e57409262ae5b751f60747921b33613e6001600160a01b0316633ca5a5f58483815181106103f3576103f361128b565b01602001516040516001600160e01b031960e084901b16815260f89190911c6004820152602401602060405180830381865afa158015610437573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061045b9190611226565b61046590836112b7565b915080610471816112cf565b9150506103a9565b5060008167ffffffffffffffff81111561049557610495611075565b6040519080825280602002602001820160405280156104be578160200160208202803683370190505b5090506000805b845181101561067d5760008582815181106104e2576104e261128b565b0160200151604051633ca5a5f560e01b815260f89190911c6004820181905291506000906001600160a01b037f000000000000000000000000998abeb3e57409262ae5b751f60747921b33613e1690633ca5a5f590602401602060405180830381865afa158015610557573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061057b9190611226565b905060005b81811015610667576040516356e4026d60e11b815260ff84166004820152602481018290527f000000000000000000000000998abeb3e57409262ae5b751f60747921b33613e6001600160a01b03169063adc804da906044016040805180830381865afa1580156105f5573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061061991906112ea565b6000015186868151811061062f5761062f61128b565b6001600160a01b039092166020928302919091019091015284610651816112cf565b955050808061065f906112cf565b915050610580565b5050508080610675906112cf565b9150506104c5565b5090979650505050505050565b610692610ea7565b61069c6000610f01565b565b336001600160a01b037f000000000000000000000000851356ae760d987e095750cceb3bc6014560891c16146106ef5760405162461bcd60e51b81526004016106e69061135a565b60405180910390fd5b604051639926ee7d60e01b81526001600160a01b037f0000000000000000000000005fc8d32690cc91d4c39d9d3abcbd16989f8757071690639926ee7d9061073d908590859060040161141f565b600060405180830381600087803b15801561075757600080fd5b505af115801561076b573d6000803e3d6000fd5b505050505050565b336001600160a01b037f000000000000000000000000851356ae760d987e095750cceb3bc6014560891c16146107bb5760405162461bcd60e51b81526004016106e69061135a565b6040516351b27a6d60e11b81526001600160a01b0382811660048301527f0000000000000000000000005fc8d32690cc91d4c39d9d3abcbd16989f875707169063a364f4da906024015b600060405180830381600087803b15801561081f57600080fd5b505af1158015610833573d6000803e3d6000fd5b5050505050565b610842610ea7565b60405163a98fb35560e01b81526001600160a01b037f0000000000000000000000005fc8d32690cc91d4c39d9d3abcbd16989f875707169063a98fb3559061080590849060040161146a565b600054610100900460ff16158080156108ae5750600054600160ff909116105b806108c85750303b1580156108c8575060005460ff166001145b61092b5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016106e6565b6000805460ff19166001179055801561094e576000805461ff0019166101001790555b61095782610f53565b801561099d576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b606060007f000000000000000000000000851356ae760d987e095750cceb3bc6014560891c6001600160a01b0316639aa1653d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a03573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a279190611268565b60ff16905080610a4557505060408051600081526020810190915290565b6000805b82811015610afa57604051633ca5a5f560e01b815260ff821660048201527f000000000000000000000000998abeb3e57409262ae5b751f60747921b33613e6001600160a01b031690633ca5a5f590602401602060405180830381865afa158015610ab8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610adc9190611226565b610ae690836112b7565b915080610af2816112cf565b915050610a49565b5060008167ffffffffffffffff811115610b1657610b16611075565b604051908082528060200260200182016040528015610b3f578160200160208202803683370190505b5090506000805b7f000000000000000000000000851356ae760d987e095750cceb3bc6014560891c6001600160a01b0316639aa1653d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ba4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bc89190611268565b60ff16811015610d6157604051633ca5a5f560e01b815260ff821660048201526000907f000000000000000000000000998abeb3e57409262ae5b751f60747921b33613e6001600160a01b031690633ca5a5f590602401602060405180830381865afa158015610c3c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c609190611226565b905060005b81811015610d4c576040516356e4026d60e11b815260ff84166004820152602481018290527f000000000000000000000000998abeb3e57409262ae5b751f60747921b33613e6001600160a01b03169063adc804da906044016040805180830381865afa158015610cda573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cfe91906112ea565b60000151858581518110610d1457610d1461128b565b6001600160a01b039092166020928302919091019091015283610d36816112cf565b9450508080610d44906112cf565b915050610c65565b50508080610d59906112cf565b915050610b46565b5090949350505050565b610d73610ea7565b6001600160a01b038116610dd85760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016106e6565b610de181610f01565b50565b6060600080610df284610fbe565b61ffff1667ffffffffffffffff811115610e0e57610e0e611075565b6040519080825280601f01601f191660200182016040528015610e38576020820181803683370190505b5090506000805b825182108015610e50575061010081105b15610d61576001811b935085841615610e97578060f81b838381518110610e7957610e7961128b565b60200101906001600160f81b031916908160001a9053508160010191505b610ea0816112cf565b9050610e3f565b6033546001600160a01b0316331461069c5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106e6565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600054610100900460ff16610dd85760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016106e6565b6000805b8215610fe957610fd360018461147d565b9092169180610fe181611494565b915050610fc2565b92915050565b6001600160a01b0381168114610de157600080fd5b60006020828403121561101657600080fd5b813561102181610fef565b9392505050565b6020808252825182820181905260009190848201906040850190845b818110156110695783516001600160a01b031683529284019291840191600101611044565b50909695505050505050565b634e487b7160e01b600052604160045260246000fd5b6040516060810167ffffffffffffffff811182821017156110ae576110ae611075565b60405290565b600067ffffffffffffffff808411156110cf576110cf611075565b604051601f8501601f19908116603f011681019082821181831017156110f7576110f7611075565b8160405280935085815286868601111561111057600080fd5b858560208301376000602087830101525050509392505050565b6000806040838503121561113d57600080fd5b823561114881610fef565b9150602083013567ffffffffffffffff8082111561116557600080fd5b908401906060828703121561117957600080fd5b61118161108b565b82358281111561119057600080fd5b83019150601f820187136111a357600080fd5b6111b2878335602085016110b4565b815260208301356020820152604083013560408201528093505050509250929050565b6000602082840312156111e757600080fd5b813567ffffffffffffffff8111156111fe57600080fd5b8201601f8101841361120f57600080fd5b61121e848235602084016110b4565b949350505050565b60006020828403121561123857600080fd5b5051919050565b60006020828403121561125157600080fd5b81516001600160c01b038116811461102157600080fd5b60006020828403121561127a57600080fd5b815160ff8116811461102157600080fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600082198211156112ca576112ca6112a1565b500190565b60006000198214156112e3576112e36112a1565b5060010190565b6000604082840312156112fc57600080fd5b6040516040810181811067ffffffffffffffff8211171561131f5761131f611075565b604052825161132d81610fef565b815260208301516bffffffffffffffffffffffff8116811461134e57600080fd5b60208201529392505050565b60208082526052908201527f536572766963654d616e61676572426173652e6f6e6c7952656769737472794360408201527f6f6f7264696e61746f723a2063616c6c6572206973206e6f742074686520726560608201527133b4b9ba393c9031b7b7b93234b730ba37b960711b608082015260a00190565b6000815180845260005b818110156113f8576020818501810151868301820152016113dc565b8181111561140a576000602083870101525b50601f01601f19169290920160200192915050565b60018060a01b038316815260406020820152600082516060604084015261144960a08401826113d2565b90506020840151606084015260408401516080840152809150509392505050565b60208152600061102160208301846113d2565b60008282101561148f5761148f6112a1565b500390565b600061ffff808316818114156114ac576114ac6112a1565b600101939250505056fea2646970667358221220b070a5fe0143977307a6135fd67e091d8db3d51dfe10598f2ca4a2135c982e7764736f6c634300080c0033","storage":{"0x0":"0xff"}},"0x4e59b44847b379578588920ca78fbf26c0b4956c":{"nonce":0,"balance":"0x0","code":"0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe03601600081602082378035828234f58015156039578182fd5b8082525050506014600cf3","storage":{}},"0x5f3f1dbd7b74c6b46e8c44f98792a1daf8d69154":{"nonce":1,"balance":"0x0","code":"0x608060405234801561001057600080fd5b50600436106101fb5760003560e01c80636b92787e1161011a5780638da5cb5b116100ad578063e4e3ad771161007c578063e4e3ad77146104f6578063f2fde38b14610509578063f5c9899d1461051c578063f8c8765e14610542578063fabc1cbc1461055557600080fd5b80638da5cb5b14610490578063b98d0908146104a1578063cefdc1d4146104ae578063df5cf723146104cf57600080fd5b806372d18e8d116100e957806372d18e8d1461043b5780637afa1eed1461045a578063886f11951461046d5780638b00ce7c1461048057600080fd5b80636b92787e146103d85780636d14a987146103eb5780636efb463614610412578063715018a61461043357600080fd5b8063416c7e5e116101925780635c155662116101615780635c155662146103625780635c975abb146103825780635df459461461038a57806368304835146103b157600080fd5b8063416c7e5e146102f45780634f739f7414610307578063595c6a67146103275780635ac86ab71461032f57600080fd5b8063245a7bfc116101ce578063245a7bfc146102695780632cb223d5146102945780632d89f6fc146102b45780633563b0d1146102d457600080fd5b80630373408d1461020057806310d67a2f14610217578063136439dd1461022c578063171f1d5b1461023f575b600080fd5b60ce545b6040519081526020015b60405180910390f35b61022a610225366004614084565b610568565b005b61022a61023a3660046140a1565b610624565b61025261024d36600461421f565b610763565b60408051921515835290151560208301520161020e565b60cc5461027c906001600160a01b031681565b6040516001600160a01b03909116815260200161020e565b6102046102a236600461428d565b60cb6020526000908152604090205481565b6102046102c236600461428d565b60ca6020526000908152604090205481565b6102e76102e23660046142aa565b6108ed565b60405161020e9190614405565b61022a61030236600461442d565b610d83565b61031a610315366004614492565b610ef8565b60405161020e9190614596565b61022a61161e565b61035261033d366004614660565b606654600160ff9092169190911b9081161490565b604051901515815260200161020e565b6103756103703660046146a0565b6116e5565b60405161020e9190614751565b606654610204565b61027c7f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f3681565b61027c7f000000000000000000000000998abeb3e57409262ae5b751f60747921b33613e81565b61022a6103e6366004614795565b6118ad565b61027c7f000000000000000000000000851356ae760d987e095750cceb3bc6014560891c81565b610425610420366004614a6c565b611a4e565b60405161020e929190614b2c565b61022a612966565b60c95463ffffffff165b60405163ffffffff909116815260200161020e565b60cd5461027c906001600160a01b031681565b60655461027c906001600160a01b031681565b60c9546104459063ffffffff1681565b6033546001600160a01b031661027c565b6097546103529060ff1681565b6104c16104bc366004614b75565b61297a565b60405161020e929190614bb7565b61027c7f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc981565b61022a610504366004614bf0565b612b0c565b61022a610517366004614084565b612f86565b7f000000000000000000000000000000000000000000000000000000000000000a610445565b61022a610550366004614c64565b612ffc565b61022a6105633660046140a1565b61314d565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105bb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105df9190614cc0565b6001600160a01b0316336001600160a01b0316146106185760405162461bcd60e51b815260040161060f90614cdd565b60405180910390fd5b610621816132a9565b50565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa15801561066c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106909190614d27565b6106ac5760405162461bcd60e51b815260040161060f90614d44565b606654818116146107255760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c6974790000000000000000606482015260840161060f565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b60008060007f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001878760000151886020015188600001516000600281106107ab576107ab614d8c565b60200201518951600160200201518a602001516000600281106107d0576107d0614d8c565b60200201518b602001516001600281106107ec576107ec614d8c565b602090810291909101518c518d8301516040516108499a99989796959401988952602089019790975260408801959095526060870193909352608086019190915260a085015260c084015260e08301526101008201526101200190565b6040516020818303038152906040528051906020012060001c61086c9190614da2565b90506108df61088561087e88846133a0565b8690613437565b61088d6134cb565b6108d56108c6856108c0604080518082018252600080825260209182015281518083019092526001825260029082015290565b906133a0565b6108cf8c61358b565b90613437565b886201d4c061361b565b909890975095505050505050565b60606000846001600160a01b031663683048356040518163ffffffff1660e01b8152600401602060405180830381865afa15801561092f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109539190614cc0565b90506000856001600160a01b0316639e9923c26040518163ffffffff1660e01b8152600401602060405180830381865afa158015610995573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109b99190614cc0565b90506000866001600160a01b0316635df459466040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109fb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a1f9190614cc0565b9050600086516001600160401b03811115610a3c57610a3c6140ba565b604051908082528060200260200182016040528015610a6f57816020015b6060815260200190600190039081610a5a5790505b50905060005b8751811015610d77576000888281518110610a9257610a92614d8c565b0160200151604051638902624560e01b815260f89190911c6004820181905263ffffffff8a16602483015291506000906001600160a01b03871690638902624590604401600060405180830381865afa158015610af3573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610b1b9190810190614dc4565b905080516001600160401b03811115610b3657610b366140ba565b604051908082528060200260200182016040528015610b8157816020015b6040805160608101825260008082526020808301829052928201528252600019909201910181610b545790505b50848481518110610b9457610b94614d8c565b602002602001018190525060005b8151811015610d61576040518060600160405280876001600160a01b03166347b314e8858581518110610bd757610bd7614d8c565b60200260200101516040518263ffffffff1660e01b8152600401610bfd91815260200190565b602060405180830381865afa158015610c1a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c3e9190614cc0565b6001600160a01b03168152602001838381518110610c5e57610c5e614d8c565b60200260200101518152602001896001600160a01b031663fa28c627858581518110610c8c57610c8c614d8c565b60209081029190910101516040516001600160e01b031960e084901b168152600481019190915260ff8816602482015263ffffffff8f166044820152606401602060405180830381865afa158015610ce8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d0c9190614e54565b6001600160601b0316815250858581518110610d2a57610d2a614d8c565b60200260200101518281518110610d4357610d43614d8c565b60200260200101819052508080610d5990614e93565b915050610ba2565b5050508080610d6f90614e93565b915050610a75565b50979650505050505050565b7f000000000000000000000000851356ae760d987e095750cceb3bc6014560891c6001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610de1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e059190614cc0565b6001600160a01b0316336001600160a01b031614610eb15760405162461bcd60e51b815260206004820152605c60248201527f424c535369676e6174757265436865636b65722e6f6e6c79436f6f7264696e6160448201527f746f724f776e65723a2063616c6c6572206973206e6f7420746865206f776e6560648201527f72206f6620746865207265676973747279436f6f7264696e61746f7200000000608482015260a40161060f565b6097805460ff19168215159081179091556040519081527f40e4ed880a29e0f6ddce307457fb75cddf4feef7d3ecb0301bfdf4976a0e2dfc9060200160405180910390a150565b610f236040518060800160405280606081526020016060815260200160608152602001606081525090565b6000876001600160a01b031663683048356040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f63573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f879190614cc0565b9050610fb46040518060800160405280606081526020016060815260200160608152602001606081525090565b6040516361c8a12f60e11b81526001600160a01b038a169063c391425e90610fe4908b9089908990600401614eae565b600060405180830381865afa158015611001573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526110299190810190614ef8565b81526040516340e03a8160e11b81526001600160a01b038316906381c075029061105b908b908b908b90600401614faf565b600060405180830381865afa158015611078573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526110a09190810190614ef8565b6040820152856001600160401b038111156110bd576110bd6140ba565b6040519080825280602002602001820160405280156110f057816020015b60608152602001906001900390816110db5790505b50606082015260005b60ff811687111561152f576000856001600160401b0381111561111e5761111e6140ba565b604051908082528060200260200182016040528015611147578160200160208202803683370190505b5083606001518360ff168151811061116157611161614d8c565b602002602001018190525060005b8681101561142f5760008c6001600160a01b03166304ec63518a8a8581811061119a5761119a614d8c565b905060200201358e886000015186815181106111b8576111b8614d8c565b60200260200101516040518463ffffffff1660e01b81526004016111f59392919092835263ffffffff918216602084015216604082015260600190565b602060405180830381865afa158015611212573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112369190614fd8565b90506001600160c01b0381166112da5760405162461bcd60e51b815260206004820152605c60248201527f4f70657261746f7253746174655265747269657665722e676574436865636b5360448201527f69676e617475726573496e64696365733a206f70657261746f72206d7573742060648201527f6265207265676973746572656420617420626c6f636b6e756d62657200000000608482015260a40161060f565b8a8a8560ff168181106112ef576112ef614d8c565b6001600160c01b03841692013560f81c9190911c60019081161415905061141c57856001600160a01b031663dd9846b98a8a8581811061133157611331614d8c565b905060200201358d8d8860ff1681811061134d5761134d614d8c565b6040516001600160e01b031960e087901b1681526004810194909452919091013560f81c60248301525063ffffffff8f166044820152606401602060405180830381865afa1580156113a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113c79190615001565b85606001518560ff16815181106113e0576113e0614d8c565b602002602001015184815181106113f9576113f9614d8c565b63ffffffff909216602092830291909101909101528261141881614e93565b9350505b508061142781614e93565b91505061116f565b506000816001600160401b0381111561144a5761144a6140ba565b604051908082528060200260200182016040528015611473578160200160208202803683370190505b50905060005b828110156114f45784606001518460ff168151811061149a5761149a614d8c565b602002602001015181815181106114b3576114b3614d8c565b60200260200101518282815181106114cd576114cd614d8c565b63ffffffff90921660209283029190910190910152806114ec81614e93565b915050611479565b508084606001518460ff168151811061150f5761150f614d8c565b6020026020010181905250505080806115279061501e565b9150506110f9565b506000896001600160a01b0316635df459466040518163ffffffff1660e01b8152600401602060405180830381865afa158015611570573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115949190614cc0565b60405163354952a360e21b81529091506001600160a01b0382169063d5254a8c906115c7908b908b908e9060040161503e565b600060405180830381865afa1580156115e4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261160c9190810190614ef8565b60208301525098975050505050505050565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015611666573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061168a9190614d27565b6116a65760405162461bcd60e51b815260040161060f90614d44565b600019606681905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b60606000846001600160a01b031663c391425e84866040518363ffffffff1660e01b8152600401611717929190615068565b600060405180830381865afa158015611734573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261175c9190810190614ef8565b9050600084516001600160401b03811115611779576117796140ba565b6040519080825280602002602001820160405280156117a2578160200160208202803683370190505b50905060005b85518110156118a357866001600160a01b03166304ec63518783815181106117d2576117d2614d8c565b6020026020010151878685815181106117ed576117ed614d8c565b60200260200101516040518463ffffffff1660e01b815260040161182a9392919092835263ffffffff918216602084015216604082015260600190565b602060405180830381865afa158015611847573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061186b9190614fd8565b6001600160c01b031682828151811061188657611886614d8c565b60209081029190910101528061189b81614e93565b9150506117a8565b5095945050505050565b60cd546001600160a01b031633146119115760405162461bcd60e51b815260206004820152602160248201527f5461736b2067656e657261746f72206d757374206265207468652063616c6c656044820152603960f91b606482015260840161060f565b611948604051806080016040528060008152602001600063ffffffff16815260200160608152602001600063ffffffff1681525090565b84815263ffffffff438116602080840191909152908516606083015260408051601f8501839004830281018301909152838152908490849081908401838280828437600092019190915250505050604080830191909152516119ae9082906020016150bc565b60408051601f19818403018152828252805160209182012060c9805463ffffffff908116600090815260ca90945293909220555416907f1695b8d06ec800b4615e745cfb5bd00c1f2875615d42925c3b5afa543bb24c4890611a119084906150bc565b60405180910390a260c954611a2d9063ffffffff166001615147565b60c9805463ffffffff191663ffffffff929092169190911790555050505050565b6040805180820190915260608082526020820152600084611ac55760405162461bcd60e51b8152602060048201526037602482015260008051602061549383398151915260448201527f7265733a20656d7074792071756f72756d20696e707574000000000000000000606482015260840161060f565b60408301515185148015611add575060a08301515185145b8015611aed575060c08301515185145b8015611afd575060e08301515185145b611b675760405162461bcd60e51b8152602060048201526041602482015260008051602061549383398151915260448201527f7265733a20696e7075742071756f72756d206c656e677468206d69736d6174636064820152600d60fb1b608482015260a40161060f565b82515160208401515114611bdf5760405162461bcd60e51b815260206004820152604460248201819052600080516020615493833981519152908201527f7265733a20696e707574206e6f6e7369676e6572206c656e677468206d69736d6064820152630c2e8c6d60e31b608482015260a40161060f565b4363ffffffff168463ffffffff1610611c4e5760405162461bcd60e51b815260206004820152603c602482015260008051602061549383398151915260448201527f7265733a20696e76616c6964207265666572656e636520626c6f636b00000000606482015260840161060f565b6040805180820182526000808252602080830191909152825180840190935260608084529083015290866001600160401b03811115611c8f57611c8f6140ba565b604051908082528060200260200182016040528015611cb8578160200160208202803683370190505b506020820152866001600160401b03811115611cd657611cd66140ba565b604051908082528060200260200182016040528015611cff578160200160208202803683370190505b50815260408051808201909152606080825260208201528560200151516001600160401b03811115611d3357611d336140ba565b604051908082528060200260200182016040528015611d5c578160200160208202803683370190505b5081526020860151516001600160401b03811115611d7c57611d7c6140ba565b604051908082528060200260200182016040528015611da5578160200160208202803683370190505b5081602001819052506000611e778a8a8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051639aa1653d60e01b815290516001600160a01b037f000000000000000000000000851356ae760d987e095750cceb3bc6014560891c169350639aa1653d925060048083019260209291908290030181865afa158015611e4e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e72919061516f565b61383f565b905060005b87602001515181101561211257611ec188602001518281518110611ea257611ea2614d8c565b6020026020010151805160009081526020918201519091526040902090565b83602001518281518110611ed757611ed7614d8c565b60209081029190910101528015611f97576020830151611ef860018361518c565b81518110611f0857611f08614d8c565b602002602001015160001c83602001518281518110611f2957611f29614d8c565b602002602001015160001c11611f97576040805162461bcd60e51b815260206004820152602481019190915260008051602061549383398151915260448201527f7265733a206e6f6e5369676e65725075626b657973206e6f7420736f72746564606482015260840161060f565b7f000000000000000000000000851356ae760d987e095750cceb3bc6014560891c6001600160a01b03166304ec635184602001518381518110611fdc57611fdc614d8c565b60200260200101518b8b600001518581518110611ffb57611ffb614d8c565b60200260200101516040518463ffffffff1660e01b81526004016120389392919092835263ffffffff918216602084015216604082015260600190565b602060405180830381865afa158015612055573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120799190614fd8565b6001600160c01b03168360000151828151811061209857612098614d8c565b6020026020010181815250506120fe61087e6120d284866000015185815181106120c4576120c4614d8c565b6020026020010151166138d2565b8a6020015184815181106120e8576120e8614d8c565b60200260200101516138fd90919063ffffffff16565b94508061210a81614e93565b915050611e7c565b505061211d836139e1565b60975490935060ff166000816121345760006121b6565b7f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc96001600160a01b031663c448feb86040518163ffffffff1660e01b8152600401602060405180830381865afa158015612192573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121b691906151a3565b905060005b8a811015612835578215612317578963ffffffff16827f000000000000000000000000851356ae760d987e095750cceb3bc6014560891c6001600160a01b031663249a0c428f8f8681811061221257612212614d8c565b60405160e085901b6001600160e01b031916815292013560f81c600483015250602401602060405180830381865afa158015612252573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061227691906151a3565b61228091906151bc565b10156123175760405162461bcd60e51b8152602060048201526066602482015260008051602061549383398151915260448201527f7265733a205374616b6552656769737472792075706461746573206d7573742060648201527f62652077697468696e207769746864726177616c44656c6179426c6f636b732060848201526577696e646f7760d01b60a482015260c40161060f565b7f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f366001600160a01b03166368bccaac8d8d8481811061235857612358614d8c565b9050013560f81c60f81b60f81c8c8c60a00151858151811061237c5761237c614d8c565b60209081029190910101516040516001600160e01b031960e086901b16815260ff909316600484015263ffffffff9182166024840152166044820152606401602060405180830381865afa1580156123d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123fc91906151d4565b6001600160401b03191661241f8a604001518381518110611ea257611ea2614d8c565b67ffffffffffffffff1916146124bb5760405162461bcd60e51b8152602060048201526061602482015260008051602061549383398151915260448201527f7265733a2071756f72756d41706b206861736820696e2073746f72616765206460648201527f6f6573206e6f74206d617463682070726f76696465642071756f72756d2061706084820152606b60f81b60a482015260c40161060f565b6124eb896040015182815181106124d4576124d4614d8c565b60200260200101518761343790919063ffffffff16565b95507f000000000000000000000000998abeb3e57409262ae5b751f60747921b33613e6001600160a01b031663c8294c568d8d8481811061252e5761252e614d8c565b9050013560f81c60f81b60f81c8c8c60c00151858151811061255257612552614d8c565b60209081029190910101516040516001600160e01b031960e086901b16815260ff909316600484015263ffffffff9182166024840152166044820152606401602060405180830381865afa1580156125ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125d29190614e54565b856020015182815181106125e8576125e8614d8c565b6001600160601b0390921660209283029190910182015285015180518290811061261457612614614d8c565b60200260200101518560000151828151811061263257612632614d8c565b60200260200101906001600160601b031690816001600160601b0316815250506000805b8a6020015151811015612820576126aa8660000151828151811061267c5761267c614d8c565b60200260200101518f8f8681811061269657612696614d8c565b600192013560f81c9290921c811614919050565b1561280e577f000000000000000000000000998abeb3e57409262ae5b751f60747921b33613e6001600160a01b031663f2be94ae8f8f868181106126f0576126f0614d8c565b9050013560f81c60f81b60f81c8e8960200151858151811061271457612714614d8c565b60200260200101518f60e00151888151811061273257612732614d8c565b6020026020010151878151811061274b5761274b614d8c565b60209081029190910101516040516001600160e01b031960e087901b16815260ff909416600485015263ffffffff92831660248501526044840191909152166064820152608401602060405180830381865afa1580156127af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127d39190614e54565b87518051859081106127e7576127e7614d8c565b602002602001018181516127fb91906151ff565b6001600160601b03169052506001909101905b8061281881614e93565b915050612656565b5050808061282d90614e93565b9150506121bb565b50505060008061284f8c868a606001518b60800151610763565b91509150816128c05760405162461bcd60e51b8152602060048201526043602482015260008051602061549383398151915260448201527f7265733a2070616972696e6720707265636f6d70696c652063616c6c206661696064820152621b195960ea1b608482015260a40161060f565b806129215760405162461bcd60e51b8152602060048201526039602482015260008051602061549383398151915260448201527f7265733a207369676e617475726520697320696e76616c696400000000000000606482015260840161060f565b5050600087826020015160405160200161293c929190615227565b60408051808303601f190181529190528051602090910120929b929a509198505050505050505050565b61296e613a7c565b6129786000613ad6565b565b60408051600180825281830190925260009160609183916020808301908036833701905050905084816000815181106129b5576129b5614d8c565b60209081029190910101526040516361c8a12f60e11b81526000906001600160a01b0388169063c391425e906129f19088908690600401615068565b600060405180830381865afa158015612a0e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612a369190810190614ef8565b600081518110612a4857612a48614d8c565b60209081029190910101516040516304ec635160e01b81526004810188905263ffffffff87811660248301529091166044820181905291506000906001600160a01b038916906304ec635190606401602060405180830381865afa158015612ab4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ad89190614fd8565b6001600160c01b031690506000612aee82613b28565b905081612afc8a838a6108ed565b9550955050505050935093915050565b60cc546001600160a01b03163314612b665760405162461bcd60e51b815260206004820152601d60248201527f41676772656761746f72206d757374206265207468652063616c6c6572000000604482015260640161060f565b6000612b78604085016020860161428d565b9050366000612b8a604087018761526f565b90925090506000612ba1608088016060890161428d565b905060ca6000612bb4602089018961428d565b63ffffffff1663ffffffff1681526020019081526020016000205487604051602001612be091906152b5565b6040516020818303038152906040528051906020012014612c695760405162461bcd60e51b815260206004820152603d60248201527f737570706c696564207461736b20646f6573206e6f74206d617463682074686560448201527f206f6e65207265636f7264656420696e2074686520636f6e7472616374000000606482015260840161060f565b600060cb81612c7b60208a018a61428d565b63ffffffff1663ffffffff1681526020019081526020016000205414612cf85760405162461bcd60e51b815260206004820152602c60248201527f41676772656761746f722068617320616c726561647920726573706f6e64656460448201526b20746f20746865207461736b60a01b606482015260840161060f565b612d227f000000000000000000000000000000000000000000000000000000000000000a85615147565b63ffffffff164363ffffffff161115612d935760405162461bcd60e51b815260206004820152602d60248201527f41676772656761746f722068617320726573706f6e64656420746f207468652060448201526c7461736b20746f6f206c61746560981b606482015260840161060f565b600086604051602001612da69190615388565b604051602081830303815290604052805190602001209050600080612dce8387878a8c611a4e565b6040805160808101825263ffffffff43168152602080820184905280850151828401528451606083015291519395509193509091612e10918c91849101615396565b6040516020818303038152906040528051906020012060cb60008c6000016020810190612e3d919061428d565b63ffffffff1663ffffffff168152602001908152602001600020819055507fb6b77f791d125b1522410ab3adf6a5ea133c836a193ce67ed29c129ca1d8f5c08a82604051612e8c929190615396565b60405180910390a160005b86811015612f2d578560ff1684602001518281518110612eb957612eb9614d8c565b6020026020010151612ecb9190615402565b6001600160601b0316606485600001518381518110612eec57612eec614d8c565b60200260200101516001600160601b0316612f079190615431565b1015612f1b57505050505050505050505050565b80612f2581614e93565b915050612e97565b5060608a013560ce5560208a01803590612f47908c61428d565b63ffffffff167f8378be8a33cf3a493910a16e275cd96af4f048c5eb1a2c2962d4066e697fea8060405160405180910390a35050505050505050505050565b612f8e613a7c565b6001600160a01b038116612ff35760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161060f565b61062181613ad6565b600054610100900460ff161580801561301c5750600054600160ff909116105b806130365750303b158015613036575060005460ff166001145b6130995760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161060f565b6000805460ff1916600117905580156130bc576000805461ff0019166101001790555b6130c7856000613bf4565b6130d084613ad6565b60cc80546001600160a01b038086166001600160a01b03199283161790925560cd8054928516929091169190911790558015613146576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156131a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131c49190614cc0565b6001600160a01b0316336001600160a01b0316146131f45760405162461bcd60e51b815260040161060f90614cdd565b6066541981196066541916146132725760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c6974790000000000000000606482015260840161060f565b606681905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c90602001610758565b6001600160a01b0381166133375760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a40161060f565b606554604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1606580546001600160a01b0319166001600160a01b0392909216919091179055565b60408051808201909152600080825260208201526133bc613f95565b835181526020808501519082015260408082018490526000908360608460076107d05a03fa90508080156133ef576133f1565bfe5b508061342f5760405162461bcd60e51b815260206004820152600d60248201526c1958cb5b5d5b0b59985a5b1959609a1b604482015260640161060f565b505092915050565b6040805180820190915260008082526020820152613453613fb3565b835181526020808501518183015283516040808401919091529084015160608301526000908360808460066107d05a03fa90508080156133ef57508061342f5760405162461bcd60e51b815260206004820152600d60248201526c1958cb5859190b59985a5b1959609a1b604482015260640161060f565b6134d3613fd1565b50604080516080810182527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c28183019081527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed6060830152815281518083019092527f275dc4a288d1afb3cbb1ac09187524c7db36395df7be3b99e673b13a075a65ec82527f1d9befcd05a5323e6da4d435f3b617cdb3af83285c2df711ef39c01571827f9d60208381019190915281019190915290565b6040805180820190915260008082526020820152600080806135bb60008051602061547383398151915286614da2565b90505b6135c781613cde565b9093509150600080516020615473833981519152828309831415613601576040805180820190915290815260208101919091529392505050565b6000805160206154738339815191526001820890506135be565b60408051808201825286815260208082018690528251808401909352868352820184905260009182919061364d613ff6565b60005b6002811015613812576000613666826006615431565b905084826002811061367a5761367a614d8c565b6020020151518361368c8360006151bc565b600c811061369c5761369c614d8c565b60200201528482600281106136b3576136b3614d8c565b602002015160200151838260016136ca91906151bc565b600c81106136da576136da614d8c565b60200201528382600281106136f1576136f1614d8c565b60200201515151836137048360026151bc565b600c811061371457613714614d8c565b602002015283826002811061372b5761372b614d8c565b60200201515160016020020151836137448360036151bc565b600c811061375457613754614d8c565b602002015283826002811061376b5761376b614d8c565b60200201516020015160006002811061378657613786614d8c565b6020020151836137978360046151bc565b600c81106137a7576137a7614d8c565b60200201528382600281106137be576137be614d8c565b6020020151602001516001600281106137d9576137d9614d8c565b6020020151836137ea8360056151bc565b600c81106137fa576137fa614d8c565b6020020152508061380a81614e93565b915050613650565b5061381b614015565b60006020826101808560088cfa9151919c9115159b50909950505050505050505050565b60008061384b84613d60565b9050808360ff166001901b116138c95760405162461bcd60e51b815260206004820152603f60248201527f4269746d61705574696c732e6f72646572656442797465734172726179546f4260448201527f69746d61703a206269746d61702065786365656473206d61782076616c756500606482015260840161060f565b90505b92915050565b6000805b82156138cc576138e760018461518c565b90921691806138f581615450565b9150506138d6565b60408051808201909152600080825260208201526102008261ffff16106139595760405162461bcd60e51b815260206004820152601060248201526f7363616c61722d746f6f2d6c6172676560801b604482015260640161060f565b8161ffff166001141561396d5750816138cc565b6040805180820190915260008082526020820181905284906001905b8161ffff168661ffff16106139d657600161ffff871660ff83161c811614156139b9576139b68484613437565b93505b6139c38384613437565b92506201fffe600192831b169101613989565b509195945050505050565b60408051808201909152600080825260208201528151158015613a0657506020820151155b15613a24575050604080518082019091526000808252602082015290565b6040518060400160405280836000015181526020016000805160206154738339815191528460200151613a579190614da2565b613a6f9060008051602061547383398151915261518c565b905292915050565b919050565b6033546001600160a01b031633146129785760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161060f565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6060600080613b36846138d2565b61ffff166001600160401b03811115613b5157613b516140ba565b6040519080825280601f01601f191660200182016040528015613b7b576020820181803683370190505b5090506000805b825182108015613b93575061010081105b15613bea576001811b935085841615613bda578060f81b838381518110613bbc57613bbc614d8c565b60200101906001600160f81b031916908160001a9053508160010191505b613be381614e93565b9050613b82565b5090949350505050565b6065546001600160a01b0316158015613c1557506001600160a01b03821615155b613c975760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a40161060f565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2613cda826132a9565b5050565b60008080600080516020615473833981519152600360008051602061547383398151915286600080516020615473833981519152888909090890506000613d54827f0c19139cb84c680a6e14116da060561765e05aa45a1c72a34f082305b61f3f52600080516020615473833981519152613eed565b91959194509092505050565b600061010082511115613de95760405162461bcd60e51b8152602060048201526044602482018190527f4269746d61705574696c732e6f72646572656442797465734172726179546f42908201527f69746d61703a206f7264657265644279746573417272617920697320746f6f206064820152636c6f6e6760e01b608482015260a40161060f565b8151613df757506000919050565b60008083600081518110613e0d57613e0d614d8c565b0160200151600160f89190911c81901b92505b8451811015613ee457848181518110613e3b57613e3b614d8c565b0160200151600160f89190911c1b9150828211613ed05760405162461bcd60e51b815260206004820152604760248201527f4269746d61705574696c732e6f72646572656442797465734172726179546f4260448201527f69746d61703a206f72646572656442797465734172726179206973206e6f74206064820152661bdc99195c995960ca1b608482015260a40161060f565b91811791613edd81614e93565b9050613e20565b50909392505050565b600080613ef8614015565b613f00614033565b602080825281810181905260408201819052606082018890526080820187905260a082018690528260c08360056107d05a03fa92508280156133ef575082613f8a5760405162461bcd60e51b815260206004820152601a60248201527f424e3235342e6578704d6f643a2063616c6c206661696c757265000000000000604482015260640161060f565b505195945050505050565b60405180606001604052806003906020820280368337509192915050565b60405180608001604052806004906020820280368337509192915050565b6040518060400160405280613fe4614051565b8152602001613ff1614051565b905290565b604051806101800160405280600c906020820280368337509192915050565b60405180602001604052806001906020820280368337509192915050565b6040518060c001604052806006906020820280368337509192915050565b60405180604001604052806002906020820280368337509192915050565b6001600160a01b038116811461062157600080fd5b60006020828403121561409657600080fd5b81356138c98161406f565b6000602082840312156140b357600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b03811182821017156140f2576140f26140ba565b60405290565b60405161010081016001600160401b03811182821017156140f2576140f26140ba565b604051601f8201601f191681016001600160401b0381118282101715614143576141436140ba565b604052919050565b60006040828403121561415d57600080fd5b6141656140d0565b9050813581526020820135602082015292915050565b600082601f83011261418c57600080fd5b604051604081018181106001600160401b03821117156141ae576141ae6140ba565b80604052508060408401858111156141c557600080fd5b845b818110156139d65780358352602092830192016141c7565b6000608082840312156141f157600080fd5b6141f96140d0565b9050614205838361417b565b8152614214836040840161417b565b602082015292915050565b600080600080610120858703121561423657600080fd5b84359350614247866020870161414b565b925061425686606087016141df565b91506142658660e0870161414b565b905092959194509250565b63ffffffff8116811461062157600080fd5b8035613a7781614270565b60006020828403121561429f57600080fd5b81356138c981614270565b6000806000606084860312156142bf57600080fd5b83356142ca8161406f565b92506020848101356001600160401b03808211156142e757600080fd5b818701915087601f8301126142fb57600080fd5b81358181111561430d5761430d6140ba565b61431f601f8201601f1916850161411b565b9150808252888482850101111561433557600080fd5b808484018584013760008482840101525080945050505061435860408501614282565b90509250925092565b600081518084526020808501808196508360051b810191508286016000805b868110156143f7578385038a52825180518087529087019087870190845b818110156143e257835180516001600160a01b031684528a8101518b8501526040908101516001600160601b0316908401529289019260609092019160010161439e565b50509a87019a95505091850191600101614380565b509298975050505050505050565b6020815260006144186020830184614361565b9392505050565b801515811461062157600080fd5b60006020828403121561443f57600080fd5b81356138c98161441f565b60008083601f84011261445c57600080fd5b5081356001600160401b0381111561447357600080fd5b60208301915083602082850101111561448b57600080fd5b9250929050565b600080600080600080608087890312156144ab57600080fd5b86356144b68161406f565b955060208701356144c681614270565b945060408701356001600160401b03808211156144e257600080fd5b6144ee8a838b0161444a565b9096509450606089013591508082111561450757600080fd5b818901915089601f83011261451b57600080fd5b81358181111561452a57600080fd5b8a60208260051b850101111561453f57600080fd5b6020830194508093505050509295509295509295565b600081518084526020808501945080840160005b8381101561458b57815163ffffffff1687529582019590820190600101614569565b509495945050505050565b6000602080835283516080828501526145b260a0850182614555565b905081850151601f19808684030160408701526145cf8383614555565b925060408701519150808684030160608701526145ec8383614555565b60608801518782038301608089015280518083529194508501925084840190600581901b8501860160005b828110156146435784878303018452614631828751614555565b95880195938801939150600101614617565b509998505050505050505050565b60ff8116811461062157600080fd5b60006020828403121561467257600080fd5b81356138c981614651565b60006001600160401b03821115614696576146966140ba565b5060051b60200190565b6000806000606084860312156146b557600080fd5b83356146c08161406f565b92506020848101356001600160401b038111156146dc57600080fd5b8501601f810187136146ed57600080fd5b80356147006146fb8261467d565b61411b565b81815260059190911b8201830190838101908983111561471f57600080fd5b928401925b8284101561473d57833582529284019290840190614724565b809650505050505061435860408501614282565b6020808252825182820181905260009190848201906040850190845b818110156147895783518352928401929184019160010161476d565b50909695505050505050565b600080600080606085870312156147ab57600080fd5b8435935060208501356147bd81614270565b925060408501356001600160401b038111156147d857600080fd5b6147e48782880161444a565b95989497509550505050565b600082601f83011261480157600080fd5b813560206148116146fb8361467d565b82815260059290921b8401810191818101908684111561483057600080fd5b8286015b8481101561485457803561484781614270565b8352918301918301614834565b509695505050505050565b600082601f83011261487057600080fd5b813560206148806146fb8361467d565b82815260069290921b8401810191818101908684111561489f57600080fd5b8286015b84811015614854576148b5888261414b565b8352918301916040016148a3565b600082601f8301126148d457600080fd5b813560206148e46146fb8361467d565b82815260059290921b8401810191818101908684111561490357600080fd5b8286015b848110156148545780356001600160401b038111156149265760008081fd5b6149348986838b01016147f0565b845250918301918301614907565b6000610180828403121561495557600080fd5b61495d6140f8565b905081356001600160401b038082111561497657600080fd5b614982858386016147f0565b8352602084013591508082111561499857600080fd5b6149a48583860161485f565b602084015260408401359150808211156149bd57600080fd5b6149c98583860161485f565b60408401526149db85606086016141df565b60608401526149ed8560e0860161414b565b6080840152610120840135915080821115614a0757600080fd5b614a13858386016147f0565b60a0840152610140840135915080821115614a2d57600080fd5b614a39858386016147f0565b60c0840152610160840135915080821115614a5357600080fd5b50614a60848285016148c3565b60e08301525092915050565b600080600080600060808688031215614a8457600080fd5b8535945060208601356001600160401b0380821115614aa257600080fd5b614aae89838a0161444a565b909650945060408801359150614ac382614270565b90925060608701359080821115614ad957600080fd5b50614ae688828901614942565b9150509295509295909350565b600081518084526020808501945080840160005b8381101561458b5781516001600160601b031687529582019590820190600101614b07565b6040815260008351604080840152614b476080840182614af3565b90506020850151603f19848303016060850152614b648282614af3565b925050508260208301529392505050565b600080600060608486031215614b8a57600080fd5b8335614b958161406f565b9250602084013591506040840135614bac81614270565b809150509250925092565b828152604060208201526000614bd06040830184614361565b949350505050565b600060808284031215614bea57600080fd5b50919050565b600080600060c08486031215614c0557600080fd5b83356001600160401b0380821115614c1c57600080fd5b614c2887838801614bd8565b9450614c378760208801614bd8565b935060a0860135915080821115614c4d57600080fd5b50614c5a86828701614942565b9150509250925092565b60008060008060808587031215614c7a57600080fd5b8435614c858161406f565b93506020850135614c958161406f565b92506040850135614ca58161406f565b91506060850135614cb58161406f565b939692955090935050565b600060208284031215614cd257600080fd5b81516138c98161406f565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b600060208284031215614d3957600080fd5b81516138c98161441f565b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b600082614dbf57634e487b7160e01b600052601260045260246000fd5b500690565b60006020808385031215614dd757600080fd5b82516001600160401b03811115614ded57600080fd5b8301601f81018513614dfe57600080fd5b8051614e0c6146fb8261467d565b81815260059190911b82018301908381019087831115614e2b57600080fd5b928401925b82841015614e4957835182529284019290840190614e30565b979650505050505050565b600060208284031215614e6657600080fd5b81516001600160601b03811681146138c957600080fd5b634e487b7160e01b600052601160045260246000fd5b6000600019821415614ea757614ea7614e7d565b5060010190565b63ffffffff84168152604060208201819052810182905260006001600160fb1b03831115614edb57600080fd5b8260051b8085606085013760009201606001918252509392505050565b60006020808385031215614f0b57600080fd5b82516001600160401b03811115614f2157600080fd5b8301601f81018513614f3257600080fd5b8051614f406146fb8261467d565b81815260059190911b82018301908381019087831115614f5f57600080fd5b928401925b82841015614e49578351614f7781614270565b82529284019290840190614f64565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b63ffffffff84168152604060208201526000614fcf604083018486614f86565b95945050505050565b600060208284031215614fea57600080fd5b81516001600160c01b03811681146138c957600080fd5b60006020828403121561501357600080fd5b81516138c981614270565b600060ff821660ff81141561503557615035614e7d565b60010192915050565b604081526000615052604083018587614f86565b905063ffffffff83166020830152949350505050565b60006040820163ffffffff851683526020604081850152818551808452606086019150828701935060005b818110156150af57845183529383019391830191600101615093565b5090979650505050505050565b6000602080835283518184015263ffffffff8185015116604084015260408401516080606085015280518060a086015260005b8181101561510b5782810184015186820160c0015283016150ef565b8181111561511d57600060c083880101525b50606086015163ffffffff811660808701529250601f01601f19169390930160c001949350505050565b600063ffffffff80831681851680830382111561516657615166614e7d565b01949350505050565b60006020828403121561518157600080fd5b81516138c981614651565b60008282101561519e5761519e614e7d565b500390565b6000602082840312156151b557600080fd5b5051919050565b600082198211156151cf576151cf614e7d565b500190565b6000602082840312156151e657600080fd5b815167ffffffffffffffff19811681146138c957600080fd5b60006001600160601b038381169083168181101561521f5761521f614e7d565b039392505050565b63ffffffff60e01b8360e01b1681526000600482018351602080860160005b8381101561526257815185529382019390820190600101615246565b5092979650505050505050565b6000808335601e1984360301811261528657600080fd5b8301803591506001600160401b038211156152a057600080fd5b60200191503681900382131561448b57600080fd5b6020815281356020820152600060208301356152d081614270565b63ffffffff81166040840152506040830135601e198436030181126152f457600080fd5b830180356001600160401b0381111561530c57600080fd5b80360385131561531b57600080fd5b6080606085015261533360a085018260208501614f86565b91505061534260608501614282565b63ffffffff81166080850152509392505050565b803561536181614270565b63ffffffff1682526020818101359083015260408082013590830152606090810135910152565b608081016138cc8284615356565b6153a08184615356565b60a0608082015263ffffffff82511660a0820152602082015160c082015260006040830151608060e08401526153da610120840182614af3565b90506060840151609f19848303016101008501526153f88282614af3565b9695505050505050565b60006001600160601b038083168185168183048111821515161561542857615428614e7d565b02949350505050565b600081600019048311821515161561544b5761544b614e7d565b500290565b600061ffff8083168181141561546857615468614e7d565b600101939250505056fe30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47424c535369676e6174757265436865636b65722e636865636b5369676e617475a2646970667358221220b10039e976d5dde5e4b407e25e093bd764578137a60f9e3ee7e47f00266cce2b64736f6c634300080c0033","storage":{"0x97":"0x1"}},"0x5fbdb2315678afecb367f032d93f642f64180aa3":{"nonce":1,"balance":"0x0","code":"0x60806040526004361061007b5760003560e01c80639623609d1161004e5780639623609d1461011157806399a88ec414610124578063f2fde38b14610144578063f3b7dead1461016457600080fd5b8063204e1c7a14610080578063715018a6146100bc5780637eff275e146100d35780638da5cb5b146100f3575b600080fd5b34801561008c57600080fd5b506100a061009b366004610499565b610184565b6040516001600160a01b03909116815260200160405180910390f35b3480156100c857600080fd5b506100d1610215565b005b3480156100df57600080fd5b506100d16100ee3660046104bd565b610229565b3480156100ff57600080fd5b506000546001600160a01b03166100a0565b6100d161011f36600461050c565b610291565b34801561013057600080fd5b506100d161013f3660046104bd565b610300565b34801561015057600080fd5b506100d161015f366004610499565b610336565b34801561017057600080fd5b506100a061017f366004610499565b6103b4565b6000806000836001600160a01b03166040516101aa90635c60da1b60e01b815260040190565b600060405180830381855afa9150503d80600081146101e5576040519150601f19603f3d011682016040523d82523d6000602084013e6101ea565b606091505b5091509150816101f957600080fd5b8080602001905181019061020d91906105e2565b949350505050565b61021d6103da565b6102276000610434565b565b6102316103da565b6040516308f2839760e41b81526001600160a01b038281166004830152831690638f283970906024015b600060405180830381600087803b15801561027557600080fd5b505af1158015610289573d6000803e3d6000fd5b505050505050565b6102996103da565b60405163278f794360e11b81526001600160a01b03841690634f1ef2869034906102c990869086906004016105ff565b6000604051808303818588803b1580156102e257600080fd5b505af11580156102f6573d6000803e3d6000fd5b5050505050505050565b6103086103da565b604051631b2ce7f360e11b81526001600160a01b038281166004830152831690633659cfe69060240161025b565b61033e6103da565b6001600160a01b0381166103a85760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b6103b181610434565b50565b6000806000836001600160a01b03166040516101aa906303e1469160e61b815260040190565b6000546001600160a01b031633146102275760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161039f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03811681146103b157600080fd5b6000602082840312156104ab57600080fd5b81356104b681610484565b9392505050565b600080604083850312156104d057600080fd5b82356104db81610484565b915060208301356104eb81610484565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b60008060006060848603121561052157600080fd5b833561052c81610484565b9250602084013561053c81610484565b9150604084013567ffffffffffffffff8082111561055957600080fd5b818601915086601f83011261056d57600080fd5b81358181111561057f5761057f6104f6565b604051601f8201601f19908116603f011681019083821181831017156105a7576105a76104f6565b816040528281528960208487010111156105c057600080fd5b8260208601602083013760006020848301015280955050505050509250925092565b6000602082840312156105f457600080fd5b81516104b681610484565b60018060a01b038316815260006020604081840152835180604085015260005b8181101561063b5785810183015185820160600152820161061f565b8181111561064d576000606083870101525b50601f01601f19169290920160600194935050505056fea26469706673582212208473e2cda982935bccab1789bc9098533ac3b1ad2c056cc51cc1d5d1193ed6fd64736f6c634300080c0033","storage":{"0x0":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266"}},"0x5fc8d32690cc91d4c39d9d3abcbd16989f875707":{"nonce":1,"balance":"0x0","code":"0x60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b6100803660046106f1565b610118565b61005b61009336600461070c565b61015f565b3480156100a457600080fd5b506100ad6101d0565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e43660046106f1565b61020b565b3480156100f557600080fd5b506100ad610235565b61010661029b565b61011661011161033a565b610344565b565b610120610368565b6001600160a01b0316336001600160a01b03161415610157576101548160405180602001604052806000815250600061039b565b50565b6101546100fe565b610167610368565b6001600160a01b0316336001600160a01b031614156101c8576101c38383838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506001925061039b915050565b505050565b6101c36100fe565b60006101da610368565b6001600160a01b0316336001600160a01b03161415610200576101fb61033a565b905090565b6102086100fe565b90565b610213610368565b6001600160a01b0316336001600160a01b0316141561015757610154816103c6565b600061023f610368565b6001600160a01b0316336001600160a01b03161415610200576101fb610368565b6060610285838360405180606001604052806027815260200161080b6027913961041a565b9392505050565b6001600160a01b03163b151590565b6102a3610368565b6001600160a01b0316336001600160a01b031614156101165760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b60006101fb6104f7565b3660008037600080366000845af43d6000803e808015610363573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b6103a48361051f565b6000825111806103b15750805b156101c3576103c08383610260565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103ef610368565b604080516001600160a01b03928316815291841660208301520160405180910390a16101548161055f565b60606001600160a01b0384163b6104825760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610331565b600080856001600160a01b03168560405161049d91906107bb565b600060405180830381855af49150503d80600081146104d8576040519150601f19603f3d011682016040523d82523d6000602084013e6104dd565b606091505b50915091506104ed828286610608565b9695505050505050565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61038c565b61052881610641565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6001600160a01b0381166105c45760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b6064820152608401610331565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b60608315610617575081610285565b8251156106275782518084602001fd5b8160405162461bcd60e51b815260040161033191906107d7565b6001600160a01b0381163b6106ae5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610331565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6105e7565b80356001600160a01b03811681146106ec57600080fd5b919050565b60006020828403121561070357600080fd5b610285826106d5565b60008060006040848603121561072157600080fd5b61072a846106d5565b9250602084013567ffffffffffffffff8082111561074757600080fd5b818601915086601f83011261075b57600080fd5b81358181111561076a57600080fd5b87602082850101111561077c57600080fd5b6020830194508093505050509250925092565b60005b838110156107aa578181015183820152602001610792565b838111156103c05750506000910152565b600082516107cd81846020870161078f565b9190910192915050565b60208152600082518060208401526107f681604085016020870161078f565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212202d8aef871a7506c5a3b3c27bcde2c65544a40c9d05e5fba361c75671607f864e64736f6c634300080c0033","storage":{"0x0":"0x1","0x33":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","0x65":"0xe7f1725e7734ce288f8367e1bb143e90bb3f0512","0x66":"0x0","0x97":"0x5bc5b424ff8db9bd8202cae3beb193c946b905d8ebddb990e36a723af40eb1c4","0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc":"0xdcd1bf9a1b36ce34237eeafef220932846bcd82","0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103":"0x5fbdb2315678afecb367f032d93f642f64180aa3"}},"0x610178da211fef7d417bc0e6fed39f05609ad788":{"nonce":1,"balance":"0x0","code":"0x608060405234801561001057600080fd5b50600436106100575760003560e01c80633659cfe61461005c5780635c60da1b14610071578063715018a61461009a5780638da5cb5b146100a2578063f2fde38b146100b3575b600080fd5b61006f61006a3660046102ee565b6100c6565b005b6001546001600160a01b03165b6040516001600160a01b03909116815260200160405180910390f35b61006f61010e565b6000546001600160a01b031661007e565b61006f6100c13660046102ee565b610122565b6100ce6101af565b6100d781610209565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6101166101af565b610120600061029e565b565b61012a6101af565b6001600160a01b0381166101945760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b61019d8161029e565b50565b6001600160a01b03163b151590565b6000546001600160a01b031633146101205760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161018b565b6001600160a01b0381163b61027c5760405162461bcd60e51b815260206004820152603360248201527f5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f6044820152721b881a5cc81b9bdd08184818dbdb9d1c9858dd606a1b606482015260840161018b565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60006020828403121561030057600080fd5b81356001600160a01b038116811461031757600080fd5b939250505056fea264697066735822122088c715cd0f667668bf283754c18c39a61602f3b68fa89e81bebca9d33c30c0f664736f6c634300080c0033","storage":{"0x0":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","0x1":"0x8a791620dd6260079bf849dc5567adc3f2fdc318"}},"0x70997970c51812dc3a010c7d01b50e0d17dc79c8":{"nonce":0,"balance":"0x21e19e0c9bab2400000","code":"0x","storage":{}},"0x70e0ba845a1a0f2da3359c97e0285013525ffc49":{"nonce":1,"balance":"0x0","code":"0x60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b6100803660046106f1565b610118565b61005b61009336600461070c565b61015f565b3480156100a457600080fd5b506100ad6101d0565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e43660046106f1565b61020b565b3480156100f557600080fd5b506100ad610235565b61010661029b565b61011661011161033a565b610344565b565b610120610368565b6001600160a01b0316336001600160a01b03161415610157576101548160405180602001604052806000815250600061039b565b50565b6101546100fe565b610167610368565b6001600160a01b0316336001600160a01b031614156101c8576101c38383838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506001925061039b915050565b505050565b6101c36100fe565b60006101da610368565b6001600160a01b0316336001600160a01b03161415610200576101fb61033a565b905090565b6102086100fe565b90565b610213610368565b6001600160a01b0316336001600160a01b0316141561015757610154816103c6565b600061023f610368565b6001600160a01b0316336001600160a01b03161415610200576101fb610368565b6060610285838360405180606001604052806027815260200161080b6027913961041a565b9392505050565b6001600160a01b03163b151590565b6102a3610368565b6001600160a01b0316336001600160a01b031614156101165760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b60006101fb6104f7565b3660008037600080366000845af43d6000803e808015610363573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b6103a48361051f565b6000825111806103b15750805b156101c3576103c08383610260565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103ef610368565b604080516001600160a01b03928316815291841660208301520160405180910390a16101548161055f565b60606001600160a01b0384163b6104825760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610331565b600080856001600160a01b03168560405161049d91906107bb565b600060405180830381855af49150503d80600081146104d8576040519150601f19603f3d011682016040523d82523d6000602084013e6104dd565b606091505b50915091506104ed828286610608565b9695505050505050565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61038c565b61052881610641565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6001600160a01b0381166105c45760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b6064820152608401610331565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b60608315610617575081610285565b8251156106275782518084602001fd5b8160405162461bcd60e51b815260040161033191906107d7565b6001600160a01b0381163b6106ae5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610331565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6105e7565b80356001600160a01b03811681146106ec57600080fd5b919050565b60006020828403121561070357600080fd5b610285826106d5565b60008060006040848603121561072157600080fd5b61072a846106d5565b9250602084013567ffffffffffffffff8082111561074757600080fd5b818601915086601f83011261075b57600080fd5b81358181111561076a57600080fd5b87602082850101111561077c57600080fd5b6020830194508093505050509250925092565b60005b838110156107aa578181015183820152602001610792565b838111156103c05750506000910152565b600082516107cd81846020870161078f565b9190910192915050565b60208152600082518060208401526107f681604085016020870161078f565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212202d8aef871a7506c5a3b3c27bcde2c65544a40c9d05e5fba361c75671607f864e64736f6c634300080c0033","storage":{"0x0":"0x1","0x33":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","0x65":"0x84ea74d481ee0a5332c457a4d796187f6ba67feb","0x66":"0x0","0x97":"0x1","0x98":"0x0","0x99":"0x0","0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc":"0xcd8a1c3ba11cf5ecfa6267617243239504a98d90","0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103":"0xc3e53f4d16ae77db1c982e75a937b9f60fe63690"}},"0x7a2088a1bfc9d81c55368ae168c2c02570cb814f":{"nonce":1,"balance":"0x0","code":"0x608060405234801561001057600080fd5b506004361061007d5760003560e01c806340c10f191161005b57806340c10f19146100d257806370a08231146100e7578063a9059cbb14610110578063dd62ed3e1461012357600080fd5b8063095ea7b31461008257806318160ddd146100ad57806323b872dd146100bf575b600080fd5b610098610090366004610410565b600192915050565b60405190151581526020015b60405180910390f35b6002545b6040519081526020016100a4565b6100986100cd36600461043a565b61015c565b6100e56100e0366004610410565b610173565b005b6100b16100f5366004610476565b6001600160a01b031660009081526020819052604090205490565b61009861011e366004610410565b610181565b6100b1610131366004610498565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b600061016984848461018b565b5060019392505050565b61017d8282610335565b5050565b6000336101698185855b6001600160a01b0383166101f45760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084015b60405180910390fd5b6001600160a01b0382166102565760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016101eb565b6001600160a01b0383166000908152602081905260409020548111156102cd5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016101eb565b6001600160a01b038381166000818152602081815260408083208054879003905593861680835291849020805486019055925184815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3505050565b6001600160a01b03821661038b5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016101eb565b806002600082825461039d91906104cb565b90915550506001600160a01b038216600081815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b80356001600160a01b038116811461040b57600080fd5b919050565b6000806040838503121561042357600080fd5b61042c836103f4565b946020939093013593505050565b60008060006060848603121561044f57600080fd5b610458846103f4565b9250610466602085016103f4565b9150604084013590509250925092565b60006020828403121561048857600080fd5b610491826103f4565b9392505050565b600080604083850312156104ab57600080fd5b6104b4836103f4565b91506104c2602084016103f4565b90509250929050565b600082198211156104ec57634e487b7160e01b600052601160045260246000fd5b50019056fea26469706673582212205a338c0b0b48f98b5b6f7e618db605eb687cc1abdaacfd4547257e0bdc9594b764736f6c634300080c0033","storage":{"0x2":"0x64","0xd5482c7390e9753505446967c2fcd0000ab9bf8deb0af38aba516c293d000b":"0x64","0xca6ac29a9dc6d964f323dd4c7a44d81d3a76d1209169b99e4ae32aefad2034c8":"0x0"}},"0x84ea74d481ee0a5332c457a4d796187f6ba67feb":{"nonce":1,"balance":"0x0","code":"0x608060405234801561001057600080fd5b506004361061004c5760003560e01c806346fbf68e146100515780638568520614610089578063ce5484281461009e578063eab66d7a146100b1575b600080fd5b61007461005f366004610313565b60006020819052908152604090205460ff1681565b60405190151581526020015b60405180910390f35b61009c610097366004610335565b6100dc565b005b61009c6100ac366004610313565b61011d565b6001546100c4906001600160a01b031681565b6040516001600160a01b039091168152602001610080565b6001546001600160a01b0316331461010f5760405162461bcd60e51b815260040161010690610371565b60405180910390fd5b6101198282610153565b5050565b6001546001600160a01b031633146101475760405162461bcd60e51b815260040161010690610371565b61015081610220565b50565b6001600160a01b0382166101bf5760405162461bcd60e51b815260206004820152602d60248201527f50617573657252656769737472792e5f7365745061757365723a207a65726f2060448201526c1859191c995cdcc81a5b9c1d5d609a1b6064820152608401610106565b6001600160a01b03821660008181526020818152604091829020805460ff19168515159081179091558251938452908301527f65d3a1fd4c13f05cba164f80d03ce90fb4b5e21946bfc3ab7dbd434c2d0b9152910160405180910390a15050565b6001600160a01b03811661028e5760405162461bcd60e51b815260206004820152602f60248201527f50617573657252656769737472792e5f736574556e7061757365723a207a657260448201526e1bc81859191c995cdcc81a5b9c1d5d608a1b6064820152608401610106565b600154604080516001600160a01b03928316815291831660208301527f06b4167a2528887a1e97a366eefe8549bfbf1ea3e6ac81cb2564a934d20e8892910160405180910390a1600180546001600160a01b0319166001600160a01b0392909216919091179055565b80356001600160a01b038116811461030e57600080fd5b919050565b60006020828403121561032557600080fd5b61032e826102f7565b9392505050565b6000806040838503121561034857600080fd5b610351836102f7565b91506020830135801515811461036657600080fd5b809150509250929050565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b60608201526080019056fea2646970667358221220588d79746369ba6bc203e2ed869e37ff985f84ede6a035b19a6fa49703898aa064736f6c634300080c0033","storage":{"0x1":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","0x723077b8a1b173adc35e5f0e7e3662fd1208212cb629f9c128551ea7168da722":"0x1"}},"0x851356ae760d987e095750cceb3bc6014560891c":{"nonce":1,"balance":"0x0","code":"0x60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b6100803660046106f1565b610118565b61005b61009336600461070c565b61015f565b3480156100a457600080fd5b506100ad6101d0565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e43660046106f1565b61020b565b3480156100f557600080fd5b506100ad610235565b61010661029b565b61011661011161033a565b610344565b565b610120610368565b6001600160a01b0316336001600160a01b03161415610157576101548160405180602001604052806000815250600061039b565b50565b6101546100fe565b610167610368565b6001600160a01b0316336001600160a01b031614156101c8576101c38383838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506001925061039b915050565b505050565b6101c36100fe565b60006101da610368565b6001600160a01b0316336001600160a01b03161415610200576101fb61033a565b905090565b6102086100fe565b90565b610213610368565b6001600160a01b0316336001600160a01b0316141561015757610154816103c6565b600061023f610368565b6001600160a01b0316336001600160a01b03161415610200576101fb610368565b6060610285838360405180606001604052806027815260200161080b6027913961041a565b9392505050565b6001600160a01b03163b151590565b6102a3610368565b6001600160a01b0316336001600160a01b031614156101165760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b60006101fb6104f7565b3660008037600080366000845af43d6000803e808015610363573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b6103a48361051f565b6000825111806103b15750805b156101c3576103c08383610260565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103ef610368565b604080516001600160a01b03928316815291841660208301520160405180910390a16101548161055f565b60606001600160a01b0384163b6104825760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610331565b600080856001600160a01b03168560405161049d91906107bb565b600060405180830381855af49150503d80600081146104d8576040519150601f19603f3d011682016040523d82523d6000602084013e6104dd565b606091505b50915091506104ed828286610608565b9695505050505050565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61038c565b61052881610641565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6001600160a01b0381166105c45760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b6064820152608401610331565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b60608315610617575081610285565b8251156106275782518084602001fd5b8160405162461bcd60e51b815260040161033191906107d7565b6001600160a01b0381163b6106ae5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610331565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6105e7565b80356001600160a01b03811681146106ec57600080fd5b919050565b60006020828403121561070357600080fd5b610285826106d5565b60008060006040848603121561072157600080fd5b61072a846106d5565b9250602084013567ffffffffffffffff8082111561074757600080fd5b818601915086601f83011261075b57600080fd5b81358181111561076a57600080fd5b87602082850101111561077c57600080fd5b6020830194508093505050509250925092565b60005b838110156107aa578181015183820152602001610792565b838111156103c05750506000910152565b600082516107cd81846020870161078f565b9190910192915050565b60208152600082518060208401526107f681604085016020870161078f565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212202d8aef871a7506c5a3b3c27bcde2c65544a40c9d05e5fba361c75671607f864e64736f6c634300080c0033","storage":{"0x0":"0x84ea74d481ee0a5332c457a4d796187f6ba67feb0001","0x1":"0x0","0x64":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","0x96":"0x1","0x9c":"0x3","0x9d":"0x0","0x9e":"0xa0ee7a142d267c1f36714e4a8f75612f20a79720","0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc":"0x36c02da8a0983159322a80ffe9f24b1acff8b570","0x683723e34a772b6e4f2c919bba7fa32ed8ea11a8325f54da7db716e9d9dd98c7":"0x322af80000001e","0xaf85b9071dfafeac1409d3f1d19bafc9bc7c37974cde8df0ee6168f0086e539c":"0x998abeb3e57409262ae5b751f60747921b33613e","0xaf85b9071dfafeac1409d3f1d19bafc9bc7c37974cde8df0ee6168f0086e539d":"0xf5059a5d33d5853360d16c683c16e67980206f36","0xaf85b9071dfafeac1409d3f1d19bafc9bc7c37974cde8df0ee6168f0086e539e":"0x95401dc811bb5740090279ba06cfa8fcf6113778","0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103":"0xc3e53f4d16ae77db1c982e75a937b9f60fe63690"}},"0x860b6912c2d0337ef05bbc89b0c2cb6cbaeab4a5":{"nonce":3,"balance":"0x56bc3136b41fa100e","code":"0x","storage":{}},"0x8a791620dd6260079bf849dc5567adc3f2fdc318":{"nonce":1,"balance":"0x0","code":"0x6080604052600436106101855760003560e01c806374cdd798116100d1578063c49074421161008a578063e251ef5211610064578063e251ef5214610563578063e2c8344514610583578063f2882461146105a3578063fe80b087146105d757600080fd5b8063c490744214610503578063c4d66de814610523578063dda3346c1461054357600080fd5b806374cdd7981461044057806387e0d289146104745780639b4e46341461049b578063a50600f4146104ae578063b522538a146104ce578063baa7145a146104ee57600080fd5b806334bea20a1161013e57806358eaee791161011857806358eaee791461038f5780635d3f65b6146103bc5780636fcd0e53146103dc5780637439841f1461040957600080fd5b806334bea20a146103005780633f65cf191461033b5780634665bcda1461035b57600080fd5b80630b18ff66146101db5780630cd4649e146102185780631a5057be1461022f5780631d905d5c146102635780633106ab53146102af5780633474aa16146102e057600080fd5b366101d657346037600082825461019c9190614b54565b90915550506040513481527f6fdd3dbdb173299608c0aa9f368735857c8842b581f8389238bf05bd04b3bf499060200160405180910390a1005b600080fd5b3480156101e757600080fd5b506033546101fb906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561022457600080fd5b5061022d6105fb565b005b34801561023b57600080fd5b506101fb7f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe681565b34801561026f57600080fd5b506102977f000000000000000000000000000000000000000000000000000000077359400081565b6040516001600160401b03909116815260200161020f565b3480156102bb57600080fd5b506034546102d090600160401b900460ff1681565b604051901515815260200161020f565b3480156102ec57600080fd5b50603454610297906001600160401b031681565b34801561030c57600080fd5b506102d061031b366004614b91565b603560209081526000928352604080842090915290825290205460ff1681565b34801561034757600080fd5b5061022d610356366004614c24565b610764565b34801561036757600080fd5b506101fb7f000000000000000000000000a513e6e4b8f2a923d98304ec87f64353c4d5c85381565b34801561039b57600080fd5b506103af6103aa366004614d35565b610c05565b60405161020f9190614dae565b3480156103c857600080fd5b50603854610297906001600160401b031681565b3480156103e857600080fd5b506103fc6103f7366004614dbc565b610c6a565b60405161020f9190614dd5565b34801561041557600080fd5b506103af610424366004614dbc565b600090815260366020526040902054600160c01b900460ff1690565b34801561044c57600080fd5b506101fb7f00000000000000000000000000000000219ab540356cbb839cbe05303d7705fa81565b34801561048057600080fd5b5060335461029790600160a01b90046001600160401b031681565b61022d6104a9366004614e1d565b610d17565b3480156104ba57600080fd5b5061022d6104c9366004614e90565b610ec4565b3480156104da57600080fd5b506103fc6104e9366004614d35565b611293565b3480156104fa57600080fd5b5061022d611386565b34801561050f57600080fd5b5061022d61051e366004614f3a565b6113f1565b34801561052f57600080fd5b5061022d61053e366004614f66565b61162e565b34801561054f57600080fd5b5061022d61055e366004615080565b611806565b34801561056f57600080fd5b5061022d61057e366004615151565b6119d9565b34801561058f57600080fd5b5061022d61059e366004614f3a565b611da4565b3480156105af57600080fd5b506102977f000000000000000000000000000000000000000000000000000000006059f46081565b3480156105e357600080fd5b506105ed60375481565b60405190815260200161020f565b604051635ac86ab760e01b8152600260048201819052907f000000000000000000000000a513e6e4b8f2a923d98304ec87f64353c4d5c8536001600160a01b031690635ac86ab790602401602060405180830381865afa158015610663573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610687919061524c565b156106ad5760405162461bcd60e51b81526004016106a49061526e565b60405180910390fd5b6033546001600160a01b031633146106d75760405162461bcd60e51b81526004016106a4906152cb565b603454600160401b900460ff16156107015760405162461bcd60e51b81526004016106a490615313565b6034805460ff60401b1916600160401b179055603354610729906001600160a01b0316611f87565b6033546040516001600160a01b03909116907fca8dfc8c5e0a67a74501c072a3325f685259bebbae7cfd230ab85198a78b70cd90600090a250565b6033546001600160a01b0316331461078e5760405162461bcd60e51b81526004016106a4906152cb565b604051635ac86ab760e01b8152600260048201819052907f000000000000000000000000a513e6e4b8f2a923d98304ec87f64353c4d5c8536001600160a01b031690635ac86ab790602401602060405180830381865afa1580156107f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061081a919061524c565b156108375760405162461bcd60e51b81526004016106a49061526e565b60335489906001600160401b03600160a01b90910481169082161161086e5760405162461bcd60e51b81526004016106a490615362565b603454600160401b900460ff166108e65760405162461bcd60e51b815260206004820152603660248201527f456967656e506f642e686173456e61626c656452657374616b696e673a2072656044820152751cdd185ada5b99c81a5cc81b9bdd08195b98589b195960521b60648201526084016106a4565b86851480156108f457508483145b6109845760405162461bcd60e51b815260206004820152605560248201527f456967656e506f642e7665726966795769746864726177616c43726564656e7460448201527f69616c733a2076616c696461746f72496e646963657320616e642070726f6f666064820152740e640daeae6e840c4ca40e6c2daca40d8cadccee8d605b1b608482015260a4016106a4565b4261099a613f486001600160401b038d16614b54565b1015610a235760405162461bcd60e51b815260206004820152604c60248201527f456967656e506f642e7665726966795769746864726177616c43726564656e7460448201527f69616c733a207370656369666965642074696d657374616d7020697320746f6f60648201526b0819985c881a5b881c185cdd60a21b608482015260a4016106a4565b60405163d1c64cc960e01b81526001600160401b038b166004820152610acc907f000000000000000000000000a513e6e4b8f2a923d98304ec87f64353c4d5c8536001600160a01b03169063d1c64cc990602401602060405180830381865afa158015610a94573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ab891906153fd565b8a35610ac760208d018d615416565b611fbb565b6000805b88811015610b7057610b528c8c358c8c85818110610af057610af061545c565b9050602002016020810190610b059190615472565b8b8b86818110610b1757610b1761545c565b9050602002810190610b299190615416565b8b8b88818110610b3b57610b3b61545c565b9050602002810190610b4d9190615499565b612149565b610b5c9083614b54565b915080610b68816154e2565b915050610ad0565b5060335460405163030b147160e61b81526001600160a01b039182166004820152602481018390527f000000000000000000000000a513e6e4b8f2a923d98304ec87f64353c4d5c8539091169063c2c51c4090604401600060405180830381600087803b158015610be057600080fd5b505af1158015610bf4573d6000803e3d6000fd5b505050505050505050505050505050565b600080610c4784848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061260392505050565b600090815260366020526040902054600160c01b900460ff169150505b92915050565b610c926040805160808101825260008082526020820181905291810182905290606082015290565b600082815260366020908152604091829020825160808101845281546001600160401b038082168352600160401b8204811694830194909452600160801b810490931693810193909352906060830190600160c01b900460ff166002811115610cfd57610cfd614d76565b6002811115610d0e57610d0e614d76565b90525092915050565b336001600160a01b037f000000000000000000000000a513e6e4b8f2a923d98304ec87f64353c4d5c8531614610d5f5760405162461bcd60e51b81526004016106a4906154fd565b346801bc16d674ec80000014610deb5760405162461bcd60e51b8152602060048201526044602482018190527f456967656e506f642e7374616b653a206d75737420696e697469616c6c792073908201527f74616b6520666f7220616e792076616c696461746f72207769746820333220656064820152633a3432b960e11b608482015260a4016106a4565b7f00000000000000000000000000000000219ab540356cbb839cbe05303d7705fa6001600160a01b031663228951186801bc16d674ec8000008787610e2e6126fd565b8888886040518863ffffffff1660e01b8152600401610e52969594939291906155cf565b6000604051808303818588803b158015610e6b57600080fd5b505af1158015610e7f573d6000803e3d6000fd5b50505050507f606865b7934a25d4aed43f6cdb426403353fa4b3009c4d228407474581b01e238585604051610eb592919061561e565b60405180910390a15050505050565b604051635ac86ab760e01b8152600360048201819052907f000000000000000000000000a513e6e4b8f2a923d98304ec87f64353c4d5c8536001600160a01b031690635ac86ab790602401602060405180830381865afa158015610f2c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f50919061524c565b15610f6d5760405162461bcd60e51b81526004016106a49061526e565b8684148015610f7b57508382145b6110045760405162461bcd60e51b815260206004820152604e60248201527f456967656e506f642e76657269667942616c616e6365557064617465733a207660448201527f616c696461746f72496e646963657320616e642070726f6f6673206d7573742060648201526d0c4ca40e6c2daca40d8cadccee8d60931b608482015260a4016106a4565b4261101a613f486001600160401b038c16614b54565b101561109c5760405162461bcd60e51b815260206004820152604560248201527f456967656e506f642e76657269667942616c616e6365557064617465733a207360448201527f70656369666965642074696d657374616d7020697320746f6f2066617220696e606482015264081c185cdd60da1b608482015260a4016106a4565b60405163d1c64cc960e01b81526001600160401b038a166004820152611140907f000000000000000000000000a513e6e4b8f2a923d98304ec87f64353c4d5c8536001600160a01b03169063d1c64cc990602401602060405180830381865afa15801561110d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061113191906153fd565b8735610ac760208a018a615416565b6000805b888110156111e4576111c68b8b8b848181106111625761116261545c565b90506020020160208101906111779190615472565b8a358a8a8681811061118b5761118b61545c565b905060200281019061119d9190615416565b8a8a888181106111af576111af61545c565b90506020028101906111c19190615499565b612742565b6111d09083615632565b9150806111dc816154e2565b915050611144565b506033546001600160a01b037f000000000000000000000000a513e6e4b8f2a923d98304ec87f64353c4d5c85381169163c2c51c409116611229633b9aca0085615673565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401600060405180830381600087803b15801561126f57600080fd5b505af1158015611283573d6000803e3d6000fd5b5050505050505050505050505050565b6112bb6040805160808101825260008082526020820181905291810182905290606082015290565b603660006112fe85858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061260392505050565b81526020808201929092526040908101600020815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b81049094169281019290925290916060830190600160c01b900460ff16600281111561136b5761136b614d76565b600281111561137c5761137c614d76565b9052509392505050565b6033546001600160a01b031633146113b05760405162461bcd60e51b81526004016106a4906152cb565b603454600160401b900460ff16156113da5760405162461bcd60e51b81526004016106a490615313565b6033546113ef906001600160a01b0316611f87565b565b336001600160a01b037f000000000000000000000000a513e6e4b8f2a923d98304ec87f64353c4d5c85316146114395760405162461bcd60e51b81526004016106a4906154fd565b611447633b9aca008261570e565b156114d15760405162461bcd60e51b815260206004820152604e60248201527f456967656e506f642e776974686472617752657374616b6564426561636f6e4360448201527f6861696e4554483a20616d6f756e74576569206d75737420626520612077686f60648201526d1b194811ddd95a48185b5bdd5b9d60921b608482015260a4016106a4565b60006114e1633b9aca0083615722565b6034549091506001600160401b03908116908216111561159a5760405162461bcd60e51b815260206004820152606260248201527f456967656e506f642e776974686472617752657374616b6564426561636f6e4360448201527f6861696e4554483a20616d6f756e74477765692065786365656473207769746860648201527f6472617761626c6552657374616b6564457865637574696f6e4c617965724777608482015261656960f01b60a482015260c4016106a4565b603480548291906000906115b89084906001600160401b0316615736565b92506101000a8154816001600160401b0302191690836001600160401b03160217905550826001600160a01b03167f8947fd2ce07ef9cc302c4e8f0461015615d91ce851564839e91cc804c2f49d8e8360405161161791815260200190565b60405180910390a26116298383612c20565b505050565b600054610100900460ff161580801561164e5750600054600160ff909116105b806116685750303b158015611668575060005460ff166001145b6116cb5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016106a4565b6000805460ff1916600117905580156116ee576000805461ff0019166101001790555b6001600160a01b0382166117615760405162461bcd60e51b815260206004820152603460248201527f456967656e506f642e696e697469616c697a653a20706f644f776e65722063616044820152736e6e6f74206265207a65726f206164647265737360601b60648201526084016106a4565b603380546001600160a01b0384166001600160a01b031990911681179091556034805460ff60401b1916600160401b1790556040517fca8dfc8c5e0a67a74501c072a3325f685259bebbae7cfd230ab85198a78b70cd90600090a28015611802576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b6033546001600160a01b031633146118305760405162461bcd60e51b81526004016106a4906152cb565b604051635ac86ab760e01b8152600560048201819052907f000000000000000000000000a513e6e4b8f2a923d98304ec87f64353c4d5c8536001600160a01b031690635ac86ab790602401602060405180830381865afa158015611898573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118bc919061524c565b156118d95760405162461bcd60e51b81526004016106a49061526e565b82518451146119645760405162461bcd60e51b815260206004820152604b60248201527f456967656e506f642e7265636f766572546f6b656e733a20746f6b656e4c697360448201527f7420616e6420616d6f756e7473546f5769746864726177206d7573742062652060648201526a0e6c2daca40d8cadccee8d60ab1b608482015260a4016106a4565b60005b84518110156119d2576119c0838583815181106119865761198661545c565b60200260200101518784815181106119a0576119a061545c565b60200260200101516001600160a01b0316612c2a9092919063ffffffff16565b806119ca816154e2565b915050611967565b5050505050565b604051635ac86ab760e01b81526004808201819052907f000000000000000000000000a513e6e4b8f2a923d98304ec87f64353c4d5c8536001600160a01b031690635ac86ab790602401602060405180830381865afa158015611a40573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a64919061524c565b15611a815760405162461bcd60e51b81526004016106a49061526e565b8386148015611a8f57508588145b8015611a9a57508782145b611b0e576040805162461bcd60e51b81526020600482015260248101919091527f456967656e506f642e766572696679416e6450726f636573735769746864726160448201527f77616c733a20696e70757473206d7573742062652073616d65206c656e67746860648201526084016106a4565b60405163d1c64cc960e01b81526001600160401b038c166004820152611bb2907f000000000000000000000000a513e6e4b8f2a923d98304ec87f64353c4d5c8536001600160a01b03169063d1c64cc990602401602060405180830381865afa158015611b7f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ba391906153fd565b8b35610ac760208e018e615416565b604080518082019091526000808252602082015260005b83811015611cb2576000611c6d8d358d8d85818110611bea57611bea61545c565b9050602002810190611bfc919061575e565b8c8c86818110611c0e57611c0e61545c565b9050602002810190611c209190615416565b8c8c88818110611c3257611c3261545c565b9050602002810190611c449190615499565b8c8c8a818110611c5657611c5661545c565b9050602002810190611c689190615499565b612c7c565b80518451919250908490611c82908390614b54565b9052506020808201519084018051611c9b908390615632565b905250819050611caa816154e2565b915050611bc9565b50805115611ce1576033548151611ce1916001600160a01b031690611cdc90633b9aca009061577f565b613167565b602081015115611d965760335460208201516001600160a01b037f000000000000000000000000a513e6e4b8f2a923d98304ec87f64353c4d5c85381169263c2c51c4092911690611d3790633b9aca0090615673565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401600060405180830381600087803b158015611d7d57600080fd5b505af1158015611d91573d6000803e3d6000fd5b505050505b505050505050505050505050565b6033546001600160a01b03163314611dce5760405162461bcd60e51b81526004016106a4906152cb565b604051635ac86ab760e01b8152600560048201819052907f000000000000000000000000a513e6e4b8f2a923d98304ec87f64353c4d5c8536001600160a01b031690635ac86ab790602401602060405180830381865afa158015611e36573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e5a919061524c565b15611e775760405162461bcd60e51b81526004016106a49061526e565b603754821115611f285760405162461bcd60e51b815260206004820152606a60248201527f456967656e506f642e77697468647261776e6f6e426561636f6e436861696e4560448201527f544842616c616e63655765693a20616d6f756e74546f5769746864726177206960648201527f732067726561746572207468616e206e6f6e426561636f6e436861696e45544860848201526942616c616e636557656960b01b60a482015260c4016106a4565b8160376000828254611f3a919061579e565b90915550506040518281526001600160a01b038416907f30420aacd028abb3c1fd03aba253ae725d6ddd52d16c9ac4cb5742cd43f530969060200160405180910390a26116298383613167565b6033805467ffffffffffffffff60a01b19164263ffffffff16600160a01b021790556000603755611fb88147613167565b50565b611fc76003602061577f565b81146120575760405162461bcd60e51b815260206004820152605360248201527f426561636f6e436861696e50726f6f66732e7665726966795374617465526f6f60448201527f74416761696e73744c6174657374426c6f636b526f6f743a2050726f6f6620686064820152720c2e640d2dcc6dee4e4cac6e840d8cadccee8d606b1b608482015260a4016106a4565b61209c82828080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250889250879150600390506131f5565b6121435760405162461bcd60e51b815260206004820152606660248201527f426561636f6e436861696e50726f6f66732e7665726966795374617465526f6f60448201527f74416761696e73744c6174657374426c6f636b526f6f743a20496e76616c696460648201527f206c617465737420626c6f636b2068656164657220726f6f74206d65726b6c6560848201526510383937b7b360d11b60a482015260c4016106a4565b50505050565b60008061218884848080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061320d92505050565b6000818152603660209081526040808320815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b8104909416928101929092529394509192906060830190600160c01b900460ff1660028111156121f7576121f7614d76565b600281111561220857612208614d76565b905250905060008160600151600281111561222557612225614d76565b146122ce5760405162461bcd60e51b815260206004820152606760248201527f456967656e506f642e766572696679436f72726563745769746864726177616c60448201527f43726564656e7469616c733a2056616c696461746f72206d757374206265206960648201527f6e61637469766520746f2070726f7665207769746864726177616c2063726564608482015266656e7469616c7360c81b60a482015260c4016106a4565b6122d66126fd565b6122df906157b5565b61231b86868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061323192505050565b146123a25760405162461bcd60e51b815260206004820152604b60248201527f456967656e506f642e766572696679436f72726563745769746864726177616c60448201527f43726564656e7469616c733a2050726f6f66206973206e6f7420666f7220746860648201526a1a5cc8115a59d95b941bd960aa1b608482015260a4016106a4565b60006123e086868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061324692505050565b90506123f08a87878b8b8e61326b565b60398054906000612400836154e2565b90915550506001606083015264ffffffffff891682526001600160401b038b811660408401527f000000000000000000000000000000000000000000000000000000077359400081169082161115612486576001600160401b037f0000000000000000000000000000000000000000000000000000000773594000166020830152612496565b6001600160401b03811660208301525b6000838152603660209081526040918290208451815492860151938601516001600160401b03908116600160801b0267ffffffffffffffff60801b19958216600160401b026001600160801b0319909516919092161792909217928316821781556060850151859391929091839160ff60c01b191668ffffffffffffffffff60801b1990911617600160c01b83600281111561253457612534614d76565b02179055505060405164ffffffffff8b1681527f2d0800bbc377ea54a08c5db6a87aafff5e3e9c8fead0eda110e40e0c10441449915060200160405180910390a17f0e5fac175b83177cc047381e030d8fb3b42b37bd1c025e22c280facad62c32df898c84602001516040516125cf9392919064ffffffffff9390931683526001600160401b03918216602084015216604082015260600190565b60405180910390a1633b9aca0082602001516001600160401b03166125f4919061577f565b9b9a5050505050505050505050565b6000815160301461268c5760405162461bcd60e51b815260206004820152604760248201527f456967656e506f642e5f63616c63756c61746556616c696461746f725075626b60448201527f657948617368206d75737420626520612034382d6279746520424c53207075626064820152666c6963206b657960c81b608482015260a4016106a4565b6040516002906126a39084906000906020016157d9565b60408051601f19818403018152908290526126bd91615808565b602060405180830381855afa1580156126da573d6000803e3d6000fd5b5050506040513d601f19601f82011682018060405250810190610c6491906153fd565b60408051600160f81b60208201526000602182015230606090811b6bffffffffffffffffffffffff1916602c8301529101604051602081830303815290604052905090565b60008061278184848080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061324692505050565b905060006127c185858080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061320d92505050565b6000818152603660209081526040808320815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b8104909416928101929092529394509192906060830190600160c01b900460ff16600281111561283057612830614d76565b600281111561284157612841614d76565b8152505090508a6001600160401b031681604001516001600160401b0316106128f85760405162461bcd60e51b815260206004820152605c60248201527f456967656e506f642e76657269667942616c616e63655570646174653a20566160448201527f6c696461746f72732062616c616e63652068617320616c72656164792062656560648201527f6e207570646174656420666f7220746869732074696d657374616d7000000000608482015260a4016106a4565b60018160600151600281111561291057612910614d76565b146129785760405162461bcd60e51b815260206004820152603260248201527f456967656e506f642e76657269667942616c616e63655570646174653a2056616044820152716c696461746f72206e6f742061637469766560701b60648201526084016106a4565b6129818b6134c2565b6001600160401b03166129c68787808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506135ac92505050565b6001600160401b031611612a69576000836001600160401b031611612a695760405162461bcd60e51b815260206004820152604d60248201527f456967656e506f642e76657269667942616c616e63655570646174653a20766160448201527f6c696461746f7220697320776974686472617761626c6520627574206861732060648201526c3737ba103bb4ba34323930bbb760991b608482015260a4016106a4565b612a778987878b8b8f61326b565b602081015160006001600160401b037f000000000000000000000000000000000000000000000000000000077359400081169086161115612ad957507f0000000000000000000000000000000000000000000000000000000773594000612adc565b50835b6001600160401b0380821660208086019182528f831660408088019182526000898152603690935290912086518154935192518516600160801b0267ffffffffffffffff60801b19938616600160401b026001600160801b031990951691909516179290921790811683178255606086015186939091839160ff60c01b191668ffffffffffffffffff60801b1990911617600160c01b836002811115612b8457612b84614d76565b0217905550905050816001600160401b0316816001600160401b031614612c10577f0e5fac175b83177cc047381e030d8fb3b42b37bd1c025e22c280facad62c32df8c8e83604051612bfb9392919064ffffffffff9390931683526001600160401b03918216602084015216604082015260600190565b60405180910390a1612c0d81836135c4565b95505b5050505050979650505050505050565b61180282826135e3565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526116299084906136fc565b6040805180820190915260008082526020820152612ca1612c9c89615889565b6137ce565b6033546001600160401b03600160a01b909104811690821611612cd65760405162461bcd60e51b81526004016106a490615362565b6000612ce4612c9c8b615889565b90506000612d2488888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061320d92505050565b905060008082815260366020526040902054600160c01b900460ff166002811115612d5157612d51614d76565b1415612e085760405162461bcd60e51b815260206004820152607460248201527f456967656e506f642e5f766572696679416e6450726f6365737357697468647260448201527f6177616c3a2056616c696461746f72206e657665722070726f76656e20746f2060648201527f68617665207769746864726177616c2063726564656e7469616c7320706f696e6084820152731d1959081d1bc81d1a1a5cc818dbdb9d1c9858dd60621b60a482015260c4016106a4565b60008181526035602090815260408083206001600160401b038616845290915290205460ff1615612ec75760405162461bcd60e51b815260206004820152605b60248201527f456967656e506f642e5f766572696679416e6450726f6365737357697468647260448201527f6177616c3a207769746864726177616c2068617320616c72656164792062656560648201527f6e2070726f76656e20666f7220746869732074696d657374616d700000000000608482015260a4016106a4565b6001603560008381526020019081526020016000206000846001600160401b03166001600160401b0316815260200190815260200160002060006101000a81548160ff021916908315150217905550612fa48c87878e7f000000000000000000000000a513e6e4b8f2a923d98304ec87f64353c4d5c8536001600160a01b03166344e71c806040518163ffffffff1660e01b8152600401602060405180830381865afa158015612f7b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f9f91906159c5565b6137de565b6000612fe28787808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506141ff92505050565b9050612ff28d8a8a8e8e8661326b565b600061303088888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061421792505050565b905061306e8a8a808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506135ac92505050565b6001600160401b03166130886130838f615889565b61422f565b6001600160401b03161061314057603354600084815260366020908152604091829020825160808101845281546001600160401b038082168352600160401b8204811694830194909452600160801b81049093169381019390935261313593869388938a936001600160a01b03909316928892916060830190600160c01b900460ff16600281111561311c5761311c614d76565b600281111561312d5761312d614d76565b905250614241565b95505050505061315a565b60335461313590839086906001600160a01b03168461447f565b5098975050505050505050565b603354604051633036cd5360e21b81526001600160a01b03918216600482015283821660248201527f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe69091169063c0db354c9083906044016000604051808303818588803b1580156131d857600080fd5b505af11580156131ec573d6000803e3d6000fd5b50505050505050565b60008361320386858561455d565b1495945050505050565b6000816000815181106132225761322261545c565b60200260200101519050919050565b6000816001815181106132225761322261545c565b6000610c648260028151811061325e5761325e61545c565b60200260200101516146a9565b61327760036002615ac6565b84146133025760405162461bcd60e51b815260206004820152604e60248201527f426561636f6e436861696e50726f6f66732e76657269667956616c696461746f60448201527f724669656c64733a2056616c696461746f72206669656c64732068617320696e60648201526d0c6dee4e4cac6e840d8cadccee8d60931b608482015260a4016106a4565b600561331060286001614b54565b61331a9190614b54565b61332590602061577f565b82146133a55760405162461bcd60e51b815260206004820152604360248201527f426561636f6e436861696e50726f6f66732e76657269667956616c696461746f60448201527f724669656c64733a2050726f6f662068617320696e636f7272656374206c656e6064820152620cee8d60eb1b608482015260a4016106a4565b600064ffffffffff82166133bb60286001614b54565b600b901b179050600061340087878080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061471092505050565b905061344685858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508c92508591508690506131f5565b6134b85760405162461bcd60e51b815260206004820152603d60248201527f426561636f6e436861696e50726f6f66732e76657269667956616c696461746f60448201527f724669656c64733a20496e76616c6964206d65726b6c652070726f6f6600000060648201526084016106a4565b5050505050505050565b60007f000000000000000000000000000000000000000000000000000000006059f4606001600160401b0316826001600160401b0316101561356c5760405162461bcd60e51b815260206004820152603760248201527f456967656e506f642e5f74696d657374616d70546f45706f63683a2074696d6560448201527f7374616d70206973206265666f72652067656e6573697300000000000000000060648201526084016106a4565b613578600c6020615ad2565b6135a27f000000000000000000000000000000000000000000000000000000006059f46084615736565b610c649190615b01565b6000610c648260078151811061325e5761325e61545c565b60006135dc6001600160401b03808416908516615b27565b9392505050565b804710156136335760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e636500000060448201526064016106a4565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114613680576040519150601f19603f3d011682016040523d82523d6000602084013e613685565b606091505b50509050806116295760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d6179206861766520726576657274656400000000000060648201526084016106a4565b6000613751826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166149bd9092919063ffffffff16565b805190915015611629578080602001905181019061376f919061524c565b6116295760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016106a4565b6000610c648261014001516146a9565b6137e9600280615ac6565b831461385d5760405162461bcd60e51b81526020600482015260496024820152600080516020615bd983398151915260448201527f616c3a207769746864726177616c4669656c64732068617320696e636f7272656064820152680c6e840d8cadccee8d60bb1b608482015260a4016106a4565b613869600d6002615ac6565b61387960c0840160a08501615b66565b6001600160401b0316106138e35760405162461bcd60e51b815260206004820152603f6024820152600080516020615bd983398151915260448201527f616c3a20626c6f636b526f6f74496e64657820697320746f6f206c617267650060648201526084016106a4565b6138ef60046002615ac6565b613900610100840160e08501615b66565b6001600160401b03161061396c576040805162461bcd60e51b8152602060048201526024810191909152600080516020615bd983398151915260448201527f616c3a207769746864726177616c496e64657820697320746f6f206c6172676560648201526084016106a4565b61397860186002615ac6565b61398860e0840160c08501615b66565b6001600160401b031610613a025760405162461bcd60e51b81526020600482015260476024820152600080516020615bd983398151915260448201527f616c3a20686973746f726963616c53756d6d617279496e64657820697320746f6064820152666f206c6172676560c81b608482015260a4016106a4565b60006001600160401b038216613a1a612c9c85615889565b6001600160401b031610613a2f576005613a32565b60045b9050613a3f600482614b54565b613a4a906001614b54565b613a5590602061577f565b613a5f8480615416565b905014613ad35760405162461bcd60e51b81526020600482015260486024820152600080516020615bd983398151915260448201527f616c3a207769746864726177616c50726f6f662068617320696e636f727265636064820152670e840d8cadccee8d60c31b608482015260a4016106a4565b613adf60046003614b54565b613aea90602061577f565b613af76040850185615416565b905014613b715760405162461bcd60e51b815260206004820152604e6024820152600080516020615bd983398151915260448201527f616c3a20657865637574696f6e5061796c6f616450726f6f662068617320696e60648201526d0c6dee4e4cac6e840d8cadccee8d60931b608482015260a4016106a4565b613b7d6003602061577f565b613b8a6020850185615416565b905014613bf85760405162461bcd60e51b81526020600482015260426024820152600080516020615bd983398151915260448201527f616c3a20736c6f7450726f6f662068617320696e636f7272656374206c656e676064820152610e8d60f31b608482015260a4016106a4565b613c0381602061577f565b613c106060850185615416565b905014613c835760405162461bcd60e51b81526020600482015260476024820152600080516020615bd983398151915260448201527f616c3a2074696d657374616d7050726f6f662068617320696e636f7272656374606482015266040d8cadccee8d60cb1b608482015260a4016106a4565b600d613c9160186001614b54565b613c9c906005614b54565b613ca7906001614b54565b613cb19190614b54565b613cbc90602061577f565b613cc96080850185615416565b905014613d525760405162461bcd60e51b81526020600482015260586024820152600080516020615bd983398151915260448201527f616c3a20686973746f726963616c53756d6d617279426c6f636b526f6f74507260648201527f6f6f662068617320696e636f7272656374206c656e6774680000000000000000608482015260a4016106a4565b6000613d6460c0850160a08601615b66565b6001600160401b03166000613d7b600d6001614b54565b613d8b60e0880160c08901615b66565b6001600160401b0316901b600d613da460186001614b54565b613daf906001614b54565b613db99190614b54565b601b901b1717179050613e14613dd26080860186615416565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508b92505050610100870135846131f5565b613e875760405162461bcd60e51b815260206004820152604a6024820152600080516020615bd983398151915260448201527f616c3a20496e76616c696420686973746f726963616c73756d6d617279206d656064820152693935b63290383937b7b360b11b608482015260a4016106a4565b613ede613e976020860186615416565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052506101008a013593506101208a0135925090506131f5565b613f3e5760405162461bcd60e51b815260206004820152603d6024820152600080516020615bd983398151915260448201527f616c3a20496e76616c696420736c6f74206d65726b6c652070726f6f6600000060648201526084016106a4565b6049613f96613f506040870187615416565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250505050610100870135610160880135846131f5565b6140085760405162461bcd60e51b81526020600482015260496024820152600080516020615bd983398151915260448201527f616c3a20496e76616c696420657865637574696f6e5061796c6f6164206d657260648201526835b63290383937b7b360b91b608482015260a4016106a4565b506140606140196060860186615416565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050505061016086013561014087013560096131f5565b6140cb5760405162461bcd60e51b81526020600482015260426024820152600080516020615bd983398151915260448201527f616c3a20496e76616c69642074696d657374616d70206d65726b6c652070726f60648201526137b360f11b608482015260a4016106a4565b60006140de610100860160e08701615b66565b6001600160401b03166140f360046001614b54565b600e901b179050600061413888888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061471092505050565b90506141886141478780615416565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050505061016088013583856131f5565b6141f45760405162461bcd60e51b81526020600482015260436024820152600080516020615bd983398151915260448201527f616c3a20496e76616c6964207769746864726177616c206d65726b6c6520707260648201526237b7b360e91b608482015260a4016106a4565b505050505050505050565b6000610c648260018151811061325e5761325e61545c565b6000610c648260038151811061325e5761325e61545c565b600060206135a28361012001516146a9565b604080518082019091526000808252602082015260007f00000000000000000000000000000000000000000000000000000007735940006001600160401b0316846001600160401b031611156142b857507f00000000000000000000000000000000000000000000000000000007735940006142bb565b50825b60408051808201909152600080825260208201526142d98286615736565b6001600160401b0390811682526034805484926000916142fb91859116615b83565b92506101000a8154816001600160401b0302191690836001600160401b0316021790555061432d8285602001516135c4565b602082015260028460600151600281111561434a5761434a614d76565b1461436c576039805490600061435f83615bae565b9091555050600260608501525b600060208086018281528a83526036909152604091829020865181549251938801516001600160401b03908116600160801b0267ffffffffffffffff60801b19958216600160401b026001600160801b0319909516929091169190911792909217928316821781556060870151879391929091839160ff60c01b191668ffffffffffffffffff60801b1990911617600160c01b83600281111561441157614411614d76565b0217905550506040805164ffffffffff8c1681526001600160401b038a8116602083015288168183015290516001600160a01b03891692507fb76a93bb649ece524688f1a01d184e0bbebcda58eae80c28a898bec3fb5a09639181900360600190a298975050505050505050565b60408051808201909152600080825260208201526040805164ffffffffff871681526001600160401b0380871660208301528416918101919091526001600160a01b038416907f8a7335714231dbd551aaba6314f4a97a14c201e53a3e25e1140325cdf67d7a4e9060600160405180910390a2603880548391906000906145109084906001600160401b0316615b83565b92506101000a8154816001600160401b0302191690836001600160401b031602179055506040518060400160405280836001600160401b0316815260200160008152509050949350505050565b6000835160001415801561457c57506020845161457a919061570e565b155b61460b5760405162461bcd60e51b815260206004820152605460248201527f4d65726b6c652e70726f63657373496e636c7573696f6e50726f6f665368613260448201527f35363a2070726f6f66206c656e6774682073686f756c642062652061206e6f6e60648201527316bd32b9379036bab63a34b836329037b310199960611b608482015260a4016106a4565b604080516020808201909252848152905b8551811161469f5761462f60028561570e565b614662578151600052808601516020526020826040600060026107d05a03fa61465757600080fd5b60028404935061468d565b8086015160005281516020526020826040600060026107d05a03fa61468657600080fd5b6002840493505b614698602082614b54565b905061461c565b5051949350505050565b60f881901c60e882901c61ff00161760d882901c62ff0000161760c882901c63ff000000161764ff0000000060b883901c161765ff000000000060a883901c161766ff000000000000609883901c161767ff0000000000000060889290921c919091161790565b600080600283516147219190615722565b90506000816001600160401b0381111561473d5761473d614f83565b604051908082528060200260200182016040528015614766578160200160208202803683370190505b50905060005b8281101561486d57600285614781838361577f565b815181106147915761479161545c565b6020026020010151868360026147a7919061577f565b6147b2906001614b54565b815181106147c2576147c261545c565b60200260200101516040516020016147e4929190918252602082015260400190565b60408051601f19818403018152908290526147fe91615808565b602060405180830381855afa15801561481b573d6000803e3d6000fd5b5050506040513d601f19601f8201168201806040525081019061483e91906153fd565b8282815181106148505761485061545c565b602090810291909101015280614865816154e2565b91505061476c565b50614879600283615722565b91505b81156149995760005b828110156149865760028261489a838361577f565b815181106148aa576148aa61545c565b6020026020010151838360026148c0919061577f565b6148cb906001614b54565b815181106148db576148db61545c565b60200260200101516040516020016148fd929190918252602082015260400190565b60408051601f198184030181529082905261491791615808565b602060405180830381855afa158015614934573d6000803e3d6000fd5b5050506040513d601f19601f8201168201806040525081019061495791906153fd565b8282815181106149695761496961545c565b60209081029190910101528061497e816154e2565b915050614885565b50614992600283615722565b915061487c565b806000815181106149ac576149ac61545c565b602002602001015192505050919050565b60606149cc84846000856149d4565b949350505050565b606082471015614a355760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016106a4565b6001600160a01b0385163b614a8c5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016106a4565b600080866001600160a01b03168587604051614aa89190615808565b60006040518083038185875af1925050503d8060008114614ae5576040519150601f19603f3d011682016040523d82523d6000602084013e614aea565b606091505b5091509150614afa828286614b05565b979650505050505050565b60608315614b145750816135dc565b825115614b245782518084602001fd5b8160405162461bcd60e51b81526004016106a49190615bc5565b634e487b7160e01b600052601160045260246000fd5b60008219821115614b6757614b67614b3e565b500190565b6001600160401b0381168114611fb857600080fd5b8035614b8c81614b6c565b919050565b60008060408385031215614ba457600080fd5b823591506020830135614bb681614b6c565b809150509250929050565b600060408284031215614bd357600080fd5b50919050565b60008083601f840112614beb57600080fd5b5081356001600160401b03811115614c0257600080fd5b6020830191508360208260051b8501011115614c1d57600080fd5b9250929050565b60008060008060008060008060a0898b031215614c4057600080fd5b8835614c4b81614b6c565b975060208901356001600160401b0380821115614c6757600080fd5b614c738c838d01614bc1565b985060408b0135915080821115614c8957600080fd5b614c958c838d01614bd9565b909850965060608b0135915080821115614cae57600080fd5b614cba8c838d01614bd9565b909650945060808b0135915080821115614cd357600080fd5b50614ce08b828c01614bd9565b999c989b5096995094979396929594505050565b60008083601f840112614d0657600080fd5b5081356001600160401b03811115614d1d57600080fd5b602083019150836020828501011115614c1d57600080fd5b60008060208385031215614d4857600080fd5b82356001600160401b03811115614d5e57600080fd5b614d6a85828601614cf4565b90969095509350505050565b634e487b7160e01b600052602160045260246000fd5b60038110614daa57634e487b7160e01b600052602160045260246000fd5b9052565b60208101610c648284614d8c565b600060208284031215614dce57600080fd5b5035919050565b60006080820190506001600160401b03808451168352806020850151166020840152806040850151166040840152506060830151614e166060840182614d8c565b5092915050565b600080600080600060608688031215614e3557600080fd5b85356001600160401b0380821115614e4c57600080fd5b614e5889838a01614cf4565b90975095506020880135915080821115614e7157600080fd5b50614e7e88828901614cf4565b96999598509660400135949350505050565b60008060008060008060008060a0898b031215614eac57600080fd5b8835614eb781614b6c565b975060208901356001600160401b0380821115614ed357600080fd5b614edf8c838d01614bd9565b909950975060408b0135915080821115614ef857600080fd5b614f048c838d01614bc1565b965060608b0135915080821115614cae57600080fd5b6001600160a01b0381168114611fb857600080fd5b8035614b8c81614f1a565b60008060408385031215614f4d57600080fd5b8235614f5881614f1a565b946020939093013593505050565b600060208284031215614f7857600080fd5b81356135dc81614f1a565b634e487b7160e01b600052604160045260246000fd5b60405161018081016001600160401b0381118282101715614fbc57614fbc614f83565b60405290565b604051601f8201601f191681016001600160401b0381118282101715614fea57614fea614f83565b604052919050565b60006001600160401b0382111561500b5761500b614f83565b5060051b60200190565b600082601f83011261502657600080fd5b8135602061503b61503683614ff2565b614fc2565b82815260059290921b8401810191818101908684111561505a57600080fd5b8286015b84811015615075578035835291830191830161505e565b509695505050505050565b60008060006060848603121561509557600080fd5b83356001600160401b03808211156150ac57600080fd5b818601915086601f8301126150c057600080fd5b813560206150d061503683614ff2565b82815260059290921b8401810191818101908a8411156150ef57600080fd5b948201945b8386101561511657853561510781614f1a565b825294820194908201906150f4565b9750508701359250508082111561512c57600080fd5b5061513986828701615015565b92505061514860408501614f2f565b90509250925092565b60008060008060008060008060008060c08b8d03121561517057600080fd5b6151798b614b81565b995060208b01356001600160401b038082111561519557600080fd5b6151a18e838f01614bc1565b9a5060408d01359150808211156151b757600080fd5b6151c38e838f01614bd9565b909a50985060608d01359150808211156151dc57600080fd5b6151e88e838f01614bd9565b909850965060808d013591508082111561520157600080fd5b61520d8e838f01614bd9565b909650945060a08d013591508082111561522657600080fd5b506152338d828e01614bd9565b915080935050809150509295989b9194979a5092959850565b60006020828403121561525e57600080fd5b815180151581146135dc57600080fd5b6020808252603e908201527f456967656e506f642e6f6e6c795768656e4e6f745061757365643a20696e646560408201527f782069732070617573656420696e20456967656e506f644d616e616765720000606082015260800190565b60208082526028908201527f456967656e506f642e6f6e6c79456967656e506f644f776e65723a206e6f74206040820152673837b227bbb732b960c11b606082015260800190565b6020808252602f908201527f456967656e506f642e6861734e6576657252657374616b65643a20726573746160408201526e1ada5b99c81a5cc8195b98589b1959608a1b606082015260800190565b6020808252606f908201527f456967656e506f642e70726f6f664973466f7256616c696454696d657374616d60408201527f703a20626561636f6e20636861696e2070726f6f66206d75737420626520666f60608201527f722074696d657374616d70206166746572206d6f7374526563656e745769746860808201526e064726177616c54696d657374616d7608c1b60a082015260c00190565b60006020828403121561540f57600080fd5b5051919050565b6000808335601e1984360301811261542d57600080fd5b8301803591506001600160401b0382111561544757600080fd5b602001915036819003821315614c1d57600080fd5b634e487b7160e01b600052603260045260246000fd5b60006020828403121561548457600080fd5b813564ffffffffff811681146135dc57600080fd5b6000808335601e198436030181126154b057600080fd5b8301803591506001600160401b038211156154ca57600080fd5b6020019150600581901b3603821315614c1d57600080fd5b60006000198214156154f6576154f6614b3e565b5060010190565b60208082526031908201527f456967656e506f642e6f6e6c79456967656e506f644d616e616765723a206e6f6040820152703a1032b4b3b2b72837b226b0b730b3b2b960791b606082015260800190565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60005b8381101561559257818101518382015260200161557a565b838111156121435750506000910152565b600081518084526155bb816020860160208601615577565b601f01601f19169290920160200192915050565b6080815260006155e360808301888a61554e565b82810360208401526155f581886155a3565b9050828103604084015261560a81868861554e565b915050826060830152979650505050505050565b6020815260006149cc60208301848661554e565b600080821280156001600160ff1b038490038513161561565457615654614b3e565b600160ff1b839003841281161561566d5761566d614b3e565b50500190565b60006001600160ff1b038184138284138082168684048611161561569957615699614b3e565b600160ff1b60008712828116878305891216156156b8576156b8614b3e565b600087129250878205871284841616156156d4576156d4614b3e565b878505871281841616156156ea576156ea614b3e565b505050929093029392505050565b634e487b7160e01b600052601260045260246000fd5b60008261571d5761571d6156f8565b500690565b600082615731576157316156f8565b500490565b60006001600160401b038381169083168181101561575657615756614b3e565b039392505050565b6000823561017e1983360301811261577557600080fd5b9190910192915050565b600081600019048311821515161561579957615799614b3e565b500290565b6000828210156157b0576157b0614b3e565b500390565b80516020808301519190811015614bd35760001960209190910360031b1b16919050565b600083516157eb818460208801615577565b6001600160801b0319939093169190920190815260100192915050565b60008251615775818460208701615577565b600082601f83011261582b57600080fd5b81356001600160401b0381111561584457615844614f83565b615857601f8201601f1916602001614fc2565b81815284602083860101111561586c57600080fd5b816020850160208301376000918101602001919091529392505050565b6000610180823603121561589c57600080fd5b6158a4614f99565b82356001600160401b03808211156158bb57600080fd5b6158c73683870161581a565b835260208501359150808211156158dd57600080fd5b6158e93683870161581a565b6020840152604085013591508082111561590257600080fd5b61590e3683870161581a565b6040840152606085013591508082111561592757600080fd5b6159333683870161581a565b6060840152608085013591508082111561594c57600080fd5b506159593682860161581a565b60808301525061596b60a08401614b81565b60a082015261597c60c08401614b81565b60c082015261598d60e08401614b81565b60e082015261010083810135908201526101208084013590820152610140808401359082015261016092830135928101929092525090565b6000602082840312156159d757600080fd5b81516135dc81614b6c565b600181815b80851115615a1d578160001904821115615a0357615a03614b3e565b80851615615a1057918102915b93841c93908002906159e7565b509250929050565b600082615a3457506001610c64565b81615a4157506000610c64565b8160018114615a575760028114615a6157615a7d565b6001915050610c64565b60ff841115615a7257615a72614b3e565b50506001821b610c64565b5060208310610133831016604e8410600b8410161715615aa0575081810a610c64565b615aaa83836159e2565b8060001904821115615abe57615abe614b3e565b029392505050565b60006135dc8383615a25565b60006001600160401b0380831681851681830481118215151615615af857615af8614b3e565b02949350505050565b60006001600160401b0380841680615b1b57615b1b6156f8565b92169190910492915050565b60008083128015600160ff1b850184121615615b4557615b45614b3e565b6001600160ff1b0384018313811615615b6057615b60614b3e565b50500390565b600060208284031215615b7857600080fd5b81356135dc81614b6c565b60006001600160401b03808316818516808303821115615ba557615ba5614b3e565b01949350505050565b600081615bbd57615bbd614b3e565b506000190190565b6020815260006135dc60208301846155a356fe426561636f6e436861696e50726f6f66732e7665726966795769746864726177a26469706673582212208b4d7c5233e2105019f597ee43bdf138a0116104b121f1680aed4a6689dba8aa64736f6c634300080c0033","storage":{"0x0":"0xff"}},"0x90f79bf6eb2c4f870365e785982e1f101e93b906":{"nonce":0,"balance":"0x21e19e0c9bab2400000","code":"0x","storage":{}},"0x95401dc811bb5740090279ba06cfa8fcf6113778":{"nonce":1,"balance":"0x0","code":"0x60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b6100803660046106f1565b610118565b61005b61009336600461070c565b61015f565b3480156100a457600080fd5b506100ad6101d0565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e43660046106f1565b61020b565b3480156100f557600080fd5b506100ad610235565b61010661029b565b61011661011161033a565b610344565b565b610120610368565b6001600160a01b0316336001600160a01b03161415610157576101548160405180602001604052806000815250600061039b565b50565b6101546100fe565b610167610368565b6001600160a01b0316336001600160a01b031614156101c8576101c38383838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506001925061039b915050565b505050565b6101c36100fe565b60006101da610368565b6001600160a01b0316336001600160a01b03161415610200576101fb61033a565b905090565b6102086100fe565b90565b610213610368565b6001600160a01b0316336001600160a01b0316141561015757610154816103c6565b600061023f610368565b6001600160a01b0316336001600160a01b03161415610200576101fb610368565b6060610285838360405180606001604052806027815260200161080b6027913961041a565b9392505050565b6001600160a01b03163b151590565b6102a3610368565b6001600160a01b0316336001600160a01b031614156101165760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b60006101fb6104f7565b3660008037600080366000845af43d6000803e808015610363573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b6103a48361051f565b6000825111806103b15750805b156101c3576103c08383610260565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103ef610368565b604080516001600160a01b03928316815291841660208301520160405180910390a16101548161055f565b60606001600160a01b0384163b6104825760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610331565b600080856001600160a01b03168560405161049d91906107bb565b600060405180830381855af49150503d80600081146104d8576040519150601f19603f3d011682016040523d82523d6000602084013e6104dd565b606091505b50915091506104ed828286610608565b9695505050505050565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61038c565b61052881610641565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6001600160a01b0381166105c45760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b6064820152608401610331565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b60608315610617575081610285565b8251156106275782518084602001fd5b8160405162461bcd60e51b815260040161033191906107d7565b6001600160a01b0381163b6106ae5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610331565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6105e7565b80356001600160a01b03811681146106ec57600080fd5b919050565b60006020828403121561070357600080fd5b610285826106d5565b60008060006040848603121561072157600080fd5b61072a846106d5565b9250602084013567ffffffffffffffff8082111561074757600080fd5b818601915086601f83011261075b57600080fd5b81358181111561076a57600080fd5b87602082850101111561077c57600080fd5b6020830194508093505050509250925092565b60005b838110156107aa578181015183820152602001610792565b838111156103c05750506000910152565b600082516107cd81846020870161078f565b9190910192915050565b60208152600082518060208401526107f681604085016020870161078f565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212202d8aef871a7506c5a3b3c27bcde2c65544a40c9d05e5fba361c75671607f864e64736f6c634300080c0033","storage":{"0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc":"0x9d4454b023096f34b160d6b654540c56a1f81688","0x3617319a054d772f909f7c479a2cebe5066e836a939412e32403c99029b92eff":"0x1","0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103":"0xc3e53f4d16ae77db1c982e75a937b9f60fe63690","0xcfb339bd1c51c488f6134f4ac63d1594afad827b3401c3fc51ed1da74a8ca14e":"0x1c"}},"0x959922be3caee4b8cd9a407cc3ac1c251c2007b1":{"nonce":1,"balance":"0x0","code":"0x60806040526004361061014b5760003560e01c806385594e58116100b6578063e4f4f8871161006f578063e4f4f887146103cc578063e5db06c014610405578063eb990c5914610425578063ecb7cb1b14610445578063f2fde38b14610472578063fabc1cbc1461049257600080fd5b806385594e5814610317578063886f1195146103445780638da5cb5b14610364578063c0db354c14610382578063ca661c0414610395578063d44e1b76146103ac57600080fd5b806350f73e7c1161010857806350f73e7c14610254578063595c6a67146102785780635ac86ab71461028d5780635c975abb146102cd578063715018a6146102e257806375608896146102f757600080fd5b806310d67a2f14610150578063136439dd146101725780631f39d87f146101925780633e1de008146101c85780634665bcda146101e85780634d50f9a414610234575b600080fd5b34801561015c57600080fd5b5061017061016b36600461196d565b6104b2565b005b34801561017e57600080fd5b5061017061018d366004611991565b61056e565b34801561019e57600080fd5b506101b26101ad36600461196d565b6106ad565b6040516101bf91906119c8565b60405180910390f35b3480156101d457600080fd5b506101b26101e336600461196d565b6108a8565b3480156101f457600080fd5b5061021c7f000000000000000000000000a513e6e4b8f2a923d98304ec87f64353c4d5c85381565b6040516001600160a01b0390911681526020016101bf565b34801561024057600080fd5b5061017061024f366004611991565b6109ee565b34801561026057600080fd5b5061026a60c95481565b6040519081526020016101bf565b34801561028457600080fd5b506101706109ff565b34801561029957600080fd5b506102bd6102a8366004611a15565b609854600160ff9092169190911b9081161490565b60405190151581526020016101bf565b3480156102d957600080fd5b5060985461026a565b3480156102ee57600080fd5b50610170610ac6565b34801561030357600080fd5b506102bd610312366004611a38565b610ada565b34801561032357600080fd5b50610337610332366004611a38565b610b5d565b6040516101bf9190611a64565b34801561035057600080fd5b5060975461021c906001600160a01b031681565b34801561037057600080fd5b506033546001600160a01b031661021c565b610170610390366004611a72565b610bdd565b3480156103a157600080fd5b5061026a62034bc081565b3480156103b857600080fd5b506101706103c7366004611991565b610e9d565b3480156103d857600080fd5b5061026a6103e736600461196d565b6001600160a01b0316600090815260ca602052604090206001015490565b34801561041157600080fd5b50610170610420366004611a38565b610f31565b34801561043157600080fd5b50610170610440366004611aab565b610fc6565b34801561045157600080fd5b5061046561046036600461196d565b6110ee565b6040516101bf9190611af1565b34801561047e57600080fd5b5061017061048d36600461196d565b6111a8565b34801561049e57600080fd5b506101706104ad366004611991565b61121e565b609760009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610505573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105299190611b47565b6001600160a01b0316336001600160a01b0316146105625760405162461bcd60e51b815260040161055990611b64565b60405180910390fd5b61056b8161137a565b50565b60975460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa1580156105b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105da9190611bae565b6105f65760405162461bcd60e51b815260040161055990611bd0565b6098548181161461066f5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608401610559565b609881905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b6001600160a01b038116600090815260ca6020526040812080546001909101546060926106da8383611c2e565b90508060005b82811015610786576001600160a01b038716600090815260ca6020526040812060010161070d8388611c45565b8154811061071d5761071d611c5d565b6000918252602091829020604080518082019091529101546001600160e01b0381168252600160e01b900463ffffffff1691810182905260c95490925061076391611c45565b4310156107735781925050610786565b508061077e81611c73565b9150506106e0565b508060008167ffffffffffffffff8111156107a3576107a3611c8e565b6040519080825280602002602001820160405280156107e857816020015b60408051808201909152600080825260208201528152602001906001900390816107c15790505b509050811561089d5760005b8281101561089b576001600160a01b038916600090815260ca602052604090206001016108218289611c45565b8154811061083157610831611c5d565b6000918252602091829020604080518082019091529101546001600160e01b0381168252600160e01b900463ffffffff1691810191909152825183908390811061087d5761087d611c5d565b6020026020010181905250808061089390611c73565b9150506107f4565b505b979650505050505050565b6001600160a01b038116600090815260ca6020526040812080546001909101546060926108d58383611c2e565b905060008167ffffffffffffffff8111156108f2576108f2611c8e565b60405190808252806020026020018201604052801561093757816020015b60408051808201909152600080825260208201528152602001906001900390816109105790505b50905060005b828110156109e4576001600160a01b038716600090815260ca6020526040902060010161096a8287611c45565b8154811061097a5761097a611c5d565b6000918252602091829020604080518082019091529101546001600160e01b0381168252600160e01b900463ffffffff169181019190915282518390839081106109c6576109c6611c5d565b602002602001018190525080806109dc90611c73565b91505061093d565b5095945050505050565b6109f6611471565b61056b816114cb565b60975460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610a47573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a6b9190611bae565b610a875760405162461bcd60e51b815260040161055990611bd0565b600019609881905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b610ace611471565b610ad86000611593565b565b6001600160a01b038216600090815260ca60205260408120548210801590610b54575060c9546001600160a01b038416600090815260ca60205260409020600101805484908110610b2d57610b2d611c5d565b600091825260209091200154610b509190600160e01b900463ffffffff16611c45565b4310155b90505b92915050565b60408051808201909152600080825260208201526001600160a01b038316600090815260ca60205260409020600101805483908110610b9e57610b9e611c5d565b6000918252602091829020604080518082019091529101546001600160e01b0381168252600160e01b900463ffffffff16918101919091529392505050565b60405163a38406a360e01b81526001600160a01b038084166004830152839133917f000000000000000000000000a513e6e4b8f2a923d98304ec87f64353c4d5c853169063a38406a390602401602060405180830381865afa158015610c47573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c6b9190611b47565b6001600160a01b031614610ce75760405162461bcd60e51b815260206004820152603d60248201527f44656c617965645769746864726177616c526f757465722e6f6e6c794569676560448201527f6e506f643a206e6f7420706f644f776e6572277320456967656e506f640000006064820152608401610559565b60985460009060019081161415610d105760405162461bcd60e51b815260040161055990611ca4565b6001600160a01b038316610da65760405162461bcd60e51b815260206004820152605160248201527f44656c617965645769746864726177616c526f757465722e637265617465446560448201527f6c617965645769746864726177616c3a20726563697069656e742063616e6e6f60648201527074206265207a65726f206164647265737360781b608482015260a401610559565b346001600160e01b03811615610e96576040805180820182526001600160e01b03808416825263ffffffff43811660208085019182526001600160a01b038a16600081815260ca8352968720600190810180548083018255818a5293892088519551909616600160e01b029490961693909317939091019290925593525490917fb8f1b14c7caf74150801dcc9bc18d575cbeaf5b421943497e409df92c92e0f5991889188918691610e5791611c2e565b604080516001600160a01b0395861681529490931660208501526001600160e01b039091169183019190915260608201526080015b60405180910390a1505b5050505050565b60026065541415610ef05760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610559565b600260655560985460009060019081161415610f1e5760405162461bcd60e51b815260040161055990611ca4565b610f2833836115e5565b50506001606555565b60026065541415610f845760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610559565b600260655560985460009060019081161415610fb25760405162461bcd60e51b815260040161055990611ca4565b610fbc83836115e5565b5050600160655550565b600054610100900460ff1615808015610fe65750600054600160ff909116105b806110005750303b158015611000575060005460ff166001145b6110635760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610559565b6000805460ff191660011790558015611086576000805461ff0019166101001790555b61108f85611593565b6110998484611750565b6110a2826114cb565b8015610e96576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050505050565b6040805180820190915260008152606060208201526001600160a01b038216600090815260ca6020908152604080832081518083018352815481526001820180548451818702810187019095528085529195929486810194939192919084015b8282101561119a57600084815260209081902060408051808201909152908401546001600160e01b0381168252600160e01b900463ffffffff168183015282526001909201910161114e565b505050915250909392505050565b6111b0611471565b6001600160a01b0381166112155760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610559565b61056b81611593565b609760009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611271573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112959190611b47565b6001600160a01b0316336001600160a01b0316146112c55760405162461bcd60e51b815260040161055990611b64565b6098541981196098541916146113435760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608401610559565b609881905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c906020016106a2565b6001600160a01b0381166114085760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a401610559565b609754604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1609780546001600160a01b0319166001600160a01b0392909216919091179055565b6033546001600160a01b03163314610ad85760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610559565b62034bc08111156115525760405162461bcd60e51b815260206004820152604560248201527f44656c617965645769746864726177616c526f757465722e5f7365745769746860448201527f64726177616c44656c6179426c6f636b733a206e657756616c756520746f6f206064820152646c6172676560d81b608482015260a401610559565b60c95460408051918252602082018390527f4ffb00400574147429ee377a5633386321e66d45d8b14676014b5fa393e61e9e910160405180910390a160c955565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b038216600090815260ca602052604081208054600190910154825b848110801561161e57508161161c8285611c45565b105b156116cb576001600160a01b038616600090815260ca602052604081206001016116488386611c45565b8154811061165857611658611c5d565b6000918252602091829020604080518082019091529101546001600160e01b0381168252600160e01b900463ffffffff1691810182905260c95490925061169e91611c45565b4310156116ab57506116cb565b80516116c0906001600160e01b031686611c45565b945050600101611607565b6116d58184611c45565b6001600160a01b038716600090815260ca602052604090205583156116fe576116fe868561183a565b7f6b7151500bd0b5cc211bcc47b3029831b769004df4549e8e1c9a69da05bb0943868561172b8487611c45565b604080516001600160a01b039094168452602084019290925290820152606001610e8c565b6097546001600160a01b031615801561177157506001600160a01b03821615155b6117f35760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a401610559565b609881905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a26118368261137a565b5050565b8047101561188a5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401610559565b6000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146118d7576040519150601f19603f3d011682016040523d82523d6000602084013e6118dc565b606091505b50509050806119535760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d617920686176652072657665727465640000000000006064820152608401610559565b505050565b6001600160a01b038116811461056b57600080fd5b60006020828403121561197f57600080fd5b813561198a81611958565b9392505050565b6000602082840312156119a357600080fd5b5035919050565b80516001600160e01b0316825260209081015163ffffffff16910152565b602080825282518282018190526000919060409081850190868401855b82811015611a08576119f88483516119aa565b92840192908501906001016119e5565b5091979650505050505050565b600060208284031215611a2757600080fd5b813560ff8116811461198a57600080fd5b60008060408385031215611a4b57600080fd5b8235611a5681611958565b946020939093013593505050565b60408101610b5782846119aa565b60008060408385031215611a8557600080fd5b8235611a9081611958565b91506020830135611aa081611958565b809150509250929050565b60008060008060808587031215611ac157600080fd5b8435611acc81611958565b93506020850135611adc81611958565b93969395505050506040820135916060013590565b602080825282518282015282810151604080840181905281516060850181905260009392830191849160808701905b8084101561089b57611b338286516119aa565b938501936001939093019290820190611b20565b600060208284031215611b5957600080fd5b815161198a81611958565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b600060208284031215611bc057600080fd5b8151801515811461198a57600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b600082821015611c4057611c40611c18565b500390565b60008219821115611c5857611c58611c18565b500190565b634e487b7160e01b600052603260045260246000fd5b6000600019821415611c8757611c87611c18565b5060010190565b634e487b7160e01b600052604160045260246000fd5b60208082526019908201527f5061757361626c653a20696e646578206973207061757365640000000000000060408201526060019056fea264697066735822122017afad02485c63962f908328bdc40450b379dd341ed5366281679a74acfe19dd64736f6c634300080c0033","storage":{"0x0":"0xff"}},"0x976ea74026e726554db657fa54763abd0c3a0aa9":{"nonce":0,"balance":"0x21e19e0c9bab2400000","code":"0x","storage":{}},"0x9965507d1a55bcc2695c58ba16fb37d819b0a4dc":{"nonce":0,"balance":"0x21e19e0c9bab2400000","code":"0x","storage":{}},"0x998abeb3e57409262ae5b751f60747921b33613e":{"nonce":1,"balance":"0x0","code":"0x60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b6100803660046106f1565b610118565b61005b61009336600461070c565b61015f565b3480156100a457600080fd5b506100ad6101d0565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e43660046106f1565b61020b565b3480156100f557600080fd5b506100ad610235565b61010661029b565b61011661011161033a565b610344565b565b610120610368565b6001600160a01b0316336001600160a01b03161415610157576101548160405180602001604052806000815250600061039b565b50565b6101546100fe565b610167610368565b6001600160a01b0316336001600160a01b031614156101c8576101c38383838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506001925061039b915050565b505050565b6101c36100fe565b60006101da610368565b6001600160a01b0316336001600160a01b03161415610200576101fb61033a565b905090565b6102086100fe565b90565b610213610368565b6001600160a01b0316336001600160a01b0316141561015757610154816103c6565b600061023f610368565b6001600160a01b0316336001600160a01b03161415610200576101fb610368565b6060610285838360405180606001604052806027815260200161080b6027913961041a565b9392505050565b6001600160a01b03163b151590565b6102a3610368565b6001600160a01b0316336001600160a01b031614156101165760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b60006101fb6104f7565b3660008037600080366000845af43d6000803e808015610363573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b6103a48361051f565b6000825111806103b15750805b156101c3576103c08383610260565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103ef610368565b604080516001600160a01b03928316815291841660208301520160405180910390a16101548161055f565b60606001600160a01b0384163b6104825760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610331565b600080856001600160a01b03168560405161049d91906107bb565b600060405180830381855af49150503d80600081146104d8576040519150601f19603f3d011682016040523d82523d6000602084013e6104dd565b606091505b50915091506104ed828286610608565b9695505050505050565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61038c565b61052881610641565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6001600160a01b0381166105c45760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b6064820152608401610331565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b60608315610617575081610285565b8251156106275782518084602001fd5b8160405162461bcd60e51b815260040161033191906107d7565b6001600160a01b0381163b6106ae5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610331565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6105e7565b80356001600160a01b03811681146106ec57600080fd5b919050565b60006020828403121561070357600080fd5b610285826106d5565b60008060006040848603121561072157600080fd5b61072a846106d5565b9250602084013567ffffffffffffffff8082111561074757600080fd5b818601915086601f83011261075b57600080fd5b81358181111561076a57600080fd5b87602082850101111561077c57600080fd5b6020830194508093505050509250925092565b60005b838110156107aa578181015183820152602001610792565b838111156103c05750506000910152565b600082516107cd81846020870161078f565b9190910192915050565b60208152600082518060208401526107f681604085016020870161078f565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212202d8aef871a7506c5a3b3c27bcde2c65544a40c9d05e5fba361c75671607f864e64736f6c634300080c0033","storage":{"0xeb5be412f275a18f6e4d622aee4ff40b21467c926224771b782d4c095d1444b":"0x1c","0x17ef568e3e12ab5b9c7254a8d58478811de00f9e6eb34345acd53bf8fd09d3ec":"0x1","0x295841a49a1089f4b560f91cfbb0133326654dcbb1041861fc5dde96c724a22f":"0x9635f643e140090a9a8dcd712ed6285858cebef","0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc":"0x4826533b4897376654bb4d4ad88b7fafd0c98528","0x3617319a054d772f909f7c479a2cebe5066e836a939412e32403c99029b92eff":"0x1","0xa6eef7e35abe7026729641147f7915573c7e97b47efa546f5f6e3230263bcb49":"0x1","0xad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb5":"0x1","0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103":"0xc3e53f4d16ae77db1c982e75a937b9f60fe63690","0xcfb339bd1c51c488f6134f4ac63d1594afad827b3401c3fc51ed1da74a8ca14e":"0xde0b6b3a764000009635f643e140090a9a8dcd712ed6285858cebef"}},"0x9a676e781a523b5d0c0e43731313a708cb607508":{"nonce":1,"balance":"0x0","code":"0x608060405234801561001057600080fd5b50600436106101f05760003560e01c80637cf72bba1161010f578063d98128c0116100a2578063e921d4fa11610071578063e921d4fa146103c6578063f2fde38b1461044c578063f73b7519146102a9578063fabc1cbc1461045f57600080fd5b8063d98128c014610430578063da16e29b14610322578063df5cf723146102ba578063e58398361461043e57600080fd5b80638da5cb5b116100de5780638da5cb5b146103b5578063a49db732146103c6578063c747075b146103da578063d7b7fa13146103ee57600080fd5b80637cf72bba146103465780638105e04314610354578063855fcc4a1461036b578063886f1195146103a257600080fd5b806339b70e38116101875780636f0c2f74116101565780636f0c2f7414610322578063715018a614610330578063723e59c7146103385780637259a45c1461024257600080fd5b806339b70e38146102ba578063595c6a67146102d55780635ac86ab7146102dd5780635c975abb1461031057600080fd5b80631794bb3c116101c35780631794bb3c1461022f5780631874e5ae14610242578063282670fc1461027257806338c8ee64146102a957600080fd5b80630ffabbce146101f557806310d67a2f14610209578063136439dd1461021c578063175d3205146101f5575b600080fd5b610207610203366004610b25565b5050565b005b610207610217366004610b5a565b610472565b61020761022a366004610b7e565b61052b565b61020761023d366004610b97565b505050565b610258610250366004610b25565b600092915050565b60405163ffffffff90911681526020015b60405180910390f35b610285610280366004610bd8565b61066a565b60408051825163ffffffff9081168252602093840151169281019290925201610269565b6102076102b7366004610b5a565b50565b60005b6040516001600160a01b039091168152602001610269565b610207610685565b6103006102eb366004610c04565b606654600160ff9092169190911b9081161490565b6040519015158152602001610269565b6066545b604051908152602001610269565b610258610250366004610c27565b61020761074c565b610314610250366004610b25565b610207610203366004610c60565b610300610362366004610cd5565b60009392505050565b610385610379366004610c27565b60008060009250925092565b604080519315158452602084019290925290820152606001610269565b6065546102bd906001600160a01b031681565b6033546001600160a01b03166102bd565b6103146103d4366004610b5a565b50600090565b6102076103e8366004610d13565b50505050565b6104016103fc366004610c27565b610760565b60408051825163ffffffff90811682526020808501518216908301529282015190921690820152606001610269565b610300610250366004610c27565b6103006103d4366004610b5a565b61020761045a366004610b5a565b610782565b61020761046d366004610b7e565b6107f8565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104e99190610d60565b6001600160a01b0316336001600160a01b0316146105225760405162461bcd60e51b815260040161051990610d7d565b60405180910390fd5b6102b781610954565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610573573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105979190610dc7565b6105b35760405162461bcd60e51b815260040161051990610de9565b6066548181161461062c5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608401610519565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b60408051808201909152600080825260208201525b92915050565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa1580156106cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106f19190610dc7565b61070d5760405162461bcd60e51b815260040161051990610de9565b600019606681905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b610754610a4b565b61075e6000610aa5565b565b604080516060810182526000808252602082018190529181019190915261067f565b61078a610a4b565b6001600160a01b0381166107ef5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610519565b6102b781610aa5565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561084b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061086f9190610d60565b6001600160a01b0316336001600160a01b03161461089f5760405162461bcd60e51b815260040161051990610d7d565b60665419811960665419161461091d5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608401610519565b606681905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200161065f565b6001600160a01b0381166109e25760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a401610519565b606554604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1606580546001600160a01b0319166001600160a01b0392909216919091179055565b6033546001600160a01b0316331461075e5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610519565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b03811681146102b757600080fd5b803563ffffffff81168114610b2057600080fd5b919050565b60008060408385031215610b3857600080fd5b8235610b4381610af7565b9150610b5160208401610b0c565b90509250929050565b600060208284031215610b6c57600080fd5b8135610b7781610af7565b9392505050565b600060208284031215610b9057600080fd5b5035919050565b600080600060608486031215610bac57600080fd5b8335610bb781610af7565b92506020840135610bc781610af7565b929592945050506040919091013590565b60008060408385031215610beb57600080fd5b8235610bf681610af7565b946020939093013593505050565b600060208284031215610c1657600080fd5b813560ff81168114610b7757600080fd5b60008060408385031215610c3a57600080fd5b8235610c4581610af7565b91506020830135610c5581610af7565b809150509250929050565b60008060208385031215610c7357600080fd5b823567ffffffffffffffff80821115610c8b57600080fd5b818501915085601f830112610c9f57600080fd5b813581811115610cae57600080fd5b8660208260051b8501011115610cc357600080fd5b60209290920196919550909350505050565b600080600060608486031215610cea57600080fd5b8335610cf581610af7565b9250610d0360208501610b0c565b9150604084013590509250925092565b60008060008060808587031215610d2957600080fd5b8435610d3481610af7565b9350610d4260208601610b0c565b9250610d5060408601610b0c565b9396929550929360600135925050565b600060208284031215610d7257600080fd5b8151610b7781610af7565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b600060208284031215610dd957600080fd5b81518015158114610b7757600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b60608201526080019056fea264697066735822122007844e02ac26baddeecfcdcead22b5de822753bb8b1ae06a0e060d08cd944b1d64736f6c634300080c0033","storage":{}},"0x9d4454b023096f34b160d6b654540c56a1f81688":{"nonce":1,"balance":"0x0","code":"0x608060405234801561001057600080fd5b50600436106100b35760003560e01c8063890262451161007157806389026245146101b3578063a48bb0ac146101d3578063bd29b8cd146101e6578063caa3cd76146101f9578063e2e685801461020f578063f34109221461025557600080fd5b8062bff04d146100b857806312d1d74d146100e157806326d941f2146101155780632ed583e51461012a5780636d14a9871461013d5780638121906f1461017c575b600080fd5b6100cb6100c6366004610ec7565b610268565b6040516100d89190610f43565b60405180910390f35b6100f46100ef366004610fb7565b6103ca565b60408051825163ffffffff16815260209283015192810192909252016100d8565b610128610123366004610fea565b610410565b005b6100f4610138366004611005565b610534565b6101647f000000000000000000000000851356ae760d987e095750cceb3bc6014560891c81565b6040516001600160a01b0390911681526020016100d8565b61018f61018a366004610fea565b6105ba565b60408051825163ffffffff90811682526020938401511692810192909252016100d8565b6101c66101c1366004610fb7565b610601565b6040516100d89190611048565b61018f6101e1366004610fb7565b61076b565b6101286101f4366004610ec7565b6107e2565b610201600081565b6040519081526020016100d8565b61024061021d366004611080565b600160209081526000928352604080842090915290825290205463ffffffff1681565b60405163ffffffff90911681526020016100d8565b610240610263366004610fea565b6108f0565b6060336001600160a01b037f000000000000000000000000851356ae760d987e095750cceb3bc6014560891c16146102bb5760405162461bcd60e51b81526004016102b2906110aa565b60405180910390fd5b60008267ffffffffffffffff8111156102d6576102d661111d565b6040519080825280602002602001820160405280156102ff578160200160208202803683370190505b50905060005b838110156103bf57600085858381811061032157610321611133565b919091013560f81c60008181526003602052604090205490925090508061035a5760405162461bcd60e51b81526004016102b290611149565b60006103658361090f565b905061037c89846103776001856111b4565b610a08565b8085858151811061038f5761038f611133565b602002602001019063ffffffff16908163ffffffff168152505050505080806103b7906111d9565b915050610305565b5090505b9392505050565b60408051808201909152600080825260208201526103e88383610a92565b60408051808201909152815463ffffffff168152600190910154602082015290505b92915050565b336001600160a01b037f000000000000000000000000851356ae760d987e095750cceb3bc6014560891c16146104585760405162461bcd60e51b81526004016102b2906110aa565b60ff8116600090815260036020526040902054156104d25760405162461bcd60e51b815260206004820152603160248201527f496e64657852656769737472792e63726561746551756f72756d3a2071756f72604482015270756d20616c72656164792065786973747360781b60648201526084016102b2565b60ff166000908152600360209081526040808320815180830190925263ffffffff438116835282840185815282546001810184559286529390942091519101805492518416600160201b0267ffffffffffffffff199093169190931617179055565b604080518082019091526000808252602082015260ff8416600090815260026020908152604080832063ffffffff8088168552925290912080549091841690811061058157610581611133565b600091825260209182902060408051808201909152600290920201805463ffffffff168252600101549181019190915290509392505050565b60408051808201909152600080825260208201526105d782610aea565b60408051808201909152905463ffffffff8082168352600160201b90910416602082015292915050565b6060600061060f8484610b2c565b905060008163ffffffff1667ffffffffffffffff8111156106325761063261111d565b60405190808252806020026020018201604052801561065b578160200160208202803683370190505b50905060005b8263ffffffff168110156107625761067a868287610c61565b82828151811061068c5761068c611133565b6020026020010181815250506000801b8282815181106106ae576106ae611133565b602002602001015114156107505760405162461bcd60e51b815260206004820152605d60248201527f496e64657852656769737472792e6765744f70657261746f724c69737441744260448201527f6c6f636b4e756d6265723a206f70657261746f7220646f6573206e6f7420657860648201527f6973742061742074686520676976656e20626c6f636b206e756d626572000000608482015260a4016102b2565b8061075a816111d9565b915050610661565b50949350505050565b604080518082019091526000808252602082015260ff83166000908152600360205260409020805463ffffffff84169081106107a9576107a9611133565b60009182526020918290206040805180820190915291015463ffffffff8082168352600160201b90910416918101919091529392505050565b336001600160a01b037f000000000000000000000000851356ae760d987e095750cceb3bc6014560891c161461082a5760405162461bcd60e51b81526004016102b2906110aa565b60005b818110156108ea57600083838381811061084957610849611133565b919091013560f81c6000818152600360205260409020549092509050806108825760405162461bcd60e51b81526004016102b290611149565b60ff8216600090815260016020908152604080832089845290915281205463ffffffff16906108b084610d38565b905060006108be8583610d72565b90508089146108d2576108d2818685610a08565b505050505080806108e2906111d9565b91505061082d565b50505050565b60006108fb82610aea565b54600160201b900463ffffffff1692915050565b60008061091b83610aea565b805490915060009061093b90600160201b900463ffffffff1660016111f4565b9050610948848383610d9c565b60ff84166000908152600260205260408120906109666001846111b4565b63ffffffff1681526020810191909152604001600020546103c35760ff841660009081526002602052604081209061099f6001846111b4565b63ffffffff908116825260208083019390935260409182016000908120835180850190945243831684528385018281528154600180820184559284529590922093516002909502909301805463ffffffff19169490921693909317815591519101559392505050565b6000610a148383610a92565b9050610a2283838387610e3c565b60ff83166000818152600160209081526040808320888452825291829020805463ffffffff191663ffffffff871690811790915582519384529083015285917f6ee1e4f4075f3d067176140d34e87874244dd273294c05b2218133e49a2ba6f6910160405180910390a250505050565b60ff8216600090815260026020908152604080832063ffffffff851684529091528120805490610ac360018361121c565b81548110610ad357610ad3611133565b906000526020600020906002020191505092915050565b60ff81166000908152600360205260408120805490610b0a60018361121c565b81548110610b1a57610b1a611133565b90600052602060002001915050919050565b60ff8216600090815260036020526040812054805b8015610bd45760ff85166000908152600360205260408120610b6460018461121c565b81548110610b7457610b74611133565b60009182526020918290206040805180820190915291015463ffffffff808216808452600160201b90920481169383019390935290925090861610610bc15760200151925061040a915050565b5080610bcc81611233565b915050610b41565b5060405162461bcd60e51b815260206004820152605560248201527f496e64657852656769737472792e5f6f70657261746f72436f756e744174426c60448201527f6f636b4e756d6265723a2071756f72756d20646964206e6f742065786973742060648201527430ba1033b4bb32b710313637b1b590373ab6b132b960591b608482015260a4016102b2565b60ff8316600090815260026020908152604080832063ffffffff86168452909152812054805b8015610d2c5760ff8616600090815260026020908152604080832063ffffffff891684529091528120610cbb60018461121c565b81548110610ccb57610ccb611133565b600091825260209182902060408051808201909152600290920201805463ffffffff9081168084526001909201549383019390935290925090861610610d19576020015192506103c3915050565b5080610d2481611233565b915050610c87565b50600095945050505050565b600080610d4483610aea565b8054909150600090610d6590600190600160201b900463ffffffff166111b4565b90506103c3848383610d9c565b600080610d7f8484610a92565b6001810154909150610d948585846000610e3c565b949350505050565b81544363ffffffff90811691161415610dd357815463ffffffff8216600160201b0267ffffffff0000000019909116178255505050565b60ff83166000908152600360209081526040808320815180830190925263ffffffff438116835285811683850190815282546001810184559286529390942091519101805492518416600160201b0267ffffffffffffffff199093169190931617179055505050565b81544363ffffffff90811691161415610e5b57600182018190556108ea565b60ff93909316600090815260026020818152604080842063ffffffff968716855282528084208151808301909252438716825281830197885280546001808201835591865292909420905191909202909101805463ffffffff1916919094161783559251919092015550565b600080600060408486031215610edc57600080fd5b83359250602084013567ffffffffffffffff80821115610efb57600080fd5b818601915086601f830112610f0f57600080fd5b813581811115610f1e57600080fd5b876020828501011115610f3057600080fd5b6020830194508093505050509250925092565b6020808252825182820181905260009190848201906040850190845b81811015610f8157835163ffffffff1683529284019291840191600101610f5f565b50909695505050505050565b803560ff81168114610f9e57600080fd5b919050565b803563ffffffff81168114610f9e57600080fd5b60008060408385031215610fca57600080fd5b610fd383610f8d565b9150610fe160208401610fa3565b90509250929050565b600060208284031215610ffc57600080fd5b6103c382610f8d565b60008060006060848603121561101a57600080fd5b61102384610f8d565b925061103160208501610fa3565b915061103f60408501610fa3565b90509250925092565b6020808252825182820181905260009190848201906040850190845b81811015610f8157835183529284019291840191600101611064565b6000806040838503121561109357600080fd5b61109c83610f8d565b946020939093013593505050565b6020808252604d908201527f496e64657852656769737472792e6f6e6c795265676973747279436f6f72646960408201527f6e61746f723a2063616c6c6572206973206e6f7420746865207265676973747260608201526c3c9031b7b7b93234b730ba37b960991b608082015260a00190565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b60208082526035908201527f496e64657852656769737472792e72656769737465724f70657261746f723a206040820152741c5d5bdc9d5b48191bd95cc81b9bdd08195e1a5cdd605a1b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b600063ffffffff838116908316818110156111d1576111d161119e565b039392505050565b60006000198214156111ed576111ed61119e565b5060010190565b600063ffffffff8083168185168083038211156112135761121361119e565b01949350505050565b60008282101561122e5761122e61119e565b500390565b6000816112425761124261119e565b50600019019056fea2646970667358221220f167c1173c2fadc03081d6adc0fb43333e24a986b19ef4494e81b67087aa639464736f6c634300080c0033","storage":{"0x0":"0xff"}},"0x9e545e3c0baab3e08cdfd552c960a1050f373042":{"nonce":1,"balance":"0x0","code":"0x6080604052348015600f57600080fd5b506004361060285760003560e01c8063c298557814602d575b600080fd5b600060405190815260200160405180910390f3fea26469706673582212203e4551a42c3a3731dde4a217932f12275531cdf7f6c758d89baf0744bdd5fd5064736f6c634300080c0033","storage":{}},"0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0":{"nonce":1,"balance":"0x0","code":"0x6080604052348015600f57600080fd5b506004361060285760003560e01c8063c298557814602d575b600080fd5b600060405190815260200160405180910390f3fea26469706673582212203e4551a42c3a3731dde4a217932f12275531cdf7f6c758d89baf0744bdd5fd5064736f6c634300080c0033","storage":{}},"0xa0ee7a142d267c1f36714e4a8f75612f20a79720":{"nonce":0,"balance":"0x21e19e0c9bab2400000","code":"0x","storage":{}},"0xa513e6e4b8f2a923d98304ec87f64353c4d5c853":{"nonce":1,"balance":"0x0","code":"0x60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b6100803660046106f1565b610118565b61005b61009336600461070c565b61015f565b3480156100a457600080fd5b506100ad6101d0565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e43660046106f1565b61020b565b3480156100f557600080fd5b506100ad610235565b61010661029b565b61011661011161033a565b610344565b565b610120610368565b6001600160a01b0316336001600160a01b03161415610157576101548160405180602001604052806000815250600061039b565b50565b6101546100fe565b610167610368565b6001600160a01b0316336001600160a01b031614156101c8576101c38383838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506001925061039b915050565b505050565b6101c36100fe565b60006101da610368565b6001600160a01b0316336001600160a01b03161415610200576101fb61033a565b905090565b6102086100fe565b90565b610213610368565b6001600160a01b0316336001600160a01b0316141561015757610154816103c6565b600061023f610368565b6001600160a01b0316336001600160a01b03161415610200576101fb610368565b6060610285838360405180606001604052806027815260200161080b6027913961041a565b9392505050565b6001600160a01b03163b151590565b6102a3610368565b6001600160a01b0316336001600160a01b031614156101165760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b60006101fb6104f7565b3660008037600080366000845af43d6000803e808015610363573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b6103a48361051f565b6000825111806103b15750805b156101c3576103c08383610260565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103ef610368565b604080516001600160a01b03928316815291841660208301520160405180910390a16101548161055f565b60606001600160a01b0384163b6104825760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610331565b600080856001600160a01b03168560405161049d91906107bb565b600060405180830381855af49150503d80600081146104d8576040519150601f19603f3d011682016040523d82523d6000602084013e6104dd565b606091505b50915091506104ed828286610608565b9695505050505050565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61038c565b61052881610641565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6001600160a01b0381166105c45760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b6064820152608401610331565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b60608315610617575081610285565b8251156106275782518084602001fd5b8160405162461bcd60e51b815260040161033191906107d7565b6001600160a01b0381163b6106ae5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610331565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6105e7565b80356001600160a01b03811681146106ec57600080fd5b919050565b60006020828403121561070357600080fd5b610285826106d5565b60008060006040848603121561072157600080fd5b61072a846106d5565b9250602084013567ffffffffffffffff8082111561074757600080fd5b818601915086601f83011261075b57600080fd5b81358181111561076a57600080fd5b87602082850101111561077c57600080fd5b6020830194508093505050509250925092565b60005b838110156107aa578181015183820152602001610792565b838111156103c05750506000910152565b600082516107cd81846020870161078f565b9190910192915050565b60208152600082518060208401526107f681604085016020870161078f565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212202d8aef871a7506c5a3b3c27bcde2c65544a40c9d05e5fba361c75671607f864e64736f6c634300080c0033","storage":{"0x0":"0x1","0x33":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","0x65":"0xe7f1725e7734ce288f8367e1bb143e90bb3f0512","0x66":"0x1e","0x97":"0x0","0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc":"0xb306bf915c4d645ff596e518faf3f9669b97016","0x3c876e28dbfaed463c44c6728600e9707c51030dffb0c7a216bf5ab4af970aa9":"0x0","0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103":"0x5fbdb2315678afecb367f032d93f642f64180aa3"}},"0xa51c1fc2f0d1a1b8494ed1fe312d7c3a78ed91c0":{"nonce":1,"balance":"0x0","code":"0x608060405234801561001057600080fd5b50600436106102275760003560e01c806394f649dd11610130578063c6656702116100b8578063df5cf7231161007c578063df5cf72314610596578063e7a050aa146105bd578063f2fde38b146105d0578063f698da25146105e3578063fabc1cbc146105eb57600080fd5b8063c665670214610520578063cbc2bd6214610533578063cd293f6f14610546578063cf756fdf14610570578063df5b35471461058357600080fd5b8063b43b514b116100ff578063b43b514b146104b1578063b5d8b5b8146104c4578063c3c6b3a9146104d7578063c4623ea1146104fa578063c608c7f31461050d57600080fd5b806394f649dd14610433578063967fc0d2146104545780639b4da03d14610467578063b13442711461048a57600080fd5b80635c975abb116101b35780637ecebe00116101825780637ecebe00146103b3578063886f1195146103d35780638b8aac3c146103e65780638c80d4e51461040f5780638da5cb5b1461042257600080fd5b80635c975abb14610355578063663c1de41461035d578063715018a6146103805780637a7e0d921461038857600080fd5b80634665bcda116101fa5780634665bcda146102a157806348825e94146102e05780634e5a426314610307578063595c6a671461031a5780635ac86ab71461032257600080fd5b806310d67a2f1461022c578063136439dd1461024157806320606b701461025457806332e89ace1461028e575b600080fd5b61023f61023a366004612b4a565b6105fe565b005b61023f61024f366004612b67565b6106ba565b61027b7f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b6040519081526020015b60405180910390f35b61027b61029c366004612c00565b6107f9565b6102c87f000000000000000000000000a513e6e4b8f2a923d98304ec87f64353c4d5c85381565b6040516001600160a01b039091168152602001610285565b61027b7f4337f82d142e41f2a8c10547cd8c859bddb92262a61058e77842e24d9dea922481565b61023f610315366004612ced565b610ae7565b61023f610b1f565b610345610330366004612d26565b609854600160ff9092169190911b9081161490565b6040519015158152602001610285565b60985461027b565b61034561036b366004612b4a565b60d16020526000908152604090205460ff1681565b61023f610be6565b61027b610396366004612d49565b60cd60209081526000928352604080842090915290825290205481565b61027b6103c1366004612b4a565b60ca6020526000908152604090205481565b6097546102c8906001600160a01b031681565b61027b6103f4366004612b4a565b6001600160a01b0316600090815260ce602052604090205490565b61023f61041d366004612d77565b610bfa565b6033546001600160a01b03166102c8565b610446610441366004612b4a565b610c53565b604051610285929190612e2c565b60cb546102c8906001600160a01b031681565b610345610475366004612b4a565b60d36020526000908152604090205460ff1681565b6102c87f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f81565b61027b6104bf366004612fd5565b610dd3565b61023f6104d23660046130f0565b610e20565b6103456104e5366004612b67565b60cf6020526000908152604090205460ff1681565b61023f610508366004613132565b610f94565b61023f61051b366004613183565b610fe8565b61023f61052e366004612b4a565b6110a0565b6102c86105413660046131d6565b6110b1565b610559610554366004612fd5565b6110e9565b604080519215158352602083019190915201610285565b61023f61057e366004613132565b61117d565b61023f610591366004613202565b6112b1565b6102c87f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc981565b61027b6105cb366004612d77565b6114da565b61023f6105de366004612b4a565b6115a3565b61027b611619565b61023f6105f9366004612b67565b611657565b609760009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610651573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610675919061326e565b6001600160a01b0316336001600160a01b0316146106ae5760405162461bcd60e51b81526004016106a59061328b565b60405180910390fd5b6106b7816117b3565b50565b60975460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610702573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061072691906132d5565b6107425760405162461bcd60e51b81526004016106a5906132f2565b609854818116146107bb5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c697479000000000000000060648201526084016106a5565b609881905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b6098546000908190600190811614156108505760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b60448201526064016106a5565b600260655414156108a35760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016106a5565b60026065556001600160a01b038816600090815260d3602052604090205460ff161561094a5760405162461bcd60e51b815260206004820152604a60248201527f53747261746567794d616e616765722e6465706f736974496e746f537472617460448201527f656779576974685369676e61747572653a207468697264207472616e736665726064820152691cc8191a5cd8589b195960b21b608482015260a4016106a5565b428410156109cc5760405162461bcd60e51b815260206004820152604360248201527f53747261746567794d616e616765722e6465706f736974496e746f537472617460448201527f656779576974685369676e61747572653a207369676e617475726520657870696064820152621c995960ea1b608482015260a4016106a5565b6001600160a01b03858116600081815260ca602090815260408083205481517f4337f82d142e41f2a8c10547cd8c859bddb92262a61058e77842e24d9dea922493810193909352908201939093528b84166060820152928a16608084015260a0830189905260c0830182905260e0830187905290916101000160408051601f1981840301815291815281516020928301206001600160a01b038a16600090815260ca9093529082206001850190559150610a84611619565b60405161190160f01b6020820152602281019190915260428101839052606201604051602081830303815290604052805190602001209050610ac78882886118aa565b610ad3888c8c8c611a69565b60016065559b9a5050505050505050505050565b60cb546001600160a01b03163314610b115760405162461bcd60e51b81526004016106a59061333a565b610b1b8282611c38565b5050565b60975460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610b67573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b8b91906132d5565b610ba75760405162461bcd60e51b81526004016106a5906132f2565b600019609881905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b610bee611ca6565b610bf86000611d00565b565b336001600160a01b037f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc91614610c425760405162461bcd60e51b81526004016106a5906133a4565b610c4d838383611d52565b50505050565b6001600160a01b038116600090815260ce60205260408120546060918291908167ffffffffffffffff811115610c8b57610c8b612b90565b604051908082528060200260200182016040528015610cb4578160200160208202803683370190505b50905060005b82811015610d45576001600160a01b038616600090815260cd6020908152604080832060ce9092528220805491929184908110610cf957610cf9613402565b60009182526020808320909101546001600160a01b031683528201929092526040019020548251839083908110610d3257610d32613402565b6020908102919091010152600101610cba565b5060ce6000866001600160a01b03166001600160a01b031681526020019081526020016000208181805480602002602001604051908101604052809291908181526020018280548015610dc157602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610da3575b50505050509150935093505050915091565b80516020808301516040808501516060860151608087015160a08801519351600097610e03979096959101613418565b604051602081830303815290604052805190602001209050919050565b60cb546001600160a01b03163314610e4a5760405162461bcd60e51b81526004016106a59061333a565b8060005b81811015610c4d5760d16000858584818110610e6c57610e6c613402565b9050602002016020810190610e819190612b4a565b6001600160a01b0316815260208101919091526040016000205460ff1615610f8c57600060d16000868685818110610ebb57610ebb613402565b9050602002016020810190610ed09190612b4a565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790557f4074413b4b443e4e58019f2855a8765113358c7c72e39509c6af45fc0f5ba030848483818110610f2b57610f2b613402565b9050602002016020810190610f409190612b4a565b6040516001600160a01b03909116815260200160405180910390a1610f8c848483818110610f7057610f70613402565b9050602002016020810190610f859190612b4a565b6000611c38565b600101610e4e565b336001600160a01b037f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc91614610fdc5760405162461bcd60e51b81526004016106a5906133a4565b610c4d84848484611eae565b336001600160a01b037f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc916146110305760405162461bcd60e51b81526004016106a5906133a4565b604051636ce5768960e11b81526001600160a01b03858116600483015282811660248301526044820184905284169063d9caed1290606401600060405180830381600087803b15801561108257600080fd5b505af1158015611096573d6000803e3d6000fd5b5050505050505050565b6110a8611ca6565b6106b78161213b565b60ce60205281600052604060002081815481106110cd57600080fd5b6000918252602090912001546001600160a01b03169150829050565b600080336001600160a01b037f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc916146111345760405162461bcd60e51b81526004016106a5906133a4565b600061113f84610dd3565b600081815260cf60205260408120549192509060ff16156111745750600081815260cf60205260409020805460ff1916905560015b92509050915091565b600054610100900460ff161580801561119d5750600054600160ff909116105b806111b75750303b1580156111b7575060005460ff166001145b61121a5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016106a5565b6000805460ff19166001179055801561123d576000805461ff0019166101001790555b6112456121a4565b60c955611252838361223b565b61125b85611d00565b6112648461213b565b80156112aa576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b60cb546001600160a01b031633146112db5760405162461bcd60e51b81526004016106a59061333a565b8281146113645760405162461bcd60e51b815260206004820152604b60248201527f53747261746567794d616e616765722e61646453747261746567696573546f4460448201527f65706f73697457686974656c6973743a206172726179206c656e67746873206460648201526a0de40dcdee840dac2e8c6d60ab1b608482015260a4016106a5565b8260005b818110156114d25760d1600087878481811061138657611386613402565b905060200201602081019061139b9190612b4a565b6001600160a01b0316815260208101919091526040016000205460ff166114ca57600160d160008888858181106113d4576113d4613402565b90506020020160208101906113e99190612b4a565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790557f0c35b17d91c96eb2751cd456e1252f42a386e524ef9ff26ecc9950859fdc04fe86868381811061144457611444613402565b90506020020160208101906114599190612b4a565b6040516001600160a01b03909116815260200160405180910390a16114ca86868381811061148957611489613402565b905060200201602081019061149e9190612b4a565b8585848181106114b0576114b0613402565b90506020020160208101906114c59190613491565b611c38565b600101611368565b505050505050565b6098546000908190600190811614156115315760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b60448201526064016106a5565b600260655414156115845760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016106a5565b600260655561159533868686611a69565b600160655595945050505050565b6115ab611ca6565b6001600160a01b0381166116105760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016106a5565b6106b781611d00565b60007f0000000000000000000000000000000000000000000000000000000000007a6946141561164a575060c95490565b6116526121a4565b905090565b609760009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156116aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116ce919061326e565b6001600160a01b0316336001600160a01b0316146116fe5760405162461bcd60e51b81526004016106a59061328b565b60985419811960985419161461177c5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c697479000000000000000060648201526084016106a5565b609881905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c906020016107ee565b6001600160a01b0381166118415760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a4016106a5565b609754604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1609780546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383163b156119c957604051630b135d3f60e11b808252906001600160a01b03851690631626ba7e906118ea9086908690600401613506565b602060405180830381865afa158015611907573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061192b919061351f565b6001600160e01b031916146119c45760405162461bcd60e51b815260206004820152605360248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a2045524331323731207369676e6174757265206064820152721d995c9a599a58d85d1a5bdb8819985a5b1959606a1b608482015260a4016106a5565b505050565b826001600160a01b03166119dd8383612321565b6001600160a01b0316146119c45760405162461bcd60e51b815260206004820152604760248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a207369676e6174757265206e6f742066726f6d6064820152661039b4b3b732b960c91b608482015260a4016106a5565b6001600160a01b038316600090815260d16020526040812054849060ff16611b0f5760405162461bcd60e51b815260206004820152604d60248201527f53747261746567794d616e616765722e6f6e6c7953747261746567696573576860448201527f6974656c6973746564466f724465706f7369743a207374726174656779206e6f60648201526c1d081dda1a5d195b1a5cdd1959609a1b608482015260a4016106a5565b611b246001600160a01b038516338786612345565b6040516311f9fbc960e21b81526001600160a01b038581166004830152602482018590528616906347e7ef24906044016020604051808303816000875af1158015611b73573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b979190613549565b9150611ba586858785611eae565b604051631452b9d760e11b81526001600160a01b0387811660048301528681166024830152604482018490527f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc916906328a573ae90606401600060405180830381600087803b158015611c1757600080fd5b505af1158015611c2b573d6000803e3d6000fd5b5050505050949350505050565b604080516001600160a01b038416815282151560208201527f77d930df4937793473a95024d87a98fd2ccb9e92d3c2463b3dacd65d3e6a5786910160405180910390a16001600160a01b0391909116600090815260d360205260409020805460ff1916911515919091179055565b6033546001600160a01b03163314610bf85760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106a5565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600081611dc75760405162461bcd60e51b815260206004820152603e60248201527f53747261746567794d616e616765722e5f72656d6f76655368617265733a207360448201527f68617265416d6f756e742073686f756c64206e6f74206265207a65726f21000060648201526084016106a5565b6001600160a01b03808516600090815260cd602090815260408083209387168352929052205480831115611e595760405162461bcd60e51b815260206004820152603360248201527f53747261746567794d616e616765722e5f72656d6f76655368617265733a20736044820152720d0c2e4ca82dadeeadce840e8dede40d0d2ced606b1b60648201526084016106a5565b6001600160a01b03808616600090815260cd602090815260408083209388168352929052208382039081905590831415611ea157611e97858561239f565b6001915050611ea7565b60009150505b9392505050565b6001600160a01b038416611f2a5760405162461bcd60e51b815260206004820152603960248201527f53747261746567794d616e616765722e5f6164645368617265733a207374616b60448201527f65722063616e6e6f74206265207a65726f20616464726573730000000000000060648201526084016106a5565b80611f965760405162461bcd60e51b815260206004820152603660248201527f53747261746567794d616e616765722e5f6164645368617265733a207368617260448201527565732073686f756c64206e6f74206265207a65726f2160501b60648201526084016106a5565b6001600160a01b03808516600090815260cd60209081526040808320938616835292905220546120a7576001600160a01b038416600090815260ce6020908152604090912054106120685760405162461bcd60e51b815260206004820152605060248201527f53747261746567794d616e616765722e5f6164645368617265733a206465706f60448201527f73697420776f756c6420657863656564204d41585f5354414b45525f5354524160648201526f0a88a8eb2be9892a6a8be988a9c8ea8960831b608482015260a4016106a5565b6001600160a01b03848116600090815260ce602090815260408220805460018101825590835291200180546001600160a01b0319169184169190911790555b6001600160a01b03808516600090815260cd60209081526040808320938616835292905290812080548392906120de908490613578565b9091555050604080516001600160a01b03868116825285811660208301528416818301526060810183905290517f7cfff908a4b583f36430b25d75964c458d8ede8a99bd61be750e97ee1b2f3a969181900360800190a150505050565b60cb54604080516001600160a01b03928316815291831660208301527f4264275e593955ff9d6146a51a4525f6ddace2e81db9391abcc9d1ca48047d29910160405180910390a160cb80546001600160a01b0319166001600160a01b0392909216919091179055565b604080518082018252600a81526922b4b3b2b72630bcb2b960b11b60209182015281517f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866818301527f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea81840152466060820152306080808301919091528351808303909101815260a0909101909252815191012090565b6097546001600160a01b031615801561225c57506001600160a01b03821615155b6122de5760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a4016106a5565b609881905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2610b1b826117b3565b60008060006123308585612591565b9150915061233d81612601565b509392505050565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b179052610c4d9085906127bc565b6001600160a01b038216600090815260ce6020526040812054905b818110156124ba576001600160a01b03848116600090815260ce60205260409020805491851691839081106123f1576123f1613402565b6000918252602090912001546001600160a01b031614156124b2576001600160a01b038416600090815260ce60205260409020805461243290600190613590565b8154811061244257612442613402565b60009182526020808320909101546001600160a01b03878116845260ce909252604090922080549190921691908390811061247f5761247f613402565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055506124ba565b6001016123ba565b818114156125425760405162461bcd60e51b815260206004820152604960248201527f53747261746567794d616e616765722e5f72656d6f766553747261746567794660448201527f726f6d5374616b657253747261746567794c6973743a207374726174656779206064820152681b9bdd08199bdd5b9960ba1b608482015260a4016106a5565b6001600160a01b038416600090815260ce60205260409020805480612569576125696135a7565b600082815260209020810160001990810180546001600160a01b031916905501905550505050565b6000808251604114156125c85760208301516040840151606085015160001a6125bc8782858561288e565b945094505050506125fa565b8251604014156125f257602083015160408401516125e786838361297b565b9350935050506125fa565b506000905060025b9250929050565b6000816004811115612615576126156135bd565b141561261e5750565b6001816004811115612632576126326135bd565b14156126805760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e6174757265000000000000000060448201526064016106a5565b6002816004811115612694576126946135bd565b14156126e25760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e6774680060448201526064016106a5565b60038160048111156126f6576126f66135bd565b141561274f5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b60648201526084016106a5565b6004816004811115612763576127636135bd565b14156106b75760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b60648201526084016106a5565b6000612811826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166129b49092919063ffffffff16565b8051909150156119c4578080602001905181019061282f91906132d5565b6119c45760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016106a5565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156128c55750600090506003612972565b8460ff16601b141580156128dd57508460ff16601c14155b156128ee5750600090506004612972565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015612942573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661296b57600060019250925050612972565b9150600090505b94509492505050565b6000806001600160ff1b0383168161299860ff86901c601b613578565b90506129a68782888561288e565b935093505050935093915050565b60606129c384846000856129cb565b949350505050565b606082471015612a2c5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016106a5565b6001600160a01b0385163b612a835760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016106a5565b600080866001600160a01b03168587604051612a9f91906135d3565b60006040518083038185875af1925050503d8060008114612adc576040519150601f19603f3d011682016040523d82523d6000602084013e612ae1565b606091505b5091509150612af1828286612afc565b979650505050505050565b60608315612b0b575081611ea7565b825115612b1b5782518084602001fd5b8160405162461bcd60e51b81526004016106a591906135ef565b6001600160a01b03811681146106b757600080fd5b600060208284031215612b5c57600080fd5b8135611ea781612b35565b600060208284031215612b7957600080fd5b5035919050565b8035612b8b81612b35565b919050565b634e487b7160e01b600052604160045260246000fd5b60405160c0810167ffffffffffffffff81118282101715612bc957612bc9612b90565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715612bf857612bf8612b90565b604052919050565b60008060008060008060c08789031215612c1957600080fd5b8635612c2481612b35565b9550602087810135612c3581612b35565b9550604088013594506060880135612c4c81612b35565b93506080880135925060a088013567ffffffffffffffff80821115612c7057600080fd5b818a0191508a601f830112612c8457600080fd5b813581811115612c9657612c96612b90565b612ca8601f8201601f19168501612bcf565b91508082528b84828501011115612cbe57600080fd5b80848401858401376000848284010152508093505050509295509295509295565b80151581146106b757600080fd5b60008060408385031215612d0057600080fd5b8235612d0b81612b35565b91506020830135612d1b81612cdf565b809150509250929050565b600060208284031215612d3857600080fd5b813560ff81168114611ea757600080fd5b60008060408385031215612d5c57600080fd5b8235612d6781612b35565b91506020830135612d1b81612b35565b600080600060608486031215612d8c57600080fd5b8335612d9781612b35565b92506020840135612da781612b35565b929592945050506040919091013590565b600081518084526020808501945080840160005b83811015612df15781516001600160a01b031687529582019590820190600101612dcc565b509495945050505050565b600081518084526020808501945080840160005b83811015612df157815187529582019590820190600101612e10565b604081526000612e3f6040830185612db8565b8281036020840152612e518185612dfc565b95945050505050565b600067ffffffffffffffff821115612e7457612e74612b90565b5060051b60200190565b600082601f830112612e8f57600080fd5b81356020612ea4612e9f83612e5a565b612bcf565b82815260059290921b84018101918181019086841115612ec357600080fd5b8286015b84811015612ee7578035612eda81612b35565b8352918301918301612ec7565b509695505050505050565b600082601f830112612f0357600080fd5b81356020612f13612e9f83612e5a565b82815260059290921b84018101918181019086841115612f3257600080fd5b8286015b84811015612ee75780358352918301918301612f36565b600060408284031215612f5f57600080fd5b6040516040810181811067ffffffffffffffff82111715612f8257612f82612b90565b6040529050808235612f9381612b35565b815260208301356bffffffffffffffffffffffff81168114612fb457600080fd5b6020919091015292915050565b803563ffffffff81168114612b8b57600080fd5b600060208284031215612fe757600080fd5b813567ffffffffffffffff80821115612fff57600080fd5b9083019060e0828603121561301357600080fd5b61301b612ba6565b82358281111561302a57600080fd5b61303687828601612e7e565b82525060208301358281111561304b57600080fd5b61305787828601612ef2565b60208301525061306960408401612b80565b604082015261307b8660608501612f4d565b606082015261308c60a08401612fc1565b608082015261309d60c08401612b80565b60a082015295945050505050565b60008083601f8401126130bd57600080fd5b50813567ffffffffffffffff8111156130d557600080fd5b6020830191508360208260051b85010111156125fa57600080fd5b6000806020838503121561310357600080fd5b823567ffffffffffffffff81111561311a57600080fd5b613126858286016130ab565b90969095509350505050565b6000806000806080858703121561314857600080fd5b843561315381612b35565b9350602085013561316381612b35565b9250604085013561317381612b35565b9396929550929360600135925050565b6000806000806080858703121561319957600080fd5b84356131a481612b35565b935060208501356131b481612b35565b92506040850135915060608501356131cb81612b35565b939692955090935050565b600080604083850312156131e957600080fd5b82356131f481612b35565b946020939093013593505050565b6000806000806040858703121561321857600080fd5b843567ffffffffffffffff8082111561323057600080fd5b61323c888389016130ab565b9096509450602087013591508082111561325557600080fd5b50613262878288016130ab565b95989497509550505050565b60006020828403121561328057600080fd5b8151611ea781612b35565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b6000602082840312156132e757600080fd5b8151611ea781612cdf565b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b60208082526044908201527f53747261746567794d616e616765722e6f6e6c7953747261746567795768697460408201527f656c69737465723a206e6f742074686520737472617465677957686974656c6960608201526339ba32b960e11b608082015260a00190565b602080825260409082018190527f53747261746567794d616e616765722e6f6e6c7944656c65676174696f6e4d61908201527f6e616765723a206e6f74207468652044656c65676174696f6e4d616e61676572606082015260800190565b634e487b7160e01b600052603260045260246000fd5b60e08152600061342b60e0830189612db8565b828103602084015261343d8189612dfc565b6001600160a01b0397881660408501528651881660608501526020909601516bffffffffffffffffffffffff166080840152505063ffffffff9290921660a083015290921660c09092019190915292915050565b6000602082840312156134a357600080fd5b8135611ea781612cdf565b60005b838110156134c95781810151838201526020016134b1565b83811115610c4d5750506000910152565b600081518084526134f28160208601602086016134ae565b601f01601f19169290920160200192915050565b8281526040602082015260006129c360408301846134da565b60006020828403121561353157600080fd5b81516001600160e01b031981168114611ea757600080fd5b60006020828403121561355b57600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b6000821982111561358b5761358b613562565b500190565b6000828210156135a2576135a2613562565b500390565b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052602160045260246000fd5b600082516135e58184602087016134ae565b9190910192915050565b602081526000611ea760208301846134da56fea264697066735822122060f2550b039c3491d4eaf0229131ce22858686cdf96c07928dc0e113d756d35e64736f6c634300080c0033","storage":{"0x0":"0xff"}},"0xa82ff9afd8f496c3d6ac40e2a0f282e47488cfc9":{"nonce":1,"balance":"0x0","code":"0x60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b6100803660046106f1565b610118565b61005b61009336600461070c565b61015f565b3480156100a457600080fd5b506100ad6101d0565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e43660046106f1565b61020b565b3480156100f557600080fd5b506100ad610235565b61010661029b565b61011661011161033a565b610344565b565b610120610368565b6001600160a01b0316336001600160a01b03161415610157576101548160405180602001604052806000815250600061039b565b50565b6101546100fe565b610167610368565b6001600160a01b0316336001600160a01b031614156101c8576101c38383838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506001925061039b915050565b505050565b6101c36100fe565b60006101da610368565b6001600160a01b0316336001600160a01b03161415610200576101fb61033a565b905090565b6102086100fe565b90565b610213610368565b6001600160a01b0316336001600160a01b0316141561015757610154816103c6565b600061023f610368565b6001600160a01b0316336001600160a01b03161415610200576101fb610368565b6060610285838360405180606001604052806027815260200161080b6027913961041a565b9392505050565b6001600160a01b03163b151590565b6102a3610368565b6001600160a01b0316336001600160a01b031614156101165760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b60006101fb6104f7565b3660008037600080366000845af43d6000803e808015610363573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b6103a48361051f565b6000825111806103b15750805b156101c3576103c08383610260565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103ef610368565b604080516001600160a01b03928316815291841660208301520160405180910390a16101548161055f565b60606001600160a01b0384163b6104825760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610331565b600080856001600160a01b03168560405161049d91906107bb565b600060405180830381855af49150503d80600081146104d8576040519150601f19603f3d011682016040523d82523d6000602084013e6104dd565b606091505b50915091506104ed828286610608565b9695505050505050565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61038c565b61052881610641565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6001600160a01b0381166105c45760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b6064820152608401610331565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b60608315610617575081610285565b8251156106275782518084602001fd5b8160405162461bcd60e51b815260040161033191906107d7565b6001600160a01b0381163b6106ae5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610331565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6105e7565b80356001600160a01b03811681146106ec57600080fd5b919050565b60006020828403121561070357600080fd5b610285826106d5565b60008060006040848603121561072157600080fd5b61072a846106d5565b9250602084013567ffffffffffffffff8082111561074757600080fd5b818601915086601f83011261075b57600080fd5b81358181111561076a57600080fd5b87602082850101111561077c57600080fd5b6020830194508093505050509250925092565b60005b838110156107aa578181015183820152602001610792565b838111156103c05750506000910152565b600082516107cd81846020870161078f565b9190910192915050565b60208152600082518060208401526107f681604085016020870161078f565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212202d8aef871a7506c5a3b3c27bcde2c65544a40c9d05e5fba361c75671607f864e64736f6c634300080c0033","storage":{"0x0":"0x1","0x33":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc":"0x4c5859f0f772848b2d91f1d83e2fe57935348029","0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103":"0xc3e53f4d16ae77db1c982e75a937b9f60fe63690"}},"0xb7f8bc63bbcad18155201308c8f3540b07f84f5e":{"nonce":1,"balance":"0x0","code":"0x608060405234801561001057600080fd5b50600436106103785760003560e01c806360d7faed116101d3578063b7f06ebe11610104578063cf80873e116100a2578063f16172b01161007c578063f16172b01461097d578063f2fde38b14610990578063f698da25146109a3578063fabc1cbc146109ab57600080fd5b8063cf80873e14610936578063da8be86414610957578063eea9064b1461096a57600080fd5b8063c488375a116100de578063c488375a14610853578063c5e480db14610873578063c94b511114610919578063ca661c041461092c57600080fd5b8063b7f06ebe146107f9578063bb45fef21461081c578063c448feb81461084a57600080fd5b8063886f1195116101715780639104c3191161014b5780639104c3191461078457806399be81c81461079f578063a1788484146107b2578063b1344271146107d257600080fd5b8063886f1195146107405780638da5cb5b14610753578063900413471461076457600080fd5b80636d70f7ae116101ad5780636d70f7ae146106e7578063715018a6146106fa578063778e55f3146107025780637f5480711461072d57600080fd5b806360d7faed14610698578063635bbd10146106ab57806365da1264146106be57600080fd5b806329c77d4f116102ad5780634fc40b611161024b5780635ac86ab7116102255780635ac86ab71461062e5780635c975abb146106515780635cfe8d2c146106595780635f966f141461066c57600080fd5b80634fc40b6114610609578063595c6a6714610613578063597b36da1461061b57600080fd5b80633cdeb5e0116102875780633cdeb5e0146105695780633e28391d1461059857806343377382146105bb5780634665bcda146105e257600080fd5b806329c77d4f146104f7578063334043961461051757806339b70e381461052a57600080fd5b8063136439dd1161031a5780631bbce091116102f45780631bbce0911461049757806320606b70146104aa57806322bf40e4146104d157806328a573ae146104e457600080fd5b8063136439dd146104385780631522bf021461044b578063169283651461045e57600080fd5b80630dd8dd02116103565780630dd8dd02146103dd5780630f589e59146103fd57806310d67a2f14610412578063132d49671461042557600080fd5b80630449ca391461037d57806304a4f979146103a35780630b9f487a146103ca575b600080fd5b61039061038b366004614adb565b6109be565b6040519081526020015b60405180910390f35b6103907f14bde674c9f64b2ad00eaaee4a8bed1fabef35c7507e3c5b9cfc9436909a2dad81565b6103906103d8366004614b41565b610a43565b6103f06103eb366004614adb565b610b05565b60405161039a9190614b9c565b61041061040b366004614c39565b610e6e565b005b610410610420366004614c8c565b610fbe565b610410610433366004614cb0565b611071565b610410610446366004614cf1565b611128565b610410610459366004614d0a565b611267565b61039061046c366004614c8c565b6001600160a01b0316600090815260996020526040902060010154600160a01b900463ffffffff1690565b6103906104a5366004614cb0565b61127b565b6103907f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b6104106104df366004614d75565b6112a9565b6104106104f2366004614cb0565b6113ed565b610390610505366004614c8c565b609b6020526000908152604090205481565b610410610525366004614e1c565b61149d565b6105517f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c981565b6040516001600160a01b03909116815260200161039a565b610551610577366004614c8c565b6001600160a01b039081166000908152609960205260409020600101541690565b6105ab6105a6366004614c8c565b6115da565b604051901515815260200161039a565b6103907f39111bc4a4d688e1f685123d7497d4615370152a8ee4a0593e647bd06ad8bb0b81565b6105517f000000000000000000000000a513e6e4b8f2a923d98304ec87f64353c4d5c85381565b6103906213c68081565b6104106115fa565b61039061062936600461513b565b6116c1565b6105ab61063c366004615177565b606654600160ff9092169190911b9081161490565b606654610390565b6104106106673660046151ed565b6116f1565b61055161067a366004614c8c565b6001600160a01b039081166000908152609960205260409020541690565b6104106106a636600461534d565b61199c565b6104106106b9366004614cf1565b611a37565b6105516106cc366004614c8c565b609a602052600090815260409020546001600160a01b031681565b6105ab6106f5366004614c8c565b611a48565b610410611a68565b6103906107103660046153dc565b609860209081526000928352604080842090915290825290205481565b61041061073b3660046154bd565b611a7c565b606554610551906001600160a01b031681565b6033546001600160a01b0316610551565b61077761077236600461554d565b611b81565b60405161039a91906155d7565b61055173beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac081565b6104106107ad3660046155ea565b611c5b565b6103906107c0366004614c8c565b609f6020526000908152604090205481565b6105517f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f81565b6105ab610807366004614cf1565b609e6020526000908152604090205460ff1681565b6105ab61082a36600461561f565b609c60209081526000928352604080842090915290825290205460ff1681565b610390609d5481565b610390610861366004614c8c565b60a16020526000908152604090205481565b6108e3610881366004614c8c565b6040805160608082018352600080835260208084018290529284018190526001600160a01b03948516815260998352839020835191820184528054851682526001015493841691810191909152600160a01b90920463ffffffff169082015290565b6040805182516001600160a01b039081168252602080850151909116908201529181015163ffffffff169082015260600161039a565b61039061092736600461564b565b611d2d565b61039062034bc081565b610949610944366004614c8c565b611de6565b60405161039a9291906156cc565b6103f0610965366004614c8c565b61219e565b6104106109783660046156f1565b612662565b61041061098b366004615749565b61266e565b61041061099e366004614c8c565b6126ff565b610390612775565b6104106109b9366004614cf1565b6127b3565b609d54600090815b83811015610a3b57600060a160008787858181106109e6576109e6615765565b90506020020160208101906109fb9190614c8c565b6001600160a01b03166001600160a01b0316815260200190815260200160002054905082811115610a2a578092505b50610a3481615791565b90506109c6565b509392505050565b604080517f14bde674c9f64b2ad00eaaee4a8bed1fabef35c7507e3c5b9cfc9436909a2dad6020808301919091526001600160a01b038681168385015288811660608401528716608083015260a0820185905260c08083018590528351808403909101815260e0909201909252805191012060009081610ac1612775565b60405161190160f01b602082015260228101919091526042810183905260620160408051808303601f19018152919052805160209091012098975050505050505050565b60665460609060019060029081161415610b3a5760405162461bcd60e51b8152600401610b31906157ac565b60405180910390fd5b6000836001600160401b03811115610b5457610b54614ebe565b604051908082528060200260200182016040528015610b7d578160200160208202803683370190505b50336000908152609a60205260408120549192506001600160a01b03909116905b85811015610e6357868682818110610bb857610bb8615765565b9050602002810190610bca91906157e3565b610bd8906020810190615803565b9050878783818110610bec57610bec615765565b9050602002810190610bfe91906157e3565b610c089080615803565b905014610c7d5760405162461bcd60e51b815260206004820152603860248201527f44656c65676174696f6e4d616e616765722e717565756557697468647261776160448201527f6c3a20696e707574206c656e677468206d69736d6174636800000000000000006064820152608401610b31565b33878783818110610c9057610c90615765565b9050602002810190610ca291906157e3565b610cb3906060810190604001614c8c565b6001600160a01b031614610d2f5760405162461bcd60e51b815260206004820152603c60248201527f44656c65676174696f6e4d616e616765722e717565756557697468647261776160448201527f6c3a2077697468647261776572206d757374206265207374616b6572000000006064820152608401610b31565b610e343383898985818110610d4657610d46615765565b9050602002810190610d5891906157e3565b610d69906060810190604001614c8c565b8a8a86818110610d7b57610d7b615765565b9050602002810190610d8d91906157e3565b610d979080615803565b808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508e92508d9150889050818110610ddd57610ddd615765565b9050602002810190610def91906157e3565b610dfd906020810190615803565b8080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061290f92505050565b838281518110610e4657610e46615765565b602090810291909101015280610e5b81615791565b915050610b9e565b509095945050505050565b336000908152609960205260409020546001600160a01b031615610f085760405162461bcd60e51b815260206004820152604560248201527f44656c65676174696f6e4d616e616765722e726567697374657241734f70657260448201527f61746f723a206f70657261746f722068617320616c72656164792072656769736064820152641d195c995960da1b608482015260a401610b31565b610f123384612ecf565b604080518082019091526060815260006020820152610f34338083600061316b565b336001600160a01b03167f8e8485583a2310d41f7c82b9427d0bd49bad74bb9cff9d3402a29d8f9b28a0e285604051610f6d919061584c565b60405180910390a2336001600160a01b03167f02a919ed0e2acad1dd90f17ef2fa4ae5462ee1339170034a8531cca4b67080908484604051610fb092919061589e565b60405180910390a250505050565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611011573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061103591906158cd565b6001600160a01b0316336001600160a01b0316146110655760405162461bcd60e51b8152600401610b31906158ea565b61106e81613510565b50565b336001600160a01b037f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c91614806110d05750336001600160a01b037f000000000000000000000000a513e6e4b8f2a923d98304ec87f64353c4d5c85316145b6110ec5760405162461bcd60e51b8152600401610b3190615934565b6110f5836115da565b15611123576001600160a01b038084166000908152609a60205260409020541661112181858585613607565b505b505050565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015611170573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111949190615991565b6111b05760405162461bcd60e51b8152600401610b31906159ae565b606654818116146112295760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608401610b31565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b61126f613682565b611121848484846136dc565b6001600160a01b0383166000908152609b60205260408120546112a085828686611d2d565b95945050505050565b600054610100900460ff16158080156112c95750600054600160ff909116105b806112e35750303b1580156112e3575060005460ff166001145b6113465760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610b31565b6000805460ff191660011790558015611369576000805461ff0019166101001790555b6113738888613902565b61137b6139e8565b60975561138789613a7f565b61139086613ad1565b61139c858585856136dc565b80156113e2576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050505050565b336001600160a01b037f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c916148061144c5750336001600160a01b037f000000000000000000000000a513e6e4b8f2a923d98304ec87f64353c4d5c85316145b6114685760405162461bcd60e51b8152600401610b3190615934565b611471836115da565b15611123576001600160a01b038084166000908152609a60205260409020541661112181858585613bcb565b606654600290600490811614156114c65760405162461bcd60e51b8152600401610b31906157ac565b600260c95414156115195760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610b31565b600260c95560005b888110156115c9576115b98a8a8381811061153e5761153e615765565b905060200281019061155091906159f6565b89898481811061156257611562615765565b90506020028101906115749190615803565b89898681811061158657611586615765565b9050602002013588888781811061159f5761159f615765565b90506020020160208101906115b49190615a0c565b613c46565b6115c281615791565b9050611521565b5050600160c9555050505050505050565b6001600160a01b039081166000908152609a602052604090205416151590565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015611642573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116669190615991565b6116825760405162461bcd60e51b8152600401610b31906159ae565b600019606681905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b6000816040516020016116d49190615a9d565b604051602081830303815290604052805190602001209050919050565b60005b815181101561199857600082828151811061171157611711615765565b602002602001015190506000807f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c96001600160a01b031663cd293f6f846040518263ffffffff1660e01b815260040161176a9190615ab0565b60408051808303816000875af1158015611788573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117ac9190615b5c565b91509150811561198a576040808401516001600160a01b0381166000908152609f602052918220805491928291906117e383615791565b919050555060006040518060e00160405280846001600160a01b031681526020018760a001516001600160a01b031681526020018760600151600001516001600160a01b03168152602001838152602001876080015163ffffffff16815260200187600001518152602001876020015181525090506000611863826116c1565b6000818152609e602052604090205490915060ff16156118f95760405162461bcd60e51b815260206004820152604560248201527f44656c65676174696f6e4d616e616765722e6d6967726174655175657565645760448201527f69746864726177616c733a207769746864726177616c20616c72656164792065606482015264786973747360d81b608482015260a401610b31565b6000818152609e602052604090819020805460ff19166001179055517f9009ab153e8014fbfb02f2217f5cde7aa7f9ad734ae85ca3ee3f4ca2fdd499f9906119449083908590615b8a565b60405180910390a160408051868152602081018390527fdc00758b65eef71dc3780c04ebe36cab6bdb266c3a698187e29e0f0dca012630910160405180910390a1505050505b8360010193505050506116f4565b5050565b606654600290600490811614156119c55760405162461bcd60e51b8152600401610b31906157ac565b600260c9541415611a185760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610b31565b600260c955611a2a8686868686613c46565b5050600160c95550505050565b611a3f613682565b61106e81613ad1565b6001600160a01b0390811660009081526099602052604090205416151590565b611a70613682565b611a7a6000613a7f565b565b4283602001511015611b005760405162461bcd60e51b815260206004820152604160248201527f44656c65676174696f6e4d616e616765722e64656c6567617465546f4279536960448201527f676e61747572653a207374616b6572207369676e6174757265206578706972656064820152601960fa1b608482015260a401610b31565b6000609b6000876001600160a01b03166001600160a01b031681526020019081526020016000205490506000611b3c8783888860200151611d2d565b6001600160a01b0388166000908152609b602052604090206001840190558551909150611b6c9088908390614430565b611b788787868661316b565b50505050505050565b6060600082516001600160401b03811115611b9e57611b9e614ebe565b604051908082528060200260200182016040528015611bc7578160200160208202803683370190505b50905060005b8351811015610a3b576001600160a01b03851660009081526098602052604081208551909190869084908110611c0557611c05615765565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002054828281518110611c4057611c40615765565b6020908102919091010152611c5481615791565b9050611bcd565b611c6433611a48565b611ce65760405162461bcd60e51b815260206004820152604760248201527f44656c65676174696f6e4d616e616765722e7570646174654f70657261746f7260448201527f4d657461646174615552493a2063616c6c6572206d75737420626520616e206f6064820152663832b930ba37b960c91b608482015260a401610b31565b336001600160a01b03167f02a919ed0e2acad1dd90f17ef2fa4ae5462ee1339170034a8531cca4b67080908383604051611d2192919061589e565b60405180910390a25050565b604080517f39111bc4a4d688e1f685123d7497d4615370152a8ee4a0593e647bd06ad8bb0b6020808301919091526001600160a01b0387811683850152851660608301526080820186905260a08083018590528351808403909101815260c0909201909252805191012060009081611da3612775565b60405161190160f01b602082015260228101919091526042810183905260620160408051808303601f190181529190528051602090910120979650505050505050565b6040516360f4062b60e01b81526001600160a01b03828116600483015260609182916000917f000000000000000000000000a513e6e4b8f2a923d98304ec87f64353c4d5c853909116906360f4062b90602401602060405180830381865afa158015611e56573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e7a9190615ba3565b6040516394f649dd60e01b81526001600160a01b03868116600483015291925060009182917f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c9909116906394f649dd90602401600060405180830381865afa158015611eea573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611f129190810190615c17565b9150915060008313611f2957909590945092505050565b606080835160001415611fe3576040805160018082528183019092529060208083019080368337505060408051600180825281830190925292945090506020808301908036833701905050905073beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac082600081518110611f9e57611f9e615765565b60200260200101906001600160a01b031690816001600160a01b0316815250508481600081518110611fd257611fd2615765565b602002602001018181525050612191565b8351611ff0906001615cd1565b6001600160401b0381111561200757612007614ebe565b604051908082528060200260200182016040528015612030578160200160208202803683370190505b50915081516001600160401b0381111561204c5761204c614ebe565b604051908082528060200260200182016040528015612075578160200160208202803683370190505b50905060005b845181101561210f5784818151811061209657612096615765565b60200260200101518382815181106120b0576120b0615765565b60200260200101906001600160a01b031690816001600160a01b0316815250508381815181106120e2576120e2615765565b60200260200101518282815181106120fc576120fc615765565b602090810291909101015260010161207b565b5073beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac082600184516121349190615ce9565b8151811061214457612144615765565b60200260200101906001600160a01b031690816001600160a01b0316815250508481600184516121749190615ce9565b8151811061218457612184615765565b6020026020010181815250505b9097909650945050505050565b606654606090600190600290811614156121ca5760405162461bcd60e51b8152600401610b31906157ac565b6121d3836115da565b6122535760405162461bcd60e51b8152602060048201526044602482018190527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a207374908201527f616b6572206d7573742062652064656c65676174656420746f20756e64656c656064820152636761746560e01b608482015260a401610b31565b61225c83611a48565b156122cf5760405162461bcd60e51b815260206004820152603d60248201527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a206f7060448201527f657261746f72732063616e6e6f7420626520756e64656c6567617465640000006064820152608401610b31565b6001600160a01b03831661234b5760405162461bcd60e51b815260206004820152603c60248201527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a20636160448201527f6e6e6f7420756e64656c6567617465207a65726f2061646472657373000000006064820152608401610b31565b6001600160a01b038084166000818152609a60205260409020549091169033148061237e5750336001600160a01b038216145b806123a557506001600160a01b038181166000908152609960205260409020600101541633145b6124175760405162461bcd60e51b815260206004820152603d60248201527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a20636160448201527f6c6c65722063616e6e6f7420756e64656c6567617465207374616b65720000006064820152608401610b31565b60008061242386611de6565b9092509050336001600160a01b0387161461247957826001600160a01b0316866001600160a01b03167ff0eddf07e6ea14f388b47e1e94a0f464ecbd9eed4171130e0fc0e99fb4030a8a60405160405180910390a35b826001600160a01b0316866001600160a01b03167ffee30966a256b71e14bc0ebfc94315e28ef4a97a7131a9e2b7a310a73af4467660405160405180910390a36001600160a01b0386166000908152609a6020526040902080546001600160a01b031916905581516124fb576040805160008152602081019091529450612659565b81516001600160401b0381111561251457612514614ebe565b60405190808252806020026020018201604052801561253d578160200160208202803683370190505b50945060005b8251811015612657576040805160018082528183019092526000916020808301908036833750506040805160018082528183019092529293506000929150602080830190803683370190505090508483815181106125a3576125a3615765565b6020026020010151826000815181106125be576125be615765565b60200260200101906001600160a01b031690816001600160a01b0316815250508383815181106125f0576125f0615765565b60200260200101518160008151811061260b5761260b615765565b60200260200101818152505061262489878b858561290f565b88848151811061263657612636615765565b6020026020010181815250505050808061264f90615791565b915050612543565b505b50505050919050565b6111233384848461316b565b61267733611a48565b6126f55760405162461bcd60e51b815260206004820152604360248201527f44656c65676174696f6e4d616e616765722e6d6f646966794f70657261746f7260448201527f44657461696c733a2063616c6c6572206d75737420626520616e206f706572616064820152623a37b960e91b608482015260a401610b31565b61106e3382612ecf565b612707613682565b6001600160a01b03811661276c5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610b31565b61106e81613a7f565b60007f0000000000000000000000000000000000000000000000000000000000007a694614156127a6575060975490565b6127ae6139e8565b905090565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612806573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061282a91906158cd565b6001600160a01b0316336001600160a01b03161461285a5760405162461bcd60e51b8152600401610b31906158ea565b6066541981196066541916146128d85760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608401610b31565b606681905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200161125c565b60006001600160a01b0386166129a65760405162461bcd60e51b815260206004820152605060248201527f44656c65676174696f6e4d616e616765722e5f72656d6f76655368617265734160448201527f6e6451756575655769746864726177616c3a207374616b65722063616e6e6f7460648201526f206265207a65726f206164647265737360801b608482015260a401610b31565b8251612a305760405162461bcd60e51b815260206004820152604d60248201527f44656c65676174696f6e4d616e616765722e5f72656d6f76655368617265734160448201527f6e6451756575655769746864726177616c3a207374726174656769657320636160648201526c6e6e6f7420626520656d70747960981b608482015260a401610b31565b60005b8351811015612ddd576001600160a01b03861615612a8957612a898688868481518110612a6257612a62615765565b6020026020010151868581518110612a7c57612a7c615765565b6020026020010151613607565b73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac06001600160a01b0316848281518110612ab957612ab9615765565b60200260200101516001600160a01b03161415612b82577f000000000000000000000000a513e6e4b8f2a923d98304ec87f64353c4d5c8536001600160a01b031663beffbb8988858481518110612b1257612b12615765565b60200260200101516040518363ffffffff1660e01b8152600401612b4b9291906001600160a01b03929092168252602082015260400190565b600060405180830381600087803b158015612b6557600080fd5b505af1158015612b79573d6000803e3d6000fd5b50505050612dd5565b846001600160a01b0316876001600160a01b03161480612c5457507f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c96001600160a01b0316639b4da03d858381518110612bde57612bde615765565b60200260200101516040518263ffffffff1660e01b8152600401612c1191906001600160a01b0391909116815260200190565b602060405180830381865afa158015612c2e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c529190615991565b155b612d205760405162461bcd60e51b8152602060048201526084602482018190527f44656c65676174696f6e4d616e616765722e5f72656d6f76655368617265734160448301527f6e6451756575655769746864726177616c3a2077697468647261776572206d7560648301527f73742062652073616d652061646472657373206173207374616b657220696620908201527f746869726450617274795472616e7366657273466f7262696464656e2061726560a482015263081cd95d60e21b60c482015260e401610b31565b7f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c96001600160a01b0316638c80d4e588868481518110612d6257612d62615765565b6020026020010151868581518110612d7c57612d7c615765565b60200260200101516040518463ffffffff1660e01b8152600401612da293929190615d00565b600060405180830381600087803b158015612dbc57600080fd5b505af1158015612dd0573d6000803e3d6000fd5b505050505b600101612a33565b506001600160a01b0386166000908152609f60205260408120805491829190612e0583615791565b919050555060006040518060e00160405280896001600160a01b03168152602001886001600160a01b03168152602001876001600160a01b031681526020018381526020014363ffffffff1681526020018681526020018581525090506000612e6d826116c1565b6000818152609e602052604090819020805460ff19166001179055519091507f9009ab153e8014fbfb02f2217f5cde7aa7f9ad734ae85ca3ee3f4ca2fdd499f990612ebb9083908590615b8a565b60405180910390a198975050505050505050565b6000612ede6020830183614c8c565b6001600160a01b03161415612f785760405162461bcd60e51b815260206004820152605460248201527f44656c65676174696f6e4d616e616765722e5f7365744f70657261746f72446560448201527f7461696c733a2063616e6e6f742073657420606561726e696e677352656365696064820152737665726020746f207a65726f206164647265737360601b608482015260a401610b31565b6213c680612f8c6060830160408401615d24565b63ffffffff1611156130415760405162461bcd60e51b815260206004820152606c60248201527f44656c65676174696f6e4d616e616765722e5f7365744f70657261746f72446560448201527f7461696c733a207374616b65724f70744f757457696e646f77426c6f636b732060648201527f63616e6e6f74206265203e204d41585f5354414b45525f4f50545f4f55545f5760848201526b494e444f575f424c4f434b5360a01b60a482015260c401610b31565b6001600160a01b0382166000908152609960205260409081902060010154600160a01b900463ffffffff169061307d9060608401908401615d24565b63ffffffff1610156131135760405162461bcd60e51b815260206004820152605360248201527f44656c65676174696f6e4d616e616765722e5f7365744f70657261746f72446560448201527f7461696c733a207374616b65724f70744f757457696e646f77426c6f636b732060648201527218d85b9b9bdd08189948191958dc99585cd959606a1b608482015260a401610b31565b6001600160a01b038216600090815260996020526040902081906131378282615d61565b505060405133907ffebe5cd24b2cbc7b065b9d0fdeb904461e4afcff57dd57acda1e7832031ba7ac90611d2190849061584c565b606654600090600190811614156131945760405162461bcd60e51b8152600401610b31906157ac565b61319d856115da565b1561321a5760405162461bcd60e51b815260206004820152604160248201527f44656c65676174696f6e4d616e616765722e5f64656c65676174653a2073746160448201527f6b657220697320616c7265616479206163746976656c792064656c65676174656064820152601960fa1b608482015260a401610b31565b61322384611a48565b6132a35760405162461bcd60e51b815260206004820152604560248201527f44656c65676174696f6e4d616e616765722e5f64656c65676174653a206f706560448201527f7261746f72206973206e6f74207265676973746572656420696e20456967656e6064820152642630bcb2b960d91b608482015260a401610b31565b6001600160a01b038085166000908152609960205260409020600101541680158015906132d95750336001600160a01b03821614155b80156132ee5750336001600160a01b03861614155b1561345b57428460200151101561336d5760405162461bcd60e51b815260206004820152603760248201527f44656c65676174696f6e4d616e616765722e5f64656c65676174653a2061707060448201527f726f766572207369676e617475726520657870697265640000000000000000006064820152608401610b31565b6001600160a01b0381166000908152609c6020908152604080832086845290915290205460ff16156134075760405162461bcd60e51b815260206004820152603760248201527f44656c65676174696f6e4d616e616765722e5f64656c65676174653a2061707060448201527f726f76657253616c7420616c7265616479207370656e740000000000000000006064820152608401610b31565b6001600160a01b0381166000908152609c6020908152604080832086845282528220805460ff19166001179055850151613448908890889085908890610a43565b905061345982828760000151614430565b505b6001600160a01b038681166000818152609a602052604080822080546001600160a01b031916948a169485179055517fc3ee9f2e5fda98e8066a1f745b2df9285f416fe98cf2559cd21484b3d87433049190a36000806134ba88611de6565b9150915060005b82518110156113e257613508888a8584815181106134e1576134e1615765565b60200260200101518585815181106134fb576134fb615765565b6020026020010151613bcb565b6001016134c1565b6001600160a01b03811661359e5760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a401610b31565b606554604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1606580546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0380851660009081526098602090815260408083209386168352929052908120805483929061363e908490615ce9565b92505081905550836001600160a01b03167f6909600037b75d7b4733aedd815442b5ec018a827751c832aaff64eba5d6d2dd848484604051610fb093929190615d00565b6033546001600160a01b03163314611a7a5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610b31565b8281146137645760405162461bcd60e51b815260206004820152604a60248201527f44656c65676174696f6e4d616e616765722e5f7365745374726174656779576960448201527f746864726177616c44656c6179426c6f636b733a20696e707574206c656e67746064820152690d040dad2e6dac2e8c6d60b31b608482015260a401610b31565b8260005b818110156138fa57600086868381811061378457613784615765565b90506020020160208101906137999190614c8c565b6001600160a01b038116600090815260a160205260408120549192508686858181106137c7576137c7615765565b90506020020135905062034bc081111561388b5760405162461bcd60e51b815260206004820152607360248201527f44656c65676174696f6e4d616e616765722e5f7365745374726174656779576960448201527f746864726177616c44656c6179426c6f636b733a205f7769746864726177616c60648201527f44656c6179426c6f636b732063616e6e6f74206265203e204d41585f5749544860848201527244524157414c5f44454c41595f424c4f434b5360681b60a482015260c401610b31565b6001600160a01b038316600081815260a160209081526040918290208490558151928352820184905281018290527f0e7efa738e8b0ce6376a0c1af471655540d2e9a81647d7b09ed823018426576d9060600160405180910390a1505050806138f390615791565b9050613768565b505050505050565b6065546001600160a01b031615801561392357506001600160a01b03821615155b6139a55760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a401610b31565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a261199882613510565b604080518082018252600a81526922b4b3b2b72630bcb2b960b11b60209182015281517f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866818301527f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea81840152466060820152306080808301919091528351808303909101815260a0909101909252815191012090565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b62034bc0811115613b8a5760405162461bcd60e51b815260206004820152607160248201527f44656c65676174696f6e4d616e616765722e5f7365744d696e5769746864726160448201527f77616c44656c6179426c6f636b733a205f6d696e5769746864726177616c446560648201527f6c6179426c6f636b732063616e6e6f74206265203e204d41585f5749544844526084820152704157414c5f44454c41595f424c4f434b5360781b60a482015260c401610b31565b609d5460408051918252602082018390527fafa003cd76f87ff9d62b35beea889920f33c0c42b8d45b74954d61d50f4b6b69910160405180910390a1609d55565b6001600160a01b03808516600090815260986020908152604080832093861683529290529081208054839290613c02908490615cd1565b92505081905550836001600160a01b03167f1ec042c965e2edd7107b51188ee0f383e22e76179041ab3a9d18ff151405166c848484604051610fb093929190615d00565b6000613c5461062987615dc4565b6000818152609e602052604090205490915060ff16613cd55760405162461bcd60e51b81526020600482015260436024820152600080516020615efc83398151915260448201527f645769746864726177616c3a20616374696f6e206973206e6f7420696e20717560648201526265756560e81b608482015260a401610b31565b609d544390613cea60a0890160808a01615d24565b63ffffffff16613cfa9190615cd1565b1115613d825760405162461bcd60e51b815260206004820152605f6024820152600080516020615efc83398151915260448201527f645769746864726177616c3a206d696e5769746864726177616c44656c61794260648201527f6c6f636b7320706572696f6420686173206e6f74207965742070617373656400608482015260a401610b31565b613d926060870160408801614c8c565b6001600160a01b0316336001600160a01b031614613e1f5760405162461bcd60e51b81526020600482015260506024820152600080516020615efc83398151915260448201527f645769746864726177616c3a206f6e6c7920776974686472617765722063616e60648201526f1031b7b6b83632ba329030b1ba34b7b760811b608482015260a401610b31565b8115613ea157613e3260a0870187615803565b85149050613ea15760405162461bcd60e51b81526020600482015260426024820152600080516020615efc83398151915260448201527f645769746864726177616c3a20696e707574206c656e677468206d69736d61746064820152610c6d60f31b608482015260a401610b31565b6000818152609e60205260409020805460ff1916905581156140065760005b613ecd60a0880188615803565b9050811015614000574360a16000613ee860a08b018b615803565b85818110613ef857613ef8615765565b9050602002016020810190613f0d9190614c8c565b6001600160a01b03168152602081019190915260400160002054613f3760a08a0160808b01615d24565b63ffffffff16613f479190615cd1565b1115613f655760405162461bcd60e51b8152600401610b3190615dd6565b613ff8613f756020890189614c8c565b33613f8360a08b018b615803565b85818110613f9357613f93615765565b9050602002016020810190613fa89190614c8c565b613fb560c08c018c615803565b86818110613fc557613fc5615765565b905060200201358a8a87818110613fde57613fde615765565b9050602002016020810190613ff39190614c8c565b6145ea565b600101613ec0565b506143f5565b336000908152609a60205260408120546001600160a01b0316905b61402e60a0890189615803565b90508110156143f2574360a1600061404960a08c018c615803565b8581811061405957614059615765565b905060200201602081019061406e9190614c8c565b6001600160a01b0316815260208101919091526040016000205461409860a08b0160808c01615d24565b63ffffffff166140a89190615cd1565b11156140c65760405162461bcd60e51b8152600401610b3190615dd6565b73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac06140e860a08a018a615803565b838181106140f8576140f8615765565b905060200201602081019061410d9190614c8c565b6001600160a01b0316141561425d57600061412b60208a018a614c8c565b905060006001600160a01b037f000000000000000000000000a513e6e4b8f2a923d98304ec87f64353c4d5c85316630e81073c8361416c60c08e018e615803565b8781811061417c5761417c615765565b6040516001600160e01b031960e087901b1681526001600160a01b03909416600485015260200291909101356024830152506044016020604051808303816000875af11580156141d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906141f49190615ba3565b6001600160a01b038084166000908152609a602052604090205491925016801561425557614255818461422a60a08f018f615803565b8881811061423a5761423a615765565b905060200201602081019061424f9190614c8c565b85613bcb565b5050506143ea565b7f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c96001600160a01b031663c4623ea13389898581811061429f5761429f615765565b90506020020160208101906142b49190614c8c565b6142c160a08d018d615803565b868181106142d1576142d1615765565b90506020020160208101906142e69190614c8c565b6142f360c08e018e615803565b8781811061430357614303615765565b60405160e088901b6001600160e01b03191681526001600160a01b03968716600482015294861660248601529290941660448401526020909102013560648201526084019050600060405180830381600087803b15801561436357600080fd5b505af1158015614377573d6000803e3d6000fd5b505050506001600160a01b038216156143ea576143ea823361439c60a08c018c615803565b858181106143ac576143ac615765565b90506020020160208101906143c19190614c8c565b6143ce60c08d018d615803565b868181106143de576143de615765565b90506020020135613bcb565b600101614021565b50505b6040518181527fc97098c2f658800b4df29001527f7324bcdffcf6e8751a699ab920a1eced5b1d9060200160405180910390a1505050505050565b6001600160a01b0383163b1561454a57604051630b135d3f60e11b808252906001600160a01b03851690631626ba7e906144709086908690600401615e5e565b602060405180830381865afa15801561448d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906144b19190615ebb565b6001600160e01b031916146111235760405162461bcd60e51b815260206004820152605360248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a2045524331323731207369676e6174757265206064820152721d995c9a599a58d85d1a5bdb8819985a5b1959606a1b608482015260a401610b31565b826001600160a01b031661455e838361472a565b6001600160a01b0316146111235760405162461bcd60e51b815260206004820152604760248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a207369676e6174757265206e6f742066726f6d6064820152661039b4b3b732b960c91b608482015260a401610b31565b6001600160a01b03831673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac014156146955760405162387b1360e81b81526001600160a01b037f000000000000000000000000a513e6e4b8f2a923d98304ec87f64353c4d5c853169063387b13009061465e90889088908790600401615d00565b600060405180830381600087803b15801561467857600080fd5b505af115801561468c573d6000803e3d6000fd5b50505050614723565b60405163c608c7f360e01b81526001600160a01b03858116600483015284811660248301526044820184905282811660648301527f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c9169063c608c7f390608401600060405180830381600087803b15801561470f57600080fd5b505af11580156113e2573d6000803e3d6000fd5b5050505050565b60008060006147398585614746565b91509150610a3b816147b6565b60008082516041141561477d5760208301516040840151606085015160001a61477187828585614971565b945094505050506147af565b8251604014156147a7576020830151604084015161479c868383614a5e565b9350935050506147af565b506000905060025b9250929050565b60008160048111156147ca576147ca615ee5565b14156147d35750565b60018160048111156147e7576147e7615ee5565b14156148355760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610b31565b600281600481111561484957614849615ee5565b14156148975760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610b31565b60038160048111156148ab576148ab615ee5565b14156149045760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610b31565b600481600481111561491857614918615ee5565b141561106e5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b6064820152608401610b31565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156149a85750600090506003614a55565b8460ff16601b141580156149c057508460ff16601c14155b156149d15750600090506004614a55565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015614a25573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116614a4e57600060019250925050614a55565b9150600090505b94509492505050565b6000806001600160ff1b03831681614a7b60ff86901c601b615cd1565b9050614a8987828885614971565b935093505050935093915050565b60008083601f840112614aa957600080fd5b5081356001600160401b03811115614ac057600080fd5b6020830191508360208260051b85010111156147af57600080fd5b60008060208385031215614aee57600080fd5b82356001600160401b03811115614b0457600080fd5b614b1085828601614a97565b90969095509350505050565b6001600160a01b038116811461106e57600080fd5b8035614b3c81614b1c565b919050565b600080600080600060a08688031215614b5957600080fd5b8535614b6481614b1c565b94506020860135614b7481614b1c565b93506040860135614b8481614b1c565b94979396509394606081013594506080013592915050565b6020808252825182820181905260009190848201906040850190845b81811015614bd457835183529284019291840191600101614bb8565b50909695505050505050565b600060608284031215614bf257600080fd5b50919050565b60008083601f840112614c0a57600080fd5b5081356001600160401b03811115614c2157600080fd5b6020830191508360208285010111156147af57600080fd5b600080600060808486031215614c4e57600080fd5b614c588585614be0565b925060608401356001600160401b03811115614c7357600080fd5b614c7f86828701614bf8565b9497909650939450505050565b600060208284031215614c9e57600080fd5b8135614ca981614b1c565b9392505050565b600080600060608486031215614cc557600080fd5b8335614cd081614b1c565b92506020840135614ce081614b1c565b929592945050506040919091013590565b600060208284031215614d0357600080fd5b5035919050565b60008060008060408587031215614d2057600080fd5b84356001600160401b0380821115614d3757600080fd5b614d4388838901614a97565b90965094506020870135915080821115614d5c57600080fd5b50614d6987828801614a97565b95989497509550505050565b60008060008060008060008060c0898b031215614d9157600080fd5b8835614d9c81614b1c565b97506020890135614dac81614b1c565b9650604089013595506060890135945060808901356001600160401b0380821115614dd657600080fd5b614de28c838d01614a97565b909650945060a08b0135915080821115614dfb57600080fd5b50614e088b828c01614a97565b999c989b5096995094979396929594505050565b6000806000806000806000806080898b031215614e3857600080fd5b88356001600160401b0380821115614e4f57600080fd5b614e5b8c838d01614a97565b909a50985060208b0135915080821115614e7457600080fd5b614e808c838d01614a97565b909850965060408b0135915080821115614e9957600080fd5b614ea58c838d01614a97565b909650945060608b0135915080821115614dfb57600080fd5b634e487b7160e01b600052604160045260246000fd5b60405160e081016001600160401b0381118282101715614ef657614ef6614ebe565b60405290565b604080519081016001600160401b0381118282101715614ef657614ef6614ebe565b60405160c081016001600160401b0381118282101715614ef657614ef6614ebe565b604051601f8201601f191681016001600160401b0381118282101715614f6857614f68614ebe565b604052919050565b63ffffffff8116811461106e57600080fd5b8035614b3c81614f70565b60006001600160401b03821115614fa657614fa6614ebe565b5060051b60200190565b600082601f830112614fc157600080fd5b81356020614fd6614fd183614f8d565b614f40565b82815260059290921b84018101918181019086841115614ff557600080fd5b8286015b8481101561501957803561500c81614b1c565b8352918301918301614ff9565b509695505050505050565b600082601f83011261503557600080fd5b81356020615045614fd183614f8d565b82815260059290921b8401810191818101908684111561506457600080fd5b8286015b848110156150195780358352918301918301615068565b600060e0828403121561509157600080fd5b615099614ed4565b90506150a482614b31565b81526150b260208301614b31565b60208201526150c360408301614b31565b6040820152606082013560608201526150de60808301614f82565b608082015260a08201356001600160401b03808211156150fd57600080fd5b61510985838601614fb0565b60a084015260c084013591508082111561512257600080fd5b5061512f84828501615024565b60c08301525092915050565b60006020828403121561514d57600080fd5b81356001600160401b0381111561516357600080fd5b61516f8482850161507f565b949350505050565b60006020828403121561518957600080fd5b813560ff81168114614ca957600080fd5b6000604082840312156151ac57600080fd5b6151b4614efc565b905081356151c181614b1c565b815260208201356bffffffffffffffffffffffff811681146151e257600080fd5b602082015292915050565b6000602080838503121561520057600080fd5b82356001600160401b038082111561521757600080fd5b818501915085601f83011261522b57600080fd5b8135615239614fd182614f8d565b81815260059190911b8301840190848101908883111561525857600080fd5b8585015b83811015615332578035858111156152745760008081fd5b860160e0818c03601f190181131561528c5760008081fd5b615294614f1e565b89830135888111156152a65760008081fd5b6152b48e8c83870101614fb0565b825250604080840135898111156152cb5760008081fd5b6152d98f8d83880101615024565b8c8401525060606152eb818601614b31565b82840152608091506152ff8f83870161519a565b9083015261530f60c08501614f82565b9082015261531e838301614b31565b60a08201528552505091860191860161525c565b5098975050505050505050565b801515811461106e57600080fd5b60008060008060006080868803121561536557600080fd5b85356001600160401b038082111561537c57600080fd5b9087019060e0828a03121561539057600080fd5b909550602087013590808211156153a657600080fd5b506153b388828901614a97565b9095509350506040860135915060608601356153ce8161533f565b809150509295509295909350565b600080604083850312156153ef57600080fd5b82356153fa81614b1c565b9150602083013561540a81614b1c565b809150509250929050565b60006040828403121561542757600080fd5b61542f614efc565b905081356001600160401b038082111561544857600080fd5b818401915084601f83011261545c57600080fd5b813560208282111561547057615470614ebe565b615482601f8301601f19168201614f40565b9250818352868183860101111561549857600080fd5b8181850182850137600081838501015282855280860135818601525050505092915050565b600080600080600060a086880312156154d557600080fd5b85356154e081614b1c565b945060208601356154f081614b1c565b935060408601356001600160401b038082111561550c57600080fd5b61551889838a01615415565b9450606088013591508082111561552e57600080fd5b5061553b88828901615415565b95989497509295608001359392505050565b6000806040838503121561556057600080fd5b823561556b81614b1c565b915060208301356001600160401b0381111561558657600080fd5b61559285828601614fb0565b9150509250929050565b600081518084526020808501945080840160005b838110156155cc578151875295820195908201906001016155b0565b509495945050505050565b602081526000614ca9602083018461559c565b600080602083850312156155fd57600080fd5b82356001600160401b0381111561561357600080fd5b614b1085828601614bf8565b6000806040838503121561563257600080fd5b823561563d81614b1c565b946020939093013593505050565b6000806000806080858703121561566157600080fd5b843561566c81614b1c565b935060208501359250604085013561568381614b1c565b9396929550929360600135925050565b600081518084526020808501945080840160005b838110156155cc5781516001600160a01b0316875295820195908201906001016156a7565b6040815260006156df6040830185615693565b82810360208401526112a0818561559c565b60008060006060848603121561570657600080fd5b833561571181614b1c565b925060208401356001600160401b0381111561572c57600080fd5b61573886828701615415565b925050604084013590509250925092565b60006060828403121561575b57600080fd5b614ca98383614be0565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006000198214156157a5576157a561577b565b5060010190565b60208082526019908201527f5061757361626c653a20696e6465782069732070617573656400000000000000604082015260600190565b60008235605e198336030181126157f957600080fd5b9190910192915050565b6000808335601e1984360301811261581a57600080fd5b8301803591506001600160401b0382111561583457600080fd5b6020019150600581901b36038213156147af57600080fd5b60608101823561585b81614b1c565b6001600160a01b03908116835260208401359061587782614b1c565b166020830152604083013561588b81614f70565b63ffffffff811660408401525092915050565b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b6000602082840312156158df57600080fd5b8151614ca981614b1c565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b60208082526037908201527f44656c65676174696f6e4d616e616765723a206f6e6c7953747261746567794d60408201527f616e616765724f72456967656e506f644d616e61676572000000000000000000606082015260800190565b6000602082840312156159a357600080fd5b8151614ca98161533f565b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b6000823560de198336030181126157f957600080fd5b600060208284031215615a1e57600080fd5b8135614ca98161533f565b600060018060a01b03808351168452806020840151166020850152806040840151166040850152506060820151606084015263ffffffff608083015116608084015260a082015160e060a0850152615a8460e0850182615693565b905060c083015184820360c08601526112a0828261559c565b602081526000614ca96020830184615a29565b602081526000825160e06020840152615acd610100840182615693565b90506020840151601f19848303016040850152615aea828261559c565b915050604084015160018060a01b03808216606086015260608601519150808251166080860152506bffffffffffffffffffffffff60208201511660a0850152506080840151615b4260c085018263ffffffff169052565b5060a08401516001600160a01b03811660e0850152610a3b565b60008060408385031215615b6f57600080fd5b8251615b7a8161533f565b6020939093015192949293505050565b82815260406020820152600061516f6040830184615a29565b600060208284031215615bb557600080fd5b5051919050565b600082601f830112615bcd57600080fd5b81516020615bdd614fd183614f8d565b82815260059290921b84018101918181019086841115615bfc57600080fd5b8286015b848110156150195780518352918301918301615c00565b60008060408385031215615c2a57600080fd5b82516001600160401b0380821115615c4157600080fd5b818501915085601f830112615c5557600080fd5b81516020615c65614fd183614f8d565b82815260059290921b84018101918181019089841115615c8457600080fd5b948201945b83861015615cab578551615c9c81614b1c565b82529482019490820190615c89565b91880151919650909350505080821115615cc457600080fd5b5061559285828601615bbc565b60008219821115615ce457615ce461577b565b500190565b600082821015615cfb57615cfb61577b565b500390565b6001600160a01b039384168152919092166020820152604081019190915260600190565b600060208284031215615d3657600080fd5b8135614ca981614f70565b80546001600160a01b0319166001600160a01b0392909216919091179055565b8135615d6c81614b1c565b615d768183615d41565b50600181016020830135615d8981614b1c565b615d938183615d41565b506040830135615da281614f70565b815463ffffffff60a01b191660a09190911b63ffffffff60a01b161790555050565b6000615dd0368361507f565b92915050565b6020808252606e90820152600080516020615efc83398151915260408201527f645769746864726177616c3a207769746864726177616c44656c6179426c6f6360608201527f6b7320706572696f6420686173206e6f74207965742070617373656420666f7260808201526d207468697320737472617465677960901b60a082015260c00190565b82815260006020604081840152835180604085015260005b81811015615e9257858101830151858201606001528201615e76565b81811115615ea4576000606083870101525b50601f01601f191692909201606001949350505050565b600060208284031215615ecd57600080fd5b81516001600160e01b031981168114614ca957600080fd5b634e487b7160e01b600052602160045260246000fdfe44656c65676174696f6e4d616e616765722e5f636f6d706c6574655175657565a26469706673582212202ded7bd47bfa76c728848b0701e85591019bc318e7ef7411423650af4d82b0a664736f6c634300080c0033","storage":{"0x0":"0xff"}},"0xc3e53f4d16ae77db1c982e75a937b9f60fe63690":{"nonce":1,"balance":"0x0","code":"0x60806040526004361061007b5760003560e01c80639623609d1161004e5780639623609d1461011157806399a88ec414610124578063f2fde38b14610144578063f3b7dead1461016457600080fd5b8063204e1c7a14610080578063715018a6146100bc5780637eff275e146100d35780638da5cb5b146100f3575b600080fd5b34801561008c57600080fd5b506100a061009b366004610499565b610184565b6040516001600160a01b03909116815260200160405180910390f35b3480156100c857600080fd5b506100d1610215565b005b3480156100df57600080fd5b506100d16100ee3660046104bd565b610229565b3480156100ff57600080fd5b506000546001600160a01b03166100a0565b6100d161011f36600461050c565b610291565b34801561013057600080fd5b506100d161013f3660046104bd565b610300565b34801561015057600080fd5b506100d161015f366004610499565b610336565b34801561017057600080fd5b506100a061017f366004610499565b6103b4565b6000806000836001600160a01b03166040516101aa90635c60da1b60e01b815260040190565b600060405180830381855afa9150503d80600081146101e5576040519150601f19603f3d011682016040523d82523d6000602084013e6101ea565b606091505b5091509150816101f957600080fd5b8080602001905181019061020d91906105e2565b949350505050565b61021d6103da565b6102276000610434565b565b6102316103da565b6040516308f2839760e41b81526001600160a01b038281166004830152831690638f283970906024015b600060405180830381600087803b15801561027557600080fd5b505af1158015610289573d6000803e3d6000fd5b505050505050565b6102996103da565b60405163278f794360e11b81526001600160a01b03841690634f1ef2869034906102c990869086906004016105ff565b6000604051808303818588803b1580156102e257600080fd5b505af11580156102f6573d6000803e3d6000fd5b5050505050505050565b6103086103da565b604051631b2ce7f360e11b81526001600160a01b038281166004830152831690633659cfe69060240161025b565b61033e6103da565b6001600160a01b0381166103a85760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b6103b181610434565b50565b6000806000836001600160a01b03166040516101aa906303e1469160e61b815260040190565b6000546001600160a01b031633146102275760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161039f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03811681146103b157600080fd5b6000602082840312156104ab57600080fd5b81356104b681610484565b9392505050565b600080604083850312156104d057600080fd5b82356104db81610484565b915060208301356104eb81610484565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b60008060006060848603121561052157600080fd5b833561052c81610484565b9250602084013561053c81610484565b9150604084013567ffffffffffffffff8082111561055957600080fd5b818601915086601f83011261056d57600080fd5b81358181111561057f5761057f6104f6565b604051601f8201601f19908116603f011681019083821181831017156105a7576105a76104f6565b816040528281528960208487010111156105c057600080fd5b8260208601602083013760006020848301015280955050505050509250925092565b6000602082840312156105f457600080fd5b81516104b681610484565b60018060a01b038316815260006020604081840152835180604085015260005b8181101561063b5785810183015185820160600152820161061f565b8181111561064d576000606083870101525b50601f01601f19169290920160600194935050505056fea26469706673582212208473e2cda982935bccab1789bc9098533ac3b1ad2c056cc51cc1d5d1193ed6fd64736f6c634300080c0033","storage":{"0x0":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266"}},"0xcd8a1c3ba11cf5ecfa6267617243239504a98d90":{"nonce":1,"balance":"0x0","code":"0x6080604052600436106101665760003560e01c806379e041f2116100d1578063a80fc9bd1161008a578063d16544f011610064578063d16544f01461042c578063f26ee9d01461044c578063f2fde38b14610462578063fabc1cbc1461048257600080fd5b8063a80fc9bd146103c7578063b1538706146103f7578063ca9b21ae1461040c57600080fd5b806379e041f2146102f95780637fd4f8451461032657806380bc280c1461033c578063886f1195146103695780638da5cb5b14610389578063a7acab46146103a757600080fd5b80635740b89d116101235780635740b89d1461023a578063595c6a671461025a5780635ac86ab71461026f5780635c975abb146102af57806361bc221a146102ce578063715018a6146102e457600080fd5b806310d67a2f1461016b578063136439dd1461018d5780631878d1f1146101ad578063274b3df4146101f257806347e7ef24146101fa578063485cc9551461021a575b600080fd5b34801561017757600080fd5b5061018b6101863660046130d3565b6104a2565b005b34801561019957600080fd5b5061018b6101a83660046130f0565b61055e565b3480156101b957600080fd5b506101d573574839586746383753739573937593749373345781565b6040516001600160a01b0390911681526020015b60405180910390f35b61018b61069d565b34801561020657600080fd5b5061018b610215366004613109565b61088e565b34801561022657600080fd5b5061018b610235366004613135565b6108bc565b34801561024657600080fd5b5061018b61025536600461316e565b6109ea565b34801561026657600080fd5b5061018b610c5e565b34801561027b57600080fd5b5061029f61028a3660046131a9565b606654600160ff9092169190911b9081161490565b60405190151581526020016101e9565b3480156102bb57600080fd5b506066545b6040519081526020016101e9565b3480156102da57600080fd5b506102c060975481565b3480156102f057600080fd5b5061018b610d25565b34801561030557600080fd5b506103196103143660046131cc565b610d39565b6040516101e99190613347565b34801561033257600080fd5b506102c060985481565b34801561034857600080fd5b506102c06103573660046130d3565b609e6020526000908152604090205481565b34801561037557600080fd5b506065546101d5906001600160a01b031681565b34801561039557600080fd5b506033546001600160a01b03166101d5565b3480156103b357600080fd5b5061018b6103c23660046130f0565b6113c6565b3480156103d357600080fd5b506103e76103e23660046130f0565b611561565b6040516101e99493929190613432565b34801561040357600080fd5b506103196115d3565b34801561041857600080fd5b506103e76104273660046130f0565b611624565b34801561043857600080fd5b5061018b610447366004613109565b611659565b34801561045857600080fd5b506102c060995481565b34801561046e57600080fd5b5061018b61047d3660046130d3565b611924565b34801561048e57600080fd5b5061018b61049d3660046130f0565b61199a565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104f5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610519919061345b565b6001600160a01b0316336001600160a01b0316146105525760405162461bcd60e51b815260040161054990613478565b60405180910390fd5b61055b81611af6565b50565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa1580156105a6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105ca91906134d0565b6105e65760405162461bcd60e51b8152600401610549906134ed565b6066548181161461065f5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608401610549565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b606654156106bd5760405162461bcd60e51b815260040161054990613535565b6000341161070d5760405162461bcd60e51b815260206004820181905260248201527f6d73672076616c7565206d7573742062652067726561746572207468617420306044820152606401610549565b6040805160e081019091523390349042906000908060a08101808481526020016097600081548092919061074090613582565b90915550905281526001600160a01b03861660208083019190915273574839586746383753739573937593749373345760408084019190915260608301879052608090920185905282518101516000908152609c909152208151805182549394508493839190829060ff1916600183818111156107bf576107bf6131ee565b021790555060209182015160019190910155828101516002830180546001600160a01b03199081166001600160a01b03938416179091556040808601516003860180549093169084161790915560608086015160048601556080958601516005909501949094558551830151815190815291891692820192909252735748395867463837537395739375937493733457918101919091529081018590527fe28491c2da97a9923c92f6590a040dfc143fe636e8545356cdab0a796e1acefa91015b60405180910390a150505050565b606654156108ae5760405162461bcd60e51b815260040161054990613535565b6108b88282611659565b5050565b600054610100900460ff16158080156108dc5750600054600160ff909116105b806108f65750303b1580156108f6575060005460ff166001145b6109595760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610549565b6000805460ff19166001179055801561097c576000805461ff0019166101001790555b610987836000611bed565b61099082611cd3565b60006098819055600160975560995580156109e5576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b60665415610a0a5760405162461bcd60e51b815260040161054990613535565b6001610a19604083018361359d565b9050101580610a3457506001610a2f828061359d565b905010155b80610a4e57506001610a49602083018361359d565b905010155b610aa45760405162461bcd60e51b815260206004820152602160248201527f4172726179206d7573742068617665206174206c6561737420312075706461746044820152606560f81b6064820152608401610549565b600080610ab083611d25565b915091508160001415610ad55760405162461bcd60e51b8152600401610549906135ed565b609954610ae3906001613617565b821115610b025760405162461bcd60e51b8152600401610549906135ed565b6099548111610b235760405162461bcd60e51b8152600401610549906135ed565b6000610b2f8385611e5b565b90506000610b4982610b44604088018861359d565b6121d5565b9050610b55828661249b565b805115610c57576097805460009182610b6d83613582565b909155506040805160a08101909152909150806060810180600081526020908101859052908252818101859052426040928301526000848152609d90915220815180518254839190829060ff191660018381811115610bce57610bce6131ee565b0217905550602091820151600190910155828101518051610bf5926002850192019061305e565b5060408201518160030155905050815160986000828254610c169190613617565b90915550506040517f09b30365986269e3939307e7ca7b7b7421a8ad08ef18bb766c668d27cbc2aef990610c4d908390859061362f565b60405180910390a1505b5050505050565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610ca6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cca91906134d0565b610ce65760405162461bcd60e51b8152600401610549906134ed565b600019606681905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b610d2d61269b565b610d376000611cd3565b565b610d646040518060800160405280606081526020016060815260200160608152602001606081525090565b610d8f6040518060800160405280606081526020016060815260200160608152602001606081525090565b6000808080875b878111610e4f576000818152609c602052604090206001015415610dc65784610dbe81613582565b955050610e3d565b6000818152609d602052604090206001015415610def5781610de781613582565b925050610e3d565b6000818152609a602052604090206001015415610e185783610e1081613582565b945050610e3d565b6000818152609b602052604090206001015415610e3d5782610e3981613582565b9350505b80610e4781613582565b915050610d96565b508367ffffffffffffffff811115610e6957610e69613650565b604051908082528060200260200182016040528015610ecf57816020015b6040805160e081018252600060a0820181815260c08301829052825260208083018290529282018190526060820181905260808201528252600019909201910181610e875790505b5085528167ffffffffffffffff811115610eeb57610eeb613650565b604051908082528060200260200182016040528015610f4a57816020015b6040805160c08101825260006080820181815260a083018290528252602080830182905292820181905260608201528252600019909201910181610f095790505b5060208601528267ffffffffffffffff811115610f6957610f69613650565b604051908082528060200260200182016040528015610fc857816020015b6040805160c08101825260006080820181815260a083018290528252602080830182905292820181905260608201528252600019909201910181610f875790505b5060408601528067ffffffffffffffff811115610fe757610fe7613650565b60405190808252806020026020018201604052801561104157816020015b6040805160a081018252600060608083018281526080840183905283526020830152918101919091528152602001906001900390816110055790505b506060860152506000925082915081905080875b8781116113b7576000818152609c602052604090206001015415611136576000818152609c602052604090819020815160e081019092528054829060a08201908390829060ff1660018111156110ad576110ad6131ee565b60018111156110be576110be6131ee565b81526001919091015460209182015290825260028301546001600160a01b039081169183019190915260038301541660408201526004820154606082015260059091015460809091015286518661111481613582565b97508151811061112657611126613666565b60200260200101819052506113a5565b6000818152609a6020526040902060010154156111f1576000818152609a602052604090819020815160c081019092528054829060808201908390829060ff166001811115611187576111876131ee565b6001811115611198576111986131ee565b815260019190910154602091820152908252600283015490820152600382015460ff161515604080830191909152600490920154606090910152870151856111df81613582565b96508151811061112657611126613666565b6000818152609d6020526040902060010154156112e9576000818152609d602052604090819020815160a081019092528054829060608201908390829060ff166001811115611242576112426131ee565b6001811115611253576112536131ee565b81526020016001820154815250508152602001600282018054806020026020016040519081016040528092919081815260200182805480156112b457602002820191906000526020600020905b8154815260200190600101908083116112a0575b50505050508152602001600382015481525050866060015183806112d790613582565b94508151811061112657611126613666565b6000818152609b6020526040902060020154156113a0576000818152609b602052604090819020815160c081019092528054829060808201908390829060ff16600181111561133a5761133a6131ee565b600181111561134b5761134b6131ee565b815260019190910154602091820152908252600283015482820152600383015460ff16151560408301526004909201546060909101528701518461138e81613582565b95508151811061112657611126613666565b6113b7565b806113af81613582565b915050611055565b50939450505050505b92915050565b606654156113e65760405162461bcd60e51b815260040161054990613535565b600081116114365760405162461bcd60e51b815260206004820181905260248201527f416d6f756e74206d7573742062652067726561746572207468616e207a65726f6044820152606401610549565b336000818152609e60205260409020548211156114a05760405162461bcd60e51b815260206004820152602260248201527f6e6f7420656e6f7567682070656e64696e6720776974686472617720616d6f756044820152611b9d60f21b6064820152608401610549565b30318211156114e85760405162461bcd60e51b81526020600482015260146024820152736e6f7420656e6f756768206574682066756e647360601b6044820152606401610549565b6001600160a01b0381166000908152609e60205260408120805484929061151090849061367c565b9091555050604080516001600160a01b0383168152602081018490527f74b13e26477934df4349c96042c16ffb2ec5e0f902cdf60e4755711cd460ce99910160405180910390a16108b881836126f5565b609a6020526000908152604090819020815180830190925280549091908290829060ff166001811115611596576115966131ee565b60018111156115a7576115a76131ee565b815260019190910154602090910152600282015460038301546004909301549192909160ff9091169084565b6115fe6040518060800160405280606081526020016060815260200160608152602001606081525090565b61161f60985460016116109190613617565b6001609754610314919061367c565b905090565b609b6020526000908152604090819020815180830190925280549091908290829060ff166001811115611596576115966131ee565b606654156116795760405162461bcd60e51b815260040161054990613535565b6001600160a01b0382166116c75760405162461bcd60e51b8152602060048201526015602482015274496e76616c696420746f6b656e206164647265737360581b6044820152606401610549565b600081116117175760405162461bcd60e51b815260206004820181905260248201527f416d6f756e74206d7573742062652067726561746572207468616e207a65726f6044820152606401610549565b6040516323b872dd60e01b81523360048201819052306024830152604482018390529083906001600160a01b038216906323b872dd906064016020604051808303816000875af115801561176f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061179391906134d0565b6117d75760405162461bcd60e51b8152602060048201526015602482015274151bdad95b881d1c985b9cd9995c8819985a5b1959605a1b6044820152606401610549565b6040805160e0810190915242906000908060a08101808481526020016097600081548092919061180690613582565b90915550905281526001600160a01b0380871660208084019190915290891660408084019190915260608301899052608090920185905282518101516000908152609c909152208151805182549394508493839190829060ff191660018381811115611874576118746131ee565b021790555060209182015160019190910155828101516002830180546001600160a01b03199081166001600160a01b03938416179091556040808601516003860180549093169084161790915560608086015160048601556080958601516005909501949094558551830151815190815289831693810193909352908a16908201529081018790527fe28491c2da97a9923c92f6590a040dfc143fe636e8545356cdab0a796e1acefa9101610c4d565b61192c61269b565b6001600160a01b0381166119915760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610549565b61055b81611cd3565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156119ed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a11919061345b565b6001600160a01b0316336001600160a01b031614611a415760405162461bcd60e51b815260040161054990613478565b606654198119606654191614611abf5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608401610549565b606681905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c90602001610692565b6001600160a01b038116611b845760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a401610549565b606554604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1606580546001600160a01b0319166001600160a01b0392909216919091179055565b6065546001600160a01b0316158015611c0e57506001600160a01b03821615155b611c905760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a401610549565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a26108b882611af6565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000806000198180611d37868061359d565b90501115611dbb57611d70611d4c868061359d565b6000818110611d5d57611d5d613666565b905060a00201600001602001358361280e565b9150611db8611d7f868061359d565b6001611d8b898061359d565b611d9692915061367c565b818110611da557611da5613666565b905060a002016000016020013582612824565b90505b6000611dca602087018761359d565b90501115611e0657611de2611d4c602087018761359d565b9150611e03611df4602087018761359d565b6001611d8b60208a018a61359d565b90505b6000611e15604087018761359d565b90501115611e5157611e2d611d4c604087018761359d565b9150611e4e611e3f604087018761359d565b6001611d8b60408a018a61359d565b90505b9094909350915050565b6060611e6a604083018361359d565b1590508015611e825750611e7e828061359d565b1590505b8015611e9a5750611e96602083018361359d565b1590505b15611eb457506040805160008152602081019091526113c0565b600080808080611ec7604088018861359d565b9050611ed6602089018961359d565b9050611ee2898061359d565b611eed929150613617565b611ef79190613617565b905060008167ffffffffffffffff811115611f1457611f14613650565b604051908082528060200260200182016040528015611f3d578160200160208202803683370190505b509050885b611f4c838b613617565b8110156121c857611f6060208a018a61359d565b905087108015611f98575080611f7960208b018b61359d565b89818110611f8957611f89613666565b905060a0020160000160200135145b15612000576001828581518110611fb157611fb1613666565b60200260200101906005811115611fca57611fca6131ee565b90816005811115611fdd57611fdd6131ee565b90525086611fea81613582565b9750508380611ff890613582565b9450506121b6565b61200a898061359d565b90508610801561203f5750806120208a8061359d565b8881811061203057612030613666565b905060a0020160000160200135145b1561209f57600482858151811061205857612058613666565b60200260200101906005811115612071576120716131ee565b90816005811115612084576120846131ee565b9052508561209181613582565b9650508380611ff890613582565b6120ac60408a018a61359d565b9050851080156120e45750806120c560408b018b61359d565b878181106120d5576120d5613666565b905060a0020160000160200135145b156121445760038285815181106120fd576120fd613666565b60200260200101906005811115612116576121166131ee565b90816005811115612129576121296131ee565b9052508461213681613582565b9550508380611ff890613582565b61217a604051806040016040528060158152602001743932b8bab2b9ba39903737ba1034b71037b93232b960591b815250612833565b60405162461bcd60e51b8152602060048201526011602482015270696e76616c696465204c3255706461746560781b6044820152606401610549565b806121c081613582565b915050611f42565b5098975050505050505050565b6060816121f15750604080516000815260208101909152612494565b6000808367ffffffffffffffff81111561220d5761220d613650565b604051908082528060200260200182016040528015612236578160200160208202803683370190505b5090506000805b87518110156123f157600388828151811061225a5761225a613666565b60200260200101516005811115612273576122736131ee565b14156123df57600087878461228781613582565b955081811061229857612298613666565b905060a002018036038101906122ae919061370b565b9050609954816000015160200151116122c757506123df565b6000816040015160058111156122df576122df6131ee565b148061230057506003816040015160058111156122fe576122fe6131ee565b145b80612320575060058160400151600581111561231e5761231e6131ee565b145b80612340575060028160400151600581111561233e5761233e6131ee565b145b1561239e576020810151848661235581613582565b97508151811061236757612367613666565b602090810291909101015260008160400151600581111561238a5761238a6131ee565b14156123995761239981612876565b6123dd565b60405162461bcd60e51b8152602060048201526014602482015273756e6b6e6f776e2072657175657374207479706560601b6044820152606401610549565b505b806123e981613582565b91505061223d565b5060008367ffffffffffffffff81111561240d5761240d613650565b604051908082528060200260200182016040528015612436578160200160208202803683370190505b50905060005b8481101561248d5783818151811061245657612456613666565b602002602001015182828151811061247057612470613666565b60209081029190910101528061248581613582565b91505061243c565b5093505050505b9392505050565b6000806000805b85518110156126935760018682815181106124bf576124bf613666565b602002602001015160058111156124d8576124d86131ee565b141561254957366124ec602087018761359d565b856124f681613582565b965081811061250757612507613666565b905060a0020190506099548160000160200135116125255750612681565b61252e816129fd565b6099805490600061253e83613582565b919050555050612681565b600486828151811061255d5761255d613666565b60200260200101516005811115612576576125766131ee565b14156125c95736612587868061359d565b8661259181613582565b97508181106125a2576125a2613666565b905060a0020190506099548160000160200135116125c05750612681565b61252e81612a43565b60038682815181106125dd576125dd613666565b602002602001015160058111156125f6576125f66131ee565b1415612643573661260a604087018761359d565b8461261481613582565b955081811061262557612625613666565b905060a00201905060995481600001602001351161252e5750612681565b60405162461bcd60e51b8152602060048201526013602482015272756e6b6e6f776e20757064617465207479706560681b6044820152606401610549565b8061268b81613582565b9150506124a2565b505050505050565b6033546001600160a01b03163314610d375760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610549565b804710156127455760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401610549565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114612792576040519150601f19603f3d011682016040523d82523d6000602084013e612797565b606091505b50509050806109e55760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d617920686176652072657665727465640000000000006064820152608401610549565b600081831061281d5781612494565b5090919050565b600081831161281d5781612494565b61055b81604051602401612847919061379b565b60408051601f198184030181529190526020810180516001600160e01b031663104c13eb60e21b179052612ba3565b806060015161055b5780516020908101516000818152609c9092526040808320815160e081019092528054929392829060a08201908390829060ff1660018111156128c3576128c36131ee565b60018111156128d4576128d46131ee565b81526001919091015460209182015290825260028301546001600160a01b039081168383015260038401548116604080850191909152600480860154606080870191909152600590960154608090950194909452858101519286015194860151905163a9059cbb60e01b815294821693850193909352602484019290925292935082169063a9059cbb906044016020604051808303816000875af1158015612980573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129a491906134d0565b5060208083015160408085015160608087015183516001600160a01b0395861681529490921694840194909452908201527fd94415916610c60b0e0e439fd308b171a6e28fad608830cf17f14ff5928e22799101610880565b735748395867463837537395739375937493733457612a2260808301606084016130d3565b6001600160a01b03161415612a3a5761055b81612bc4565b61055b81612dbf565b6000612a5760408301356060840135610d39565b9050600081604051602001612a6c9190613347565b60408051601f19818403018152828252805160209091012060c083019091529150429060009080608081018084815260200160976000815480929190612ab190613582565b90915550905281526020878101358183015260808801358614604080840191909152606090920185905282518101516000908152609b909152208151805182549394508493839190829060ff191660018381811115612b1257612b126131ee565b021790555060209182015160019091015582810151600283015560408084015160038401805491151560ff199092169190911790556060909301516004909201919091558201518282015191517fd16f202ac5905ff5d1851f4805ffe56d1212db32fa989881d0044b9cf0f7277692612b949282521515602082015260400190565b60405180910390a15050505050565b80516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b6040805160c081019091526080808301353031101591429160009190819081018084815260200160976000815480929190612bfe90613582565b909155509052815260208681013581830152851515604080840191909152606090920185905282518101516000908152609a909152208151805182549394508493839190829060ff191660018381811115612c5b57612c5b6131ee565b02179055506020918201516001919091015582810151600283015560408084015160038401805460ff191691151591909117905560609093015160049092019190915582518101518251908152851515918101919091527f0c4873525770dbb64515e9d3950131f79ed8f72ff147ff1723bbe2e77e3791aa910160405180910390a18215612db9576080840135609e6000612cfc60608801604089016130d3565b6001600160a01b03166001600160a01b031681526020019081526020016000206000828254612d2b9190613617565b909155507fe40f985f6a88d7d060348dc647fb85bb6365eee1437a753cd67141bc3eda8fa99050612d6260608601604087016130d3565b609e6000612d766060890160408a016130d3565b6001600160a01b03166001600160a01b03168152602001908152602001600020546040516108809291906001600160a01b03929092168252602082015260400190565b50505050565b6000612dd160808301606084016130d3565b6040516370a0823160e01b81523060048201529091506000906080840135906001600160a01b038416906370a0823190602401602060405180830381865afa158015612e21573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e4591906137f0565b6040805160c081019091529111159150429060009080608081018084815260200160976000815480929190612e7990613582565b909155509052815260208781013581830152851515604080840191909152606090920185905282518101516000908152609a909152208151805182549394508493839190829060ff191660018381811115612ed657612ed66131ee565b02179055506020918201516001919091015582810151600283015560408084015160038401805460ff191691151591909117905560609093015160049092019190915582518101518251908152851515918101919091527f0c4873525770dbb64515e9d3950131f79ed8f72ff147ff1723bbe2e77e3791aa910160405180910390a18215610c57576001600160a01b03841663a9059cbb612f7d60608801604089016130d3565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152608088013560248201526044016020604051808303816000875af1158015612fcd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ff191906134d0565b507fa92ff919b850e4909ab2261d907ef955f11bc1716733a6cbece38d163a69af8a61302360608701604088016130d3565b61303360808801606089016130d3565b604080516001600160a01b039384168152929091166020830152608088013590820152606001612b94565b828054828255906000526020600020908101928215613099579160200282015b8281111561309957825182559160200191906001019061307e565b506130a59291506130a9565b5090565b5b808211156130a557600081556001016130aa565b6001600160a01b038116811461055b57600080fd5b6000602082840312156130e557600080fd5b8135612494816130be565b60006020828403121561310257600080fd5b5035919050565b6000806040838503121561311c57600080fd5b8235613127816130be565b946020939093013593505050565b6000806040838503121561314857600080fd5b8235613153816130be565b91506020830135613163816130be565b809150509250929050565b60006020828403121561318057600080fd5b813567ffffffffffffffff81111561319757600080fd5b82016060818503121561249457600080fd5b6000602082840312156131bb57600080fd5b813560ff8116811461249457600080fd5b600080604083850312156131df57600080fd5b50508035926020909101359150565b634e487b7160e01b600052602160045260246000fd5b80516002811061322457634e487b7160e01b600052602160045260246000fd5b8252602090810151910152565b600081518084526020808501945080840160005b8381101561328e57815161325a888251613204565b8084015160408981019190915281015115156060808a01919091520151608088015260a09096019590820190600101613245565b509495945050505050565b600081518084526020808501945080840160005b8381101561328e578151875295820195908201906001016132ad565b600081518084526020808501808196508360051b8101915082860160005b8581101561333a57828403895281516080613303868351613204565b868201516040828189015261331a83890183613299565b9301516060979097019690965250988501989350908401906001016132e7565b5091979650505050505050565b6000602080835260a080840185516080808588015282825180855260c094508489019150868401935060005b818110156133cb578451613388848251613204565b808901516001600160a01b039081166040868101919091528201511660608086019190915281015185850152840151878401529387019391850191600101613373565b5050858901519550601f199450848882030160408901526133ec8187613231565b955050604088015192508387860301606088015261340a8584613231565b945060608801519250838786030181880152505061342883826132c9565b9695505050505050565b60a081016134408287613204565b60408201949094529115156060830152608090910152919050565b60006020828403121561346d57600080fd5b8151612494816130be565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b801515811461055b57600080fd5b6000602082840312156134e257600080fd5b8151612494816134c2565b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b6020808252601c908201527f5061757361626c653a20636f6e74726163742069732070617573656400000000604082015260600190565b634e487b7160e01b600052601160045260246000fd5b60006000198214156135965761359661356c565b5060010190565b6000808335601e198436030181126135b457600080fd5b83018035915067ffffffffffffffff8211156135cf57600080fd5b602001915060a0810236038213156135e657600080fd5b9250929050565b60208082526010908201526f496e76616c6964204c3255706461746560801b604082015260600190565b6000821982111561362a5761362a61356c565b500190565b8281526040602082015260006136486040830184613299565b949350505050565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b60008282101561368e5761368e61356c565b500390565b6040516080810167ffffffffffffffff811182821017156136c457634e487b7160e01b600052604160045260246000fd5b60405290565b6040805190810167ffffffffffffffff811182821017156136c457634e487b7160e01b600052604160045260246000fd5b8035613706816134c2565b919050565b600081830360a081121561371e57600080fd5b613726613693565b604082121561373457600080fd5b61373c6136ca565b915083356002811061374d57600080fd5b808352506020840135602083015281815260408401356020820152606084013591506006821061377c57600080fd5b81604082015261378e608085016136fb565b6060820152949350505050565b600060208083528351808285015260005b818110156137c8578581018301518582016040015282016137ac565b818111156137da576000604083870101525b50601f01601f1916929092016040019392505050565b60006020828403121561380257600080fd5b505191905056fea2646970667358221220feb1fa713f0fcaca765df442d55e06cc1f199eca048cfa0686fdbfcf43a073cf64736f6c634300080c0033","storage":{}},"0xcf7ed3acca5a467e9e704c703e8d87f634fb0fc9":{"nonce":1,"balance":"0x0","code":"0x60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b6100803660046106f1565b610118565b61005b61009336600461070c565b61015f565b3480156100a457600080fd5b506100ad6101d0565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e43660046106f1565b61020b565b3480156100f557600080fd5b506100ad610235565b61010661029b565b61011661011161033a565b610344565b565b610120610368565b6001600160a01b0316336001600160a01b03161415610157576101548160405180602001604052806000815250600061039b565b50565b6101546100fe565b610167610368565b6001600160a01b0316336001600160a01b031614156101c8576101c38383838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506001925061039b915050565b505050565b6101c36100fe565b60006101da610368565b6001600160a01b0316336001600160a01b03161415610200576101fb61033a565b905090565b6102086100fe565b90565b610213610368565b6001600160a01b0316336001600160a01b0316141561015757610154816103c6565b600061023f610368565b6001600160a01b0316336001600160a01b03161415610200576101fb610368565b6060610285838360405180606001604052806027815260200161080b6027913961041a565b9392505050565b6001600160a01b03163b151590565b6102a3610368565b6001600160a01b0316336001600160a01b031614156101165760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b60006101fb6104f7565b3660008037600080366000845af43d6000803e808015610363573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b6103a48361051f565b6000825111806103b15750805b156101c3576103c08383610260565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103ef610368565b604080516001600160a01b03928316815291841660208301520160405180910390a16101548161055f565b60606001600160a01b0384163b6104825760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610331565b600080856001600160a01b03168560405161049d91906107bb565b600060405180830381855af49150503d80600081146104d8576040519150601f19603f3d011682016040523d82523d6000602084013e6104dd565b606091505b50915091506104ed828286610608565b9695505050505050565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61038c565b61052881610641565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6001600160a01b0381166105c45760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b6064820152608401610331565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b60608315610617575081610285565b8251156106275782518084602001fd5b8160405162461bcd60e51b815260040161033191906107d7565b6001600160a01b0381163b6106ae5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610331565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6105e7565b80356001600160a01b03811681146106ec57600080fd5b919050565b60006020828403121561070357600080fd5b610285826106d5565b60008060006040848603121561072157600080fd5b61072a846106d5565b9250602084013567ffffffffffffffff8082111561074757600080fd5b818601915086601f83011261075b57600080fd5b81358181111561076a57600080fd5b87602082850101111561077c57600080fd5b6020830194508093505050509250925092565b60005b838110156107aa578181015183820152602001610792565b838111156103c05750506000910152565b600082516107cd81846020870161078f565b9190910192915050565b60208152600082518060208401526107f681604085016020870161078f565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212202d8aef871a7506c5a3b3c27bcde2c65544a40c9d05e5fba361c75671607f864e64736f6c634300080c0033","storage":{"0x0":"0x1","0x33":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","0x65":"0xe7f1725e7734ce288f8367e1bb143e90bb3f0512","0x66":"0x0","0x97":"0x831f01b2aeb61d5d8c019704e62c25763057a8806c5c790bc8b4c99ee54ac8a7","0x9d":"0x1","0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc":"0xb7f8bc63bbcad18155201308c8f3540b07f84f5e","0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103":"0x5fbdb2315678afecb367f032d93f642f64180aa3","0xbf99e46535d3d55254422485a81ef89fb17142d8ad8144fcf02a6a4b9ac9f8e0":"0x860b6912c2d0337ef05bbc89b0c2cb6cbaeab4a5","0xd4c372f4124946d62b3adf99f94e072822ac8e56bc1b56fc1bcb0046127fe9b6":"0x860b6912c2d0337ef05bbc89b0c2cb6cbaeab4a5","0xd4c372f4124946d62b3adf99f94e072822ac8e56bc1b56fc1bcb0046127fe9b7":"0x0","0xf2fb818edda125e7fb93ac1bad32b4f9aa22d76c0234181862d9d9a2ee6e5d08":"0x64"}},"0xdc64a140aa3e981100a9beca4e685f962f0cf6c9":{"nonce":1,"balance":"0x0","code":"0x60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b6100803660046106f1565b610118565b61005b61009336600461070c565b61015f565b3480156100a457600080fd5b506100ad6101d0565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e43660046106f1565b61020b565b3480156100f557600080fd5b506100ad610235565b61010661029b565b61011661011161033a565b610344565b565b610120610368565b6001600160a01b0316336001600160a01b03161415610157576101548160405180602001604052806000815250600061039b565b50565b6101546100fe565b610167610368565b6001600160a01b0316336001600160a01b031614156101c8576101c38383838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506001925061039b915050565b505050565b6101c36100fe565b60006101da610368565b6001600160a01b0316336001600160a01b03161415610200576101fb61033a565b905090565b6102086100fe565b90565b610213610368565b6001600160a01b0316336001600160a01b0316141561015757610154816103c6565b600061023f610368565b6001600160a01b0316336001600160a01b03161415610200576101fb610368565b6060610285838360405180606001604052806027815260200161080b6027913961041a565b9392505050565b6001600160a01b03163b151590565b6102a3610368565b6001600160a01b0316336001600160a01b031614156101165760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b60006101fb6104f7565b3660008037600080366000845af43d6000803e808015610363573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b6103a48361051f565b6000825111806103b15750805b156101c3576103c08383610260565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103ef610368565b604080516001600160a01b03928316815291841660208301520160405180910390a16101548161055f565b60606001600160a01b0384163b6104825760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610331565b600080856001600160a01b03168560405161049d91906107bb565b600060405180830381855af49150503d80600081146104d8576040519150601f19603f3d011682016040523d82523d6000602084013e6104dd565b606091505b50915091506104ed828286610608565b9695505050505050565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61038c565b61052881610641565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6001600160a01b0381166105c45760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b6064820152608401610331565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b60608315610617575081610285565b8251156106275782518084602001fd5b8160405162461bcd60e51b815260040161033191906107d7565b6001600160a01b0381163b6106ae5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610331565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6105e7565b80356001600160a01b03811681146106ec57600080fd5b919050565b60006020828403121561070357600080fd5b610285826106d5565b60008060006040848603121561072157600080fd5b61072a846106d5565b9250602084013567ffffffffffffffff8082111561074757600080fd5b818601915086601f83011261075b57600080fd5b81358181111561076a57600080fd5b87602082850101111561077c57600080fd5b6020830194508093505050509250925092565b60005b838110156107aa578181015183820152602001610792565b838111156103c05750506000910152565b600082516107cd81846020870161078f565b9190910192915050565b60208152600082518060208401526107f681604085016020870161078f565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212202d8aef871a7506c5a3b3c27bcde2c65544a40c9d05e5fba361c75671607f864e64736f6c634300080c0033","storage":{"0x0":"0x1","0x33":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","0x65":"0x1","0x97":"0xe7f1725e7734ce288f8367e1bb143e90bb3f0512","0x98":"0x0","0xc9":"0xd65ac9700cec4e530497617d02afdf0d5de3ed18466aca1578edcbce0d40ee16","0xcb":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","0x2787cebc3eceaad2c5ffa9235bceafad371c5d755a4b2472049822fb4f98c4cf":"0x64","0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc":"0xa51c1fc2f0d1a1b8494ed1fe312d7c3a78ed91c0","0x74a9579f8366568b2792a7aa47988633896f9826ad6936da0f98ccff5c8ddab9":"0x0","0xac02fc4b95e25e4d2039d07a7ec79c323d4ec14f0cd7375b739e011a1bc7f187":"0x1","0xb091cfdd42f5e68a258727f8e7e987065f13fa68f4050431c96774a3f7299489":"0x9635f643e140090a9a8dcd712ed6285858cebef","0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103":"0x5fbdb2315678afecb367f032d93f642f64180aa3","0xcc329ef22ac4a9d6ea67500cfb67ca4a1541c91282d785edae460e7275b4b11c":"0x1"}},"0xe7f1725e7734ce288f8367e1bb143e90bb3f0512":{"nonce":1,"balance":"0x0","code":"0x608060405234801561001057600080fd5b506004361061004c5760003560e01c806346fbf68e146100515780638568520614610089578063ce5484281461009e578063eab66d7a146100b1575b600080fd5b61007461005f366004610313565b60006020819052908152604090205460ff1681565b60405190151581526020015b60405180910390f35b61009c610097366004610335565b6100dc565b005b61009c6100ac366004610313565b61011d565b6001546100c4906001600160a01b031681565b6040516001600160a01b039091168152602001610080565b6001546001600160a01b0316331461010f5760405162461bcd60e51b815260040161010690610371565b60405180910390fd5b6101198282610153565b5050565b6001546001600160a01b031633146101475760405162461bcd60e51b815260040161010690610371565b61015081610220565b50565b6001600160a01b0382166101bf5760405162461bcd60e51b815260206004820152602d60248201527f50617573657252656769737472792e5f7365745061757365723a207a65726f2060448201526c1859191c995cdcc81a5b9c1d5d609a1b6064820152608401610106565b6001600160a01b03821660008181526020818152604091829020805460ff19168515159081179091558251938452908301527f65d3a1fd4c13f05cba164f80d03ce90fb4b5e21946bfc3ab7dbd434c2d0b9152910160405180910390a15050565b6001600160a01b03811661028e5760405162461bcd60e51b815260206004820152602f60248201527f50617573657252656769737472792e5f736574556e7061757365723a207a657260448201526e1bc81859191c995cdcc81a5b9c1d5d608a1b6064820152608401610106565b600154604080516001600160a01b03928316815291831660208301527f06b4167a2528887a1e97a366eefe8549bfbf1ea3e6ac81cb2564a934d20e8892910160405180910390a1600180546001600160a01b0319166001600160a01b0392909216919091179055565b80356001600160a01b038116811461030e57600080fd5b919050565b60006020828403121561032557600080fd5b61032e826102f7565b9392505050565b6000806040838503121561034857600080fd5b610351836102f7565b91506020830135801515811461036657600080fd5b809150509250929050565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b60608201526080019056fea2646970667358221220588d79746369ba6bc203e2ed869e37ff985f84ede6a035b19a6fa49703898aa064736f6c634300080c0033","storage":{"0x1":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","0x723077b8a1b173adc35e5f0e7e3662fd1208212cb629f9c128551ea7168da722":"0x1"}},"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266":{"nonce":56,"balance":"0x218ab64d0be30221284","code":"0x","storage":{}},"0xf5059a5d33d5853360d16c683c16e67980206f36":{"nonce":1,"balance":"0x0","code":"0x60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b6100803660046106f1565b610118565b61005b61009336600461070c565b61015f565b3480156100a457600080fd5b506100ad6101d0565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e43660046106f1565b61020b565b3480156100f557600080fd5b506100ad610235565b61010661029b565b61011661011161033a565b610344565b565b610120610368565b6001600160a01b0316336001600160a01b03161415610157576101548160405180602001604052806000815250600061039b565b50565b6101546100fe565b610167610368565b6001600160a01b0316336001600160a01b031614156101c8576101c38383838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506001925061039b915050565b505050565b6101c36100fe565b60006101da610368565b6001600160a01b0316336001600160a01b03161415610200576101fb61033a565b905090565b6102086100fe565b90565b610213610368565b6001600160a01b0316336001600160a01b0316141561015757610154816103c6565b600061023f610368565b6001600160a01b0316336001600160a01b03161415610200576101fb610368565b6060610285838360405180606001604052806027815260200161080b6027913961041a565b9392505050565b6001600160a01b03163b151590565b6102a3610368565b6001600160a01b0316336001600160a01b031614156101165760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b60006101fb6104f7565b3660008037600080366000845af43d6000803e808015610363573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b6103a48361051f565b6000825111806103b15750805b156101c3576103c08383610260565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103ef610368565b604080516001600160a01b03928316815291841660208301520160405180910390a16101548161055f565b60606001600160a01b0384163b6104825760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610331565b600080856001600160a01b03168560405161049d91906107bb565b600060405180830381855af49150503d80600081146104d8576040519150601f19603f3d011682016040523d82523d6000602084013e6104dd565b606091505b50915091506104ed828286610608565b9695505050505050565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61038c565b61052881610641565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6001600160a01b0381166105c45760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b6064820152608401610331565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b60608315610617575081610285565b8251156106275782518084602001fd5b8160405162461bcd60e51b815260040161033191906107d7565b6001600160a01b0381163b6106ae5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610331565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6105e7565b80356001600160a01b03811681146106ec57600080fd5b919050565b60006020828403121561070357600080fd5b610285826106d5565b60008060006040848603121561072157600080fd5b61072a846106d5565b9250602084013567ffffffffffffffff8082111561074757600080fd5b818601915086601f83011261075b57600080fd5b81358181111561076a57600080fd5b87602082850101111561077c57600080fd5b6020830194508093505050509250925092565b60005b838110156107aa578181015183820152602001610792565b838111156103c05750506000910152565b600082516107cd81846020870161078f565b9190910192915050565b60208152600082518060208401526107f681604085016020870161078f565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212202d8aef871a7506c5a3b3c27bcde2c65544a40c9d05e5fba361c75671607f864e64736f6c634300080c0033","storage":{"0x17ef568e3e12ab5b9c7254a8d58478811de00f9e6eb34345acd53bf8fd09d3ec":"0x1","0x295841a49a1089f4b560f91cfbb0133326654dcbb1041861fc5dde96c724a22f":"0x1c000000000000000000000000000000000000000000000000","0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc":"0xe801d84fa97b50751dbf25036d067dcf18858bf","0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103":"0xc3e53f4d16ae77db1c982e75a937b9f60fe63690"}}},"best_block_number":"0x20"} \ No newline at end of file diff --git a/local-interchain/cmd/local-ic/chains.go b/local-interchain/cmd/local-ic/chains.go deleted file mode 100644 index acaa99d2d..000000000 --- a/local-interchain/cmd/local-ic/chains.go +++ /dev/null @@ -1,61 +0,0 @@ -package main - -import ( - "encoding/json" - "fmt" - "os" - "path" - - "github.com/spf13/cobra" -) - -type chains struct { - Configs []string `json:"chain_configs" yaml:"chain_configs"` -} - -var chainsCmd = &cobra.Command{ - Use: "chains [config.(json|yaml)]", - Short: "List all current chains or outputs a current config information", - Args: cobra.RangeArgs(0, 1), - ValidArgsFunction: func(cmd *cobra.Command, args []string, toComplete string) ([]string, cobra.ShellCompDirective) { - return GetFiles(), cobra.ShellCompDirectiveNoFileComp - }, - Run: func(cmd *cobra.Command, args []string) { - chainsDir := path.Join(GetDirectory(), "chains") - - if len(args) == 0 { - configs := chains{GetFiles()} - - bz, _ := json.MarshalIndent(configs, "", " ") - fmt.Printf("%s\n", bz) - } else { - config := args[0] - filePath := path.Join(chainsDir, config) - - fc, err := os.ReadFile(filePath) - if err != nil { - fmt.Println(err) - os.Exit(1) - } - - fmt.Println(string(fc)) - } - }, -} - -func GetFiles() []string { - chainsDir := path.Join(GetDirectory(), "chains") - - files, err := os.ReadDir(chainsDir) - if err != nil { - fmt.Println(err) - os.Exit(1) - } - - var fileNames []string - for _, file := range files { - fileNames = append(fileNames, file.Name()) - } - - return fileNames -} diff --git a/local-interchain/cmd/local-ic/interaction.go b/local-interchain/cmd/local-ic/interaction.go deleted file mode 100644 index 0d2e8a0f3..000000000 --- a/local-interchain/cmd/local-ic/interaction.go +++ /dev/null @@ -1,101 +0,0 @@ -package main - -import ( - "bytes" - "encoding/json" - "fmt" - "io" - "net/http" - "strings" - - "github.com/spf13/cobra" - "github.com/strangelove-ventures/interchaintest/local-interchain/interchain/handlers" -) - -const ( - FlagAPIEndpoint = "api-endpoint" - FlagNodeIndex = "node-index" -) - -func init() { - interactCmd.Flags().String(FlagAPIAddressOverride, "http://127.0.0.1:8080", "override the default API address") - interactCmd.Flags().String(FlagAuthKey, "a", "auth key to use") - interactCmd.Flags().IntP(FlagNodeIndex, "n", 0, "node index to interact with") -} - -var interactCmd = &cobra.Command{ - Use: "interact [chain_id] [interaction] [arguments...]", - Short: "Interact with a node", - Example: ` local-ic interact localcosmos-1 bin 'status --node=%RPC%' --api-endpoint=http://127.0.0.1:8080 - local-ic interact localcosmos-1 query bank balances cosmos1hj5fveer5cjtn4wd6wstzugjfdxzl0xpxvjjvr - local-ic interact localcosmos-1 get_channels - local-ic interact localcosmos-1 relayer-exec rly q channels localcosmos-1 -`, - Args: cobra.MinimumNArgs(2), - Aliases: []string{"i"}, - ValidArgsFunction: func(cmd *cobra.Command, args []string, toComplete string) ([]string, cobra.ShellCompDirective) { - return GetFiles(), cobra.ShellCompDirectiveNoFileComp - }, - Run: func(cmd *cobra.Command, args []string) { - ah := &handlers.ActionHandler{ - ChainId: args[0], - Action: args[1], - } - - if len(args) > 2 { - ah.Cmd = strings.Join(args[2:], " ") - } - - authKey, err := cmd.Flags().GetString(FlagAuthKey) - if err != nil { - panic(err) - } - - nodeIdx, err := cmd.Flags().GetInt(FlagNodeIndex) - if err != nil { - panic(err) - } - - ah.AuthKey = authKey - ah.NodeIndex = nodeIdx - - apiAddr, err := cmd.Flags().GetString(FlagAPIAddressOverride) - if err != nil { - panic(err) - } - - res := makeHttpReq(apiAddr, ah) - fmt.Println(res) - }, -} - -func makeHttpReq(apiEndpoint string, ah *handlers.ActionHandler) string { - client := &http.Client{} - - // curl -X POST -H "Content-Type: application/json" -d '{ - // "chain_id": "localjuno-1", - // "action": "query", - // "cmd": "bank balances juno1hj5fveer5cjtn4wd6wstzugjfdxzl0xps73ftl" - // }' http://127.0.0.1:8080/ - jsonData, err := json.Marshal(ah) - if err != nil { - panic(err) - } - - req, err := http.NewRequest("POST", apiEndpoint, bytes.NewReader(jsonData)) - if err != nil { - panic(err) - } - req.Header.Set("Content-Type", "application/json") - resp, err := client.Do(req) - if err != nil { - panic(err) - } - defer resp.Body.Close() - bodyText, err := io.ReadAll(resp.Body) - if err != nil { - panic(err) - } - - return string(bodyText) -} diff --git a/local-interchain/cmd/local-ic/main.go b/local-interchain/cmd/local-ic/main.go deleted file mode 100644 index 8a1e79052..000000000 --- a/local-interchain/cmd/local-ic/main.go +++ /dev/null @@ -1,31 +0,0 @@ -package main - -import ( - "fmt" - "os" - - "github.com/spf13/cobra" -) - -// set in the Makefile -var Version = "" - -func main() { - rootCmd.AddCommand(chainsCmd) - rootCmd.AddCommand(newChainCmd) - rootCmd.AddCommand(startCmd) - rootCmd.AddCommand(interactCmd) - rootCmd.AddCommand(&cobra.Command{ - Use: "version", - Aliases: []string{"ver"}, - Short: "Print the version of Local-IC", - Run: func(cmd *cobra.Command, args []string) { - fmt.Print(Version) - }, - }) - - if err := rootCmd.Execute(); err != nil { - fmt.Fprintf(os.Stderr, "error while executing your CLI. Err: %v\n", err) - os.Exit(1) - } -} diff --git a/local-interchain/cmd/local-ic/new_chain.go b/local-interchain/cmd/local-ic/new_chain.go deleted file mode 100644 index dd81e9abc..000000000 --- a/local-interchain/cmd/local-ic/new_chain.go +++ /dev/null @@ -1,128 +0,0 @@ -package main - -import ( - "bufio" - "fmt" - "os" - "path" - "reflect" - "strconv" - "strings" - - "github.com/spf13/cobra" - "github.com/strangelove-ventures/interchaintest/local-interchain/interchain/types" - ictypes "github.com/strangelove-ventures/interchaintest/local-interchain/interchain/types" - "github.com/strangelove-ventures/interchaintest/v9/ibc" -) - -var reader = bufio.NewReader(os.Stdin) - -var newChainCmd = &cobra.Command{ - Use: "new-chain ", - Aliases: []string{"new", "new-config"}, - Short: "Create a new chain config", - Args: cobra.ExactArgs(1), - Run: func(cmd *cobra.Command, args []string) { - name := strings.TrimSuffix(args[0], ".json") - filePath := path.Join(GetDirectory(), "chains", fmt.Sprintf("%s.json", name)) - - text, _ := os.ReadFile(filePath) - if len(text) > 0 { - value := getOrDefault(fmt.Sprintf("File %s already exist at this location, override?", name), "false") - if res, _ := strconv.ParseBool(value); !res { - panic(fmt.Sprintf("File %s already exist", filePath)) - } - } - - var config types.ChainsConfig - var chains []ictypes.Chain - - for i := 1; i < 20; i++ { - fmt.Printf("\n===== Creating new chain #%d =====\n", i) - - name := getOrDefault("Name", "cosmos") - chainID := getOrDefault("Chain ID", "localchain-1") - binary := getOrDefault("App Binary", "gaiad") - bech32 := getOrDefault("Bech32 Prefix", "cosmos") - - c := ictypes.NewChainBuilder(name, chainID, binary, "token", bech32) - - denom := getOrDefault("Denom", "utoken") - c.SetDenom(denom) - c.SetGasPrices(getOrDefault("Gas Prices (comma separated)", "0.0"+denom)) - - c.SetIBCPaths(parseIBCPaths(getOrDefault("IBC Paths (comma separated)", ""))) - - c.SetDockerImage(ibc.DockerImage{ - Repository: getOrDefault("Docker Repo", "ghcr.io/strangelove-ventures/heighliner/gaia"), - Version: getOrDefault("Docker Tag / Branch Version", "v16.0.0"), - UIDGID: "1025:1025", - }) - if i == 0 { - c.SetHostPortOverride(types.BaseHostPortOverride()) - } - - if err := c.Validate(); err != nil { - panic(err) - } - - c.SetChainDefaults() - - chains = append(chains, *c) - - res, err := strconv.ParseBool(getOrDefault[string]("\n\n\n === Add more chains? ===", "false")) - if err != nil || !res { - break - } - } - config.Chains = chains - - if err := config.SaveJSON(filePath); err != nil { - panic(err) - } - }, -} - -func parseIBCPaths(input string) []string { - if len(input) == 0 { - return []string{} - } - - return strings.Split(input, ",") -} - -func getOrDefault[T any](output string, defaultVal T) T { - defaultOutput := "" - - defaultType := reflect.TypeOf(defaultVal).Kind() - - switch defaultType { - case reflect.String: - defaultOutput = any(defaultVal).(string) - case reflect.Int: - defaultOutput = strconv.Itoa(any(defaultVal).(int)) - case reflect.Float32, reflect.Float64: - defaultOutput = fmt.Sprintf("%f", any(defaultVal).(float64)) - case reflect.Slice: - if reflect.TypeOf(defaultVal).Elem().Kind() == reflect.String { - defaultOutput = "[]" - } - } - - if defaultOutput == "" && defaultType == reflect.String { - defaultOutput = "''" - } - - fmt.Printf("- %s. (Default %v)\n>>> ", output, defaultOutput) - text, err := reader.ReadString('\n') - - if err != nil || text == "\n" { - return defaultVal - } - - if defaultType == reflect.String { - text = strings.ReplaceAll(text, "\n", "") - } - - return any(text).(T) -} diff --git a/local-interchain/cmd/local-ic/root.go b/local-interchain/cmd/local-ic/root.go deleted file mode 100644 index 60c4cfc89..000000000 --- a/local-interchain/cmd/local-ic/root.go +++ /dev/null @@ -1,77 +0,0 @@ -package main - -import ( - "fmt" - "log" - "os" - "path" - - "github.com/spf13/cobra" -) - -// This must be global for the Makefile to build properly (ldflags). -var MakeFileInstallDirectory string - -var rootCmd = &cobra.Command{ - Use: "local-ic", - Short: "Your local IBC interchain of nodes program", - CompletionOptions: cobra.CompletionOptions{ - HiddenDefaultCmd: true, - }, - Run: func(cmd *cobra.Command, args []string) { - if err := cmd.Help(); err != nil { - log.Fatal(err) - } - }, -} - -func GetDirectory() string { - cwd, err := os.Getwd() - if err != nil { - log.Fatal(err) - } - - p := path.Join(cwd, "chains") - - // if the current directory has the 'chains' folder, use that. If not, use the default location. - if f, _ := os.Stat(p); f != nil && f.IsDir() { - files, err := os.ReadDir(p) - if err != nil { - log.Fatal(err) - } - - if len(files) > 0 { - return cwd - } - } - - // Config variable override for the ICTEST_HOME - if res := os.Getenv("ICTEST_HOME"); res != "" { - MakeFileInstallDirectory = res - } - - if MakeFileInstallDirectory == "" { - homeDir, err := os.UserHomeDir() - if err != nil { - log.Fatal(err) - } - - MakeFileInstallDirectory = path.Join(homeDir, "local-interchain") - } - - if err := directoryRequirementChecks(MakeFileInstallDirectory, "chains"); err != nil { - log.Fatal(err) - } - - return MakeFileInstallDirectory -} - -func directoryRequirementChecks(parent string, subDirectories ...string) error { - for _, subDirectory := range subDirectories { - if _, err := os.Stat(path.Join(parent, subDirectory)); os.IsNotExist(err) { - return fmt.Errorf("%s/ folder not found in %s", subDirectory, parent) - } - } - - return nil -} diff --git a/local-interchain/cmd/local-ic/start_chain.go b/local-interchain/cmd/local-ic/start_chain.go deleted file mode 100644 index 288c50a08..000000000 --- a/local-interchain/cmd/local-ic/start_chain.go +++ /dev/null @@ -1,137 +0,0 @@ -package main - -import ( - "fmt" - "os" - "path" - "path/filepath" - "strings" - - "github.com/spf13/cobra" - "github.com/strangelove-ventures/interchaintest/local-interchain/interchain" - "github.com/strangelove-ventures/interchaintest/local-interchain/interchain/types" - "github.com/strangelove-ventures/interchaintest/v9/ibc" -) - -const ( - FlagAPIAddressOverride = "api-address" - FlagAPIPortOverride = "api-port" - - FlagRelayerImage = "relayer-image" - FlagRelayerVersion = "relayer-version" - FlagRelayerUidGid = "relayer-uidgid" - FlagRelayerStartupFlags = "relayer-startup-flags" - FlagAuthKey = "auth-key" -) - -var startCmd = &cobra.Command{ - Use: "start ", - Aliases: []string{"s", "run"}, - Short: "Starts up the chain of choice with the config name", - Example: `local-ic start base_ibc -ICTEST_HOME=. local-ic start mychain -local-ic start https://gist.githubusercontent.com/Reecepbcups/70bf59c82c797ead9a5430b8b9d8d852/raw/cecc7be35bcec8b976a5d92e78fd6d56de2e1aa1/cosmoshub_localic_config.json -local-ic start https://pastebin.com/raw/Ummk4DTM -`, - Args: cobra.ExactArgs(1), - Run: func(cmd *cobra.Command, args []string) { - configPath := args[0] - isURL := strings.HasPrefix(configPath, "http") - - var ( - parentDir string - config *types.Config - err error - ) - - if path.IsAbs(configPath) { - dir, err := filepath.Abs(configPath) - if err != nil { - panic(err) - } - - parentDir = dir - configPath = filepath.Base(configPath) - } - - if isURL { - config, err = interchain.LoadConfigFromURL(configPath) - if err != nil { - panic(err) - } - - // last part of the URL to be the test name - configPath = configPath[strings.LastIndex(configPath, "/")+1:] - } else { - parentDir = GetDirectory() - - configPath, err = GetConfigWithExtension(parentDir, configPath) - if err != nil { - panic(err) - } - - config, err = interchain.LoadConfig(parentDir, configPath) - if err != nil { - panic(err) - } - } - - apiAddr, _ := cmd.Flags().GetString(FlagAPIAddressOverride) - apiPort, _ := cmd.Flags().GetUint16(FlagAPIPortOverride) - - relayerImg := cmd.Flag(FlagRelayerImage).Value.String() - relayerVer := cmd.Flag(FlagRelayerVersion).Value.String() - relayerUidGid := cmd.Flag(FlagRelayerUidGid).Value.String() - relayerFlags := strings.Split(cmd.Flag(FlagRelayerStartupFlags).Value.String(), " ") - - interchain.StartChain(parentDir, configPath, &types.AppStartConfig{ - Address: apiAddr, - Port: apiPort, - Cfg: config, - - Relayer: types.Relayer{ - DockerImage: ibc.DockerImage{ - Repository: relayerImg, - Version: relayerVer, - UIDGID: relayerUidGid, - }, - StartupFlags: relayerFlags, - }, - - AuthKey: cmd.Flag(FlagAuthKey).Value.String(), - }) - }, -} - -// GetConfigWithExtension returns the config with the file extension attached if one was not provided. -// If "hub" is passed it, it will search for hub.yaml, hub.yml, or hub.json. -// If an extension is already applied, it will use that. -func GetConfigWithExtension(parentDir, config string) (string, error) { - if path.Ext(config) != "" { - return config, nil - } - - extensions := []string{".yaml", ".yml", ".json"} - for _, ext := range extensions { - fp := path.Join(parentDir, interchain.ChainDir, config+ext) - if _, err := os.Stat(fp); err != nil { - continue - } - - return config + ext, nil - } - - return "", fmt.Errorf("could not find a file with an accepted extension: %s. (%+v)", config, extensions) -} - -func init() { - startCmd.Flags().String(FlagAPIAddressOverride, "127.0.0.1", "override the default API address") - startCmd.Flags().Uint16(FlagAPIPortOverride, 8080, "override the default API port") - - startCmd.Flags().String(FlagRelayerImage, "ghcr.io/cosmos/relayer", "override the docker relayer image") - startCmd.Flags().String(FlagRelayerVersion, "latest", "override the default relayer version") - startCmd.Flags().String(FlagRelayerUidGid, "100:1000", "override the default image UID:GID") - startCmd.Flags().String(FlagRelayerStartupFlags, "--block-history=100", "override the default relayer startup flags") - - startCmd.Flags().String(FlagAuthKey, "", "require an auth key to use the internal API") -} diff --git a/local-interchain/contracts/cw_ibc_example.wasm b/local-interchain/contracts/cw_ibc_example.wasm deleted file mode 100644 index 43448ef74f96a08a8e5677d0b25ecad9f2d0cdcf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 201305 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 VxNz=DM3_dA%328FFJxp}1L1n(~{P;SnQ9hnA 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 - ---- - -# REST API - -## Defaults - -By default, the API is served at . You can modify this before starting the binary with `--api-address` and `--api-port`. - -## Environment Variables - -`%RPC%`, `%HOME%`, and `%CHAIN_ID%` are supported in the configuration files and in this API anywhere. These are replaced with the chain's RPC address, the chain's home directory, and the chain's ID respectively. Useful for transactions and queries which may require such data. - ---- - -## Actions - -Local-Interchain supports the following list of actions on any node or relayer. These are all done through POST requests to the API, even if they are just fetching data. - -**NOTE** Action values may change in the future. Refer to [the API handler](../interchain/handlers/actions.go) for the latest options. - -## Node Actions - -### Chain Query - -- action values: "q", "query" -- Executes a query action on a specified chain. - -### App Binary - -- action values: "b", "bin", "binary" -- Description: Executes a binary action on the specified chain (ex: appd). - -### Execute - -- action values: "e", "exec", "execute" -- Description: Executes a general Linux action on the specified chain's docker instance (ex: ls -la). - -## Relaying Actions - -### Relayer Execution - -- action values: "relayer", "relayer-exec", "relayer_exec", "relayerExec" -- Description: Executes a relayer-specific action on the specified chain. - -### Stop Relayer - -- action values: "stop-relayer", "stop_relayer", "stopRelayer" -- Description: Stops the relayer associated with the specified chain. - -### Start Relayer - -- action values: "start-relayer", "start_relayer", "startRelayer" -- Description: Starts the relayer associated with the specified chain. - -### Get Channels - -- action values: "get_channels", "get-channels", "getChannels" -- Description: Retrieves the channels for the specified chain using the relayer. - ---- - -## Using Actions - -The following examples use the [chains/base.json](../chains/base.json) chain example (`local-ic start base`) - -### Unix Curl Command - - -```bash -# Get the total supply -curl -X POST -H "Content-Type: application/json" -d '{ - "chain_id": "localjuno-1", - "action": "query", - "cmd": "bank total" -}' http://127.0.0.1:8080/ -# {"supply":[{"denom":"ujuno","amount":"110020857635458"}],"pagination":{"next_key":null,"total":"0"}} - - -# Set the config for a chain's transactions to always use keyring-backend test -# as the default. (Persist for the entire runtime of a session) -curl -X POST -H "Content-Type: application/json" -d '{ - "chain_id": "localjuno-1", - "action": "binary", - "cmd": "config keyring-backend test" -}' http://127.0.0.1:8080/ - - -# Execute a Tx sending funds -# The key here 'acc0' was set by name in the genesis section of the chain's config. -curl -X POST -H "Content-Type: application/json" -d '{ - "chain_id": "localjuno-1", - "action": "binary", - "cmd": "tx bank send acc0 juno10r39fueph9fq7a6lgswu4zdsg8t3gxlq670lt0 500ujuno --fees 5000ujuno --node %RPC% --chain-id=%CHAIN_ID% --yes --output json" -}' http://127.0.0.1:8080/ - - -# Querying said Tx hash returned from above. -# NOTE: -# - the cmd does not require 'query' (or 'q') as it is added automatically. -# - This Tx hash will not be available on your machine. -curl -X POST -H "Content-Type: application/json" -d '{ - "chain_id": "localjuno-1", - "action": "query", - "cmd": "tx 7C68B0E0AFF733D93636BAD69D645B11C9C11C5C883394E99658BFCC05BF20DD" -}' http://127.0.0.1:8080/ -``` - -### Python Client - -A full Python client can be found in the [python folder](../python/). This is just a snippet of code for example purposes. - -```python -# local-ic start juno_ibc - -import httpx # pip install httpx - -api = "http://127.0.0.1:8080/" - -# Pushes through any packets pending on channel-0 (both ways) -print( - httpx.post( - api, - json={ - "chain_id": "localjuno-1", - "action": "relayer-exec", - "cmd": "rly transact flush juno-ibc-1 channel-0", - }, - ).text -) - -# Queries all channels on the localjuno-1 chain -# returning a JSON object of them -print( - httpx.post( - api, - json={ - "chain_id": "localjuno-1", - "action": "relayer-exec", - "cmd": "rly q channels localjuno-1", - }, - ).json() -) -# {'chain_id': 'localjuno-1', 'channel_id': 'channel-0', 'client_id': '07-tendermint-0', 'connection_hops': ['connection-0'], 'counterparty': {'chain_id': 'localjuno-2', 'channel_id': 'channel-0', 'client_id': '07-tendermint-0', 'connection_id': 'connection-0', 'port_id': 'transfer'}, 'ordering': 'ORDER_UNORDERED', 'port_id': 'transfer', 'state': 'STATE_OPEN', 'version': 'ics20-1'} - -``` - \ No newline at end of file diff --git a/local-interchain/docs/WINDOWS.md b/local-interchain/docs/WINDOWS.md deleted file mode 100644 index 8dbca0a63..000000000 --- a/local-interchain/docs/WINDOWS.md +++ /dev/null @@ -1,113 +0,0 @@ -# Setup Windows Environment to Run Local Interchain - -This is a step-by-step guide to setup a Windows environment and add the missing dependencies to run Local Interchain - -**Local Interchain enables developers to :-** -- Quickly spin up a local testnet for any wasm chain. -- Test IBC connection compatibility on a high level between multiple local chains. -- Execute binary commands such as `tx decode` *[see example](../python/api_test.py)*. -- Store and execute wasm smart contracts *[see example](../python/daodao.py)*. -- Local RPC node + REST API which enables building scripts with any language. -- Configure chains to be launched within the testing environment, adjusting parameters such as gas options, number of validators, IBC paths, governance parameters, genesis accounts, and much more. -- Configure IBC relayers. - -Local Interchain is the optimal playground for developers to flexibly test chain infrastructure and smart contract development. - -This guide aims to configure a Windows OS environment to be compatible with Local Interchain. - -This will allow wasm chains to run locally on a Windows system which has been unprecedented until now. - -## Requirements - -1. Make sure the Windows version is compatible with [Docker](https://www.docker.com/). - -**Windows Desktop**: Win 7 or higher - -**Windows Server**: Windows Server 2016 or higher - -2. Enable Virtualization. -You can check if Virtualization is enabled by opening Task Manager and going to Performance as shown below. -If your Windows system is missing Hyper-V, you can follow [this guide](https://www.nakivo.com/blog/install-configure-hyper-v-manager/) to install and enable it. -![](https://i.imgur.com/8A6fRu0.png) - -3. Permissions to run software installers and write to Program Files. - -## Environment Setup - -### 1. Installing Docker -Make sure you have wsl installed, you can check by running **Windows PowerShell** as administrator and running `wsl --install` which would install wsl2 if missing. - -For Win 10 and Win 11, follow [this guide](https://docs.docker.com/desktop/install/windows-install/) to setup and install Docker Desktop on your Windows system. - -For Windows Server, Win 7 and Win 8/8.1, use this [installation guide](https://github.com/microsoft/docker/blob/master/docs/installation/windows.md) for installing Docker Toolbox. - -Confirm docker setup by running `docker version` in a cmd or a shell. - -### 2. Installing Git -In case, you do not have Git already installed, use [this link](https://git-scm.com/download/win) to setup Git on Windows. - -After installation, you will be able to run `git --version` in a cmd or a shell. - -*Note: The guide assumes you installed Git under C:/Program Files/Git. If you have chosen a different installation location then use it instead.* - -### 3. Installing Go -If you already have Go installed, run `go version` and make sure it is version1.19 or higher. - -In case, you have an older version or do not have Golang installed, go to [golang downloads](https://go.dev/dl/) and download the featured Windows installer *.wsi* - -After installation, open a new cmd or shell, and you will be able to run `go version` - -### 4. Downloading Make -Make is a tool which controls the generation of executables and other non-source files of a program from the source files. It is necessary for building *`makefiles`*. - -Make does not come with Windows, so we need to download the make binary which you can find provided by GNU [here](https://www.gnu.org/software/make/) and download the Binaries zip, or go to [this link](https://sourceforge.net/projects/gnuwin32/files/make/3.81/make-3.81-bin.zip/download?use_mirror=kent&download=) directly and begin downloading. - -1. Extract the downloaded zip file -2. Go to the *`bin`* folder, copy *`make.exe`* -3. Go to *`C:/Program Files/Git/mingw64/bin`* and paste *`make.exe`* -4. Through the control panel or your start menu, search and go to **Edit the system environment variables**, on Advanced tab, click Environment Variables, click Path and choose Edit, and add `C:\Program Files\Git\mingw64\bin` - -![](https://i.imgur.com/dyK2YMm.png) - -After finishing the steps above, open a new cmd or shell, and you will be able to run `make --version` - -### 5. Installing GCC -GCC is the GNU compiler collection and it is necessary for compiling [cgo](https://pkg.go.dev/cmd/cgo). - -GCC does not come with Windows, and the best compatible setup I've found was using [this guide](https://www.guru99.com/c-gcc-install.html) which works on both Windows Server and Windows Desktop including Win 11. - -1. Go to [codeblocks](http://www.codeblocks.org/downloads/binaries/) and select the Windows option, then download the `mingw-setup.exe` binary. -2. Start installation. -3. Keep default component selection. - -![](https://i.imgur.com/EeZUeJU.png) - -4. Choose installation folder and click Install. - -![](https://i.imgur.com/D25unIm.png) - -5. After installation, no need to run *Code::Blocks* and click Next then Finish. - -![](https://i.imgur.com/rvJmv9t.png) - -6. Go to your installation folder i.e. *`C:\Program Files\CodeBlocks\MinGW\bin`* and you should find **gcc.exe** -7. Through the control panel or your start menu, search and go to **Edit the system environment variables**, on Advanced tab, click Environment Variables, click Path and choose Edit, and add `C:\Program Files\CodeBlocks\MinGW\bin` (choose the path from step 4 + \MinGW\bin) - -After finishing the steps above, open a new cmd or shell, and you will be able to run `gcc --version` - -## Running Local Interchain - -1. Start the docker daemon by running **Docker Desktop** on Win 10/11 or using [**Docker Quickstart Terminal**](https://github.com/microsoft/docker/blob/master/docs/installation/windows.md#using-the-docker-quickstart-terminal) if you have installed Docker Toolbox. -2. Clone the Local Interchain Repo. -```bash -git clone https://github.com/strangelove-ventures/interchaintest.git -cd interchaintest/local-interchain -``` -3. Run `make install` -4. Run `local-ic start base.json` - -Wait for it to set up and go to *https://127.0.0.1:8080/info*, you should see each local chain running in its own docker container `docker ps` - -Now you are running a complete local wasm IBC-connected environment on a Windows operating system. - -Happy building! diff --git a/local-interchain/go.mod b/local-interchain/go.mod deleted file mode 100644 index 680bd4411..000000000 --- a/local-interchain/go.mod +++ /dev/null @@ -1,292 +0,0 @@ -module github.com/strangelove-ventures/interchaintest/local-interchain - -go 1.22.5 - -toolchain go1.23.0 - -replace ( - github.com/ChainSafe/go-schnorrkel => github.com/ChainSafe/go-schnorrkel v0.0.0-20200405005733-88cbf1b4c40d - github.com/ChainSafe/go-schnorrkel/1 => github.com/ChainSafe/go-schnorrkel v1.0.0 - github.com/btcsuite/btcd => github.com/btcsuite/btcd v0.22.2 //indirect - // cometbft API breaking change fix - github.com/btcsuite/btcd/btcec/v2 => github.com/btcsuite/btcd/btcec/v2 v2.3.3 - github.com/gogo/protobuf => github.com/regen-network/protobuf v1.3.3-alpha.regen.1 - github.com/strangelove-ventures/interchaintest/v8 v8.0.0-00010101000000-000000000000 => ../ - github.com/vedhavyas/go-subkey => github.com/strangelove-ventures/go-subkey v1.0.7 -) - -require ( - cosmossdk.io/math v1.3.0 - github.com/cosmos/cosmos-sdk v0.50.9 - github.com/cosmos/go-bip39 v1.0.0 - github.com/docker/docker v24.0.9+incompatible - github.com/go-playground/validator v9.31.0+incompatible - github.com/google/uuid v1.6.0 - github.com/gorilla/handlers v1.5.2 - github.com/gorilla/mux v1.8.1 - github.com/spf13/cobra v1.8.1 - github.com/strangelove-ventures/interchaintest/v8 v8.0.0-00010101000000-000000000000 - github.com/stretchr/testify v1.9.0 - go.uber.org/zap v1.27.0 - gopkg.in/yaml.v3 v3.0.1 - -) - -require ( - cloud.google.com/go v0.112.1 // indirect - cloud.google.com/go/compute/metadata v0.3.0 // indirect - cloud.google.com/go/iam v1.1.6 // indirect - cloud.google.com/go/storage v1.38.0 // indirect - cosmossdk.io/api v0.7.5 // indirect - cosmossdk.io/collections v0.4.0 // indirect - cosmossdk.io/core v0.11.1 // indirect - cosmossdk.io/depinject v1.0.0 // indirect - cosmossdk.io/errors v1.0.1 // indirect - cosmossdk.io/log v1.3.1 // indirect - cosmossdk.io/store v1.1.0 // indirect - cosmossdk.io/x/evidence v0.1.0 // indirect - cosmossdk.io/x/feegrant v0.1.0 // indirect - cosmossdk.io/x/tx v0.13.4 // indirect - cosmossdk.io/x/upgrade v0.1.4 // indirect - filippo.io/edwards25519 v1.0.0 // indirect - github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 // indirect - github.com/99designs/keyring v1.2.2 // indirect - github.com/BurntSushi/toml v1.4.0 // indirect - github.com/ChainSafe/go-schnorrkel v0.0.0-20200405005733-88cbf1b4c40d // indirect - github.com/ChainSafe/go-schnorrkel/1 v0.0.0-00010101000000-000000000000 // indirect - github.com/ComposableFi/go-subkey/v2 v2.0.0-tm03420 // indirect - github.com/DataDog/datadog-go v3.2.0+incompatible // indirect - github.com/DataDog/zstd v1.5.5 // indirect - github.com/FactomProject/basen v0.0.0-20150613233007-fe3947df716e // indirect - github.com/FactomProject/btcutilecc v0.0.0-20130527213604-d3a63a5752ec // indirect - github.com/Microsoft/go-winio v0.6.2 // indirect - github.com/StackExchange/wmi v1.2.1 // indirect - github.com/StirlingMarketingGroup/go-namecase v1.0.0 // indirect - github.com/avast/retry-go/v4 v4.5.1 // indirect - github.com/aws/aws-sdk-go v1.44.224 // indirect - github.com/beorn7/perks v1.0.1 // indirect - github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d // indirect - github.com/bgentry/speakeasy v0.1.1-0.20220910012023-760eaf8b6816 // indirect - github.com/bits-and-blooms/bitset v1.10.0 // indirect - github.com/btcsuite/btcd v0.22.1 // indirect - github.com/btcsuite/btcd/btcec/v2 v2.3.4 // indirect - github.com/cenkalti/backoff/v4 v4.1.3 // indirect - github.com/cespare/xxhash/v2 v2.3.0 // indirect - github.com/chzyer/readline v1.5.1 // indirect - github.com/cockroachdb/errors v1.11.3 // indirect - github.com/cockroachdb/fifo v0.0.0-20240606204812-0bbfbd93a7ce // indirect - github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b // indirect - github.com/cockroachdb/pebble v1.1.1 // indirect - github.com/cockroachdb/redact v1.1.5 // indirect - github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06 // indirect - github.com/cometbft/cometbft v0.38.11 // indirect - github.com/cometbft/cometbft-db v0.14.0 // indirect - github.com/consensys/bavard v0.1.13 // indirect - github.com/consensys/gnark-crypto v0.12.1 // indirect - github.com/cosmos/btcutil v1.0.5 // indirect - github.com/cosmos/cosmos-db v1.0.2 // indirect - github.com/cosmos/cosmos-proto v1.0.0-beta.5 // indirect - github.com/cosmos/gogogateway v1.2.0 // indirect - github.com/cosmos/gogoproto v1.5.0 // indirect - github.com/cosmos/iavl v1.1.2 // indirect - github.com/cosmos/ibc-go/modules/capability v1.0.1 // indirect - github.com/cosmos/ibc-go/v8 v8.4.0 // indirect - github.com/cosmos/ics23/go v0.10.0 // indirect - github.com/cosmos/interchain-security/v5 v5.1.1 // indirect - github.com/cosmos/ledger-cosmos-go v0.13.3 // indirect - github.com/crate-crypto/go-kzg-4844 v1.0.0 // indirect - github.com/danieljoos/wincred v1.1.2 // indirect - github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect - github.com/deckarep/golang-set v1.8.0 // indirect - github.com/deckarep/golang-set/v2 v2.6.0 // indirect - github.com/decred/base58 v1.0.4 // indirect - github.com/decred/dcrd/crypto/blake256 v1.0.1 // indirect - github.com/decred/dcrd/dcrec/secp256k1/v2 v2.0.1 // indirect - github.com/decred/dcrd/dcrec/secp256k1/v4 v4.2.0 // indirect - github.com/desertbit/timer v0.0.0-20180107155436-c41aec40b27f // indirect - github.com/dgraph-io/badger/v4 v4.2.0 // indirect - github.com/dgraph-io/ristretto v0.1.1 // indirect - github.com/docker/distribution v2.8.2+incompatible // indirect - github.com/docker/go-connections v0.5.0 // indirect - github.com/docker/go-units v0.5.0 // indirect - github.com/dustin/go-humanize v1.0.1 // indirect - github.com/dvsekhvalnov/jose2go v1.6.0 // indirect - github.com/emicklei/dot v1.6.1 // indirect - github.com/ethereum/c-kzg-4844 v1.0.0 // indirect - github.com/ethereum/go-ethereum v1.14.8 // indirect - github.com/fatih/color v1.16.0 // indirect - github.com/felixge/httpsnoop v1.0.4 // indirect - github.com/fsnotify/fsnotify v1.7.0 // indirect - github.com/getsentry/sentry-go v0.27.0 // indirect - github.com/go-kit/kit v0.12.0 // indirect - github.com/go-kit/log v0.2.1 // indirect - github.com/go-logfmt/logfmt v0.6.0 // indirect - github.com/go-logr/logr v1.4.1 // indirect - github.com/go-logr/stdr v1.2.2 // indirect - github.com/go-ole/go-ole v1.3.0 // indirect - github.com/go-playground/locales v0.14.0 // indirect - github.com/go-playground/universal-translator v0.18.0 // indirect - github.com/gobwas/httphead v0.1.0 // indirect - github.com/gobwas/pool v0.2.1 // indirect - github.com/godbus/dbus v0.0.0-20190726142602-4481cbc300e2 // indirect - github.com/gogo/googleapis v1.4.1 // indirect - github.com/gogo/protobuf v1.3.3 // indirect - github.com/golang/glog v1.2.1 // indirect - github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect - github.com/golang/mock v1.6.0 // indirect - github.com/golang/protobuf v1.5.4 // indirect - github.com/golang/snappy v0.0.5-0.20220116011046-fa5810519dcb // indirect - github.com/google/btree v1.1.2 // indirect - github.com/google/flatbuffers v1.12.1 // indirect - github.com/google/go-cmp v0.6.0 // indirect - github.com/google/orderedcode v0.0.1 // indirect - github.com/google/s2a-go v0.1.7 // indirect - github.com/googleapis/enterprise-certificate-proxy v0.3.2 // indirect - github.com/googleapis/gax-go/v2 v2.12.3 // indirect - github.com/gorilla/websocket v1.5.0 // indirect - github.com/grpc-ecosystem/go-grpc-middleware v1.4.0 // indirect - github.com/grpc-ecosystem/grpc-gateway v1.16.0 // indirect - github.com/gsterjov/go-libsecret v0.0.0-20161001094733-a6f4afe4910c // indirect - github.com/gtank/merlin v0.1.1 // indirect - github.com/gtank/ristretto255 v0.1.2 // indirect - github.com/hashicorp/go-cleanhttp v0.5.2 // indirect - github.com/hashicorp/go-getter v1.7.4 // indirect - github.com/hashicorp/go-hclog v1.5.0 // indirect - github.com/hashicorp/go-immutable-radix v1.3.1 // indirect - github.com/hashicorp/go-metrics v0.5.3 // indirect - github.com/hashicorp/go-plugin v1.5.2 // indirect - github.com/hashicorp/go-safetemp v1.0.0 // indirect - github.com/hashicorp/go-version v1.7.0 // indirect - github.com/hashicorp/golang-lru v1.0.2 // indirect - github.com/hashicorp/golang-lru/v2 v2.0.7 // indirect - github.com/hashicorp/hcl v1.0.0 // indirect - github.com/hashicorp/yamux v0.1.1 // indirect - github.com/hdevalence/ed25519consensus v0.1.0 // indirect - github.com/holiman/uint256 v1.3.1 // indirect - github.com/huandu/skiplist v1.2.0 // indirect - github.com/iancoleman/strcase v0.3.0 // indirect - github.com/icza/dyno v0.0.0-20220812133438-f0b6f8a18845 // indirect - github.com/improbable-eng/grpc-web v0.15.0 // indirect - github.com/inconshreveable/mousetrap v1.1.0 // indirect - github.com/ipfs/go-cid v0.4.1 // indirect - github.com/jmespath/go-jmespath v0.4.0 // indirect - github.com/jmhodges/levigo v1.0.0 // indirect - github.com/klauspost/compress v1.17.7 // indirect - github.com/klauspost/cpuid/v2 v2.2.7 // indirect - github.com/kr/pretty v0.3.1 // indirect - github.com/kr/text v0.2.0 // indirect - github.com/leodido/go-urn v1.2.1 // indirect - github.com/lib/pq v1.10.7 // indirect - github.com/libp2p/go-buffer-pool v0.1.0 // indirect - github.com/libp2p/go-libp2p v0.31.0 // indirect - github.com/linxGnu/grocksdb v1.8.14 // indirect - github.com/magiconair/properties v1.8.7 // indirect - github.com/manifoldco/promptui v0.9.0 // indirect - github.com/mattn/go-colorable v0.1.13 // indirect - github.com/mattn/go-isatty v0.0.20 // indirect - github.com/mimoo/StrobeGo v0.0.0-20220103164710-9a04d6ca976b // indirect - github.com/minio/highwayhash v1.0.2 // indirect - github.com/minio/sha256-simd v1.0.1 // indirect - github.com/misko9/go-substrate-rpc-client/v4 v4.0.0-20240603204351-26b456ae3afe // indirect - github.com/mitchellh/go-homedir v1.1.0 // indirect - github.com/mitchellh/go-testing-interface v1.14.1 // indirect - github.com/mitchellh/mapstructure v1.5.0 // indirect - github.com/mmcloughlin/addchain v0.4.0 // indirect - github.com/mr-tron/base58 v1.2.0 // indirect - github.com/mtibben/percent v0.2.1 // indirect - github.com/multiformats/go-base32 v0.1.0 // indirect - github.com/multiformats/go-base36 v0.2.0 // indirect - github.com/multiformats/go-multiaddr v0.11.0 // indirect - github.com/multiformats/go-multibase v0.2.0 // indirect - github.com/multiformats/go-multicodec v0.9.0 // indirect - github.com/multiformats/go-multihash v0.2.3 // indirect - github.com/multiformats/go-varint v0.0.7 // indirect - github.com/ncruces/go-strftime v0.1.9 // indirect - github.com/oasisprotocol/curve25519-voi v0.0.0-20230904125328-1f23a7beb09a // indirect - github.com/oklog/run v1.1.0 // indirect - github.com/opencontainers/go-digest v1.0.0 // indirect - github.com/opencontainers/image-spec v1.1.0-rc2 // indirect - github.com/pelletier/go-toml v1.9.5 // indirect - github.com/pelletier/go-toml/v2 v2.2.2 // indirect - github.com/petermattis/goid v0.0.0-20231207134359-e60b3f734c67 // indirect - github.com/pierrec/xxHash v0.1.5 // indirect - github.com/pkg/errors v0.9.1 // indirect - github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect - github.com/prometheus/client_golang v1.19.0 // indirect - github.com/prometheus/client_model v0.6.1 // indirect - github.com/prometheus/common v0.52.2 // indirect - github.com/prometheus/procfs v0.13.0 // indirect - github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 // indirect - github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec // indirect - github.com/rogpeppe/go-internal v1.12.0 // indirect - github.com/rs/cors v1.8.3 // indirect - github.com/rs/zerolog v1.32.0 // indirect - github.com/sagikazarmark/locafero v0.4.0 // indirect - github.com/sagikazarmark/slog-shim v0.1.0 // indirect - github.com/sasha-s/go-deadlock v0.3.1 // indirect - github.com/shirou/gopsutil v3.21.4-0.20210419000835-c7a38de76ee5+incompatible // indirect - github.com/sourcegraph/conc v0.3.0 // indirect - github.com/spaolacci/murmur3 v1.1.0 // indirect - github.com/spf13/afero v1.11.0 // indirect - github.com/spf13/cast v1.6.0 // indirect - github.com/spf13/pflag v1.0.5 // indirect - github.com/spf13/viper v1.19.0 // indirect - github.com/subosito/gotenv v1.6.0 // indirect - github.com/supranational/blst v0.3.11 // indirect - github.com/syndtr/goleveldb v1.0.1-0.20220721030215-126854af5e6d // indirect - github.com/tendermint/go-amino v0.16.0 // indirect - github.com/tendermint/tendermint v0.38.0-dev // indirect - github.com/tidwall/btree v1.7.0 // indirect - github.com/tidwall/gjson v1.17.1 // indirect - github.com/tidwall/match v1.1.1 // indirect - github.com/tidwall/pretty v1.2.0 // indirect - github.com/tklauser/go-sysconf v0.3.12 // indirect - github.com/tklauser/numcpus v0.6.1 // indirect - github.com/tyler-smith/go-bip32 v1.0.0 // indirect - github.com/tyler-smith/go-bip39 v1.1.0 // indirect - github.com/ulikunitz/xz v0.5.11 // indirect - github.com/zondax/hid v0.9.2 // indirect - github.com/zondax/ledger-go v0.14.3 // indirect - go.etcd.io/bbolt v1.4.0-alpha.0.0.20240404170359-43604f3112c5 // indirect - go.opencensus.io v0.24.0 // indirect - go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.49.0 // indirect - go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0 // indirect - go.opentelemetry.io/otel v1.24.0 // indirect - go.opentelemetry.io/otel/metric v1.24.0 // indirect - go.opentelemetry.io/otel/trace v1.24.0 // indirect - go.uber.org/multierr v1.11.0 // indirect - golang.org/x/crypto v0.25.0 // indirect - golang.org/x/exp v0.0.0-20240404231335-c0f41cb1a7a0 // indirect - golang.org/x/mod v0.19.0 // indirect - golang.org/x/net v0.27.0 // indirect - golang.org/x/oauth2 v0.20.0 // indirect - golang.org/x/sync v0.7.0 // indirect - golang.org/x/sys v0.22.0 // indirect - golang.org/x/term v0.22.0 // indirect - golang.org/x/text v0.16.0 // indirect - golang.org/x/time v0.5.0 // indirect - golang.org/x/tools v0.23.0 // indirect - google.golang.org/api v0.171.0 // indirect - google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20240528184218-531527333157 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20240709173604-40e1e62336c5 // indirect - google.golang.org/grpc v1.65.0 // indirect - google.golang.org/protobuf v1.34.2 // indirect - gopkg.in/go-playground/assert.v1 v1.2.1 // indirect - gopkg.in/ini.v1 v1.67.0 // indirect - gopkg.in/natefinch/npipe.v2 v2.0.0-20160621034901-c1b8fa8bdcce // indirect - gopkg.in/yaml.v2 v2.4.0 // indirect - gotest.tools/v3 v3.5.1 // indirect - lukechampine.com/blake3 v1.2.1 // indirect - modernc.org/gc/v3 v3.0.0-20240107210532-573471604cb6 // indirect - modernc.org/libc v1.55.3 // indirect - modernc.org/mathutil v1.6.0 // indirect - modernc.org/memory v1.8.0 // indirect - modernc.org/sqlite v1.31.1 // indirect - modernc.org/strutil v1.2.0 // indirect - modernc.org/token v1.1.0 // indirect - nhooyr.io/websocket v1.8.7 // indirect - pgregory.net/rapid v1.1.0 // indirect - rsc.io/tmplfunc v0.0.3 // indirect - sigs.k8s.io/yaml v1.4.0 // indirect -) diff --git a/local-interchain/go.sum b/local-interchain/go.sum deleted file mode 100644 index 60134a3ce..000000000 --- a/local-interchain/go.sum +++ /dev/null @@ -1,1938 +0,0 @@ -cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= -cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= -cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU= -cloud.google.com/go v0.44.1/go.mod h1:iSa0KzasP4Uvy3f1mN/7PiObzGgflwredwwASm/v6AU= -cloud.google.com/go v0.44.2/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY= -cloud.google.com/go v0.45.1/go.mod h1:RpBamKRgapWJb87xiFSdk4g1CME7QZg3uwTez+TSTjc= -cloud.google.com/go v0.46.3/go.mod h1:a6bKKbmY7er1mI7TEI4lsAkts/mkhTSZK8w33B4RAg0= -cloud.google.com/go v0.50.0/go.mod h1:r9sluTvynVuxRIOHXQEHMFffphuXHOMZMycpNR5e6To= -cloud.google.com/go v0.52.0/go.mod h1:pXajvRH/6o3+F9jDHZWQ5PbGhn+o8w9qiu/CffaVdO4= -cloud.google.com/go v0.53.0/go.mod h1:fp/UouUEsRkN6ryDKNW/Upv/JBKnv6WDthjR6+vze6M= -cloud.google.com/go v0.54.0/go.mod h1:1rq2OEkV3YMf6n/9ZvGWI3GWw0VoqH/1x2nd8Is/bPc= -cloud.google.com/go v0.56.0/go.mod h1:jr7tqZxxKOVYizybht9+26Z/gUq7tiRzu+ACVAMbKVk= -cloud.google.com/go v0.57.0/go.mod h1:oXiQ6Rzq3RAkkY7N6t3TcE6jE+CIBBbA36lwQ1JyzZs= -cloud.google.com/go v0.62.0/go.mod h1:jmCYTdRCQuc1PHIIJ/maLInMho30T/Y0M4hTdTShOYc= -cloud.google.com/go v0.65.0/go.mod h1:O5N8zS7uWy9vkA9vayVHs65eM1ubvY4h553ofrNHObY= -cloud.google.com/go v0.72.0/go.mod h1:M+5Vjvlc2wnp6tjzE102Dw08nGShTscUx2nZMufOKPI= -cloud.google.com/go v0.74.0/go.mod h1:VV1xSbzvo+9QJOxLDaJfTjx5e+MePCpCWwvftOeQmWk= -cloud.google.com/go v0.78.0/go.mod h1:QjdrLG0uq+YwhjoVOLsS1t7TW8fs36kLs4XO5R5ECHg= -cloud.google.com/go v0.79.0/go.mod h1:3bzgcEeQlzbuEAYu4mrWhKqWjmpprinYgKJLgKHnbb8= -cloud.google.com/go v0.81.0/go.mod h1:mk/AM35KwGk/Nm2YSeZbxXdrNK3KZOYHmLkOqC2V6E0= -cloud.google.com/go v0.83.0/go.mod h1:Z7MJUsANfY0pYPdw0lbnivPx4/vhy/e2FEkSkF7vAVY= -cloud.google.com/go v0.84.0/go.mod h1:RazrYuxIK6Kb7YrzzhPoLmCVzl7Sup4NrbKPg8KHSUM= -cloud.google.com/go v0.87.0/go.mod h1:TpDYlFy7vuLzZMMZ+B6iRiELaY7z/gJPaqbMx6mlWcY= -cloud.google.com/go v0.90.0/go.mod h1:kRX0mNRHe0e2rC6oNakvwQqzyDmg57xJ+SZU1eT2aDQ= -cloud.google.com/go v0.93.3/go.mod h1:8utlLll2EF5XMAV15woO4lSbWQlk8rer9aLOfLh7+YI= -cloud.google.com/go v0.94.1/go.mod h1:qAlAugsXlC+JWO+Bke5vCtc9ONxjQT3drlTTnAplMW4= -cloud.google.com/go v0.97.0/go.mod h1:GF7l59pYBVlXQIBLx3a761cZ41F9bBH3JUlihCt2Udc= -cloud.google.com/go v0.99.0/go.mod h1:w0Xx2nLzqWJPuozYQX+hFfCSI8WioryfRDzkoI/Y2ZA= -cloud.google.com/go v0.100.2/go.mod h1:4Xra9TjzAeYHrl5+oeLlzbM2k3mjVhZh4UqTZ//w99A= -cloud.google.com/go v0.102.0/go.mod h1:oWcCzKlqJ5zgHQt9YsaeTY9KzIvjyy0ArmiBUgpQ+nc= -cloud.google.com/go v0.102.1/go.mod h1:XZ77E9qnTEnrgEOvr4xzfdX5TRo7fB4T2F4O6+34hIU= -cloud.google.com/go v0.104.0/go.mod h1:OO6xxXdJyvuJPcEPBLN9BJPD+jep5G1+2U5B5gkRYtA= -cloud.google.com/go v0.112.1 h1:uJSeirPke5UNZHIb4SxfZklVSiWWVqW4oXlETwZziwM= -cloud.google.com/go v0.112.1/go.mod h1:+Vbu+Y1UU+I1rjmzeMOb/8RfkKJK2Gyxi1X6jJCZLo4= -cloud.google.com/go/aiplatform v1.22.0/go.mod h1:ig5Nct50bZlzV6NvKaTwmplLLddFx0YReh9WfTO5jKw= -cloud.google.com/go/aiplatform v1.24.0/go.mod h1:67UUvRBKG6GTayHKV8DBv2RtR1t93YRu5B1P3x99mYY= -cloud.google.com/go/analytics v0.11.0/go.mod h1:DjEWCu41bVbYcKyvlws9Er60YE4a//bK6mnhWvQeFNI= -cloud.google.com/go/analytics v0.12.0/go.mod h1:gkfj9h6XRf9+TS4bmuhPEShsh3hH8PAZzm/41OOhQd4= -cloud.google.com/go/area120 v0.5.0/go.mod h1:DE/n4mp+iqVyvxHN41Vf1CR602GiHQjFPusMFW6bGR4= -cloud.google.com/go/area120 v0.6.0/go.mod h1:39yFJqWVgm0UZqWTOdqkLhjoC7uFfgXRC8g/ZegeAh0= -cloud.google.com/go/artifactregistry v1.6.0/go.mod h1:IYt0oBPSAGYj/kprzsBjZ/4LnG/zOcHyFHjWPCi6SAQ= -cloud.google.com/go/artifactregistry v1.7.0/go.mod h1:mqTOFOnGZx8EtSqK/ZWcsm/4U8B77rbcLP6ruDU2Ixk= -cloud.google.com/go/asset v1.5.0/go.mod h1:5mfs8UvcM5wHhqtSv8J1CtxxaQq3AdBxxQi2jGW/K4o= -cloud.google.com/go/asset v1.7.0/go.mod h1:YbENsRK4+xTiL+Ofoj5Ckf+O17kJtgp3Y3nn4uzZz5s= -cloud.google.com/go/asset v1.8.0/go.mod h1:mUNGKhiqIdbr8X7KNayoYvyc4HbbFO9URsjbytpUaW0= -cloud.google.com/go/assuredworkloads v1.5.0/go.mod h1:n8HOZ6pff6re5KYfBXcFvSViQjDwxFkAkmUFffJRbbY= -cloud.google.com/go/assuredworkloads v1.6.0/go.mod h1:yo2YOk37Yc89Rsd5QMVECvjaMKymF9OP+QXWlKXUkXw= -cloud.google.com/go/assuredworkloads v1.7.0/go.mod h1:z/736/oNmtGAyU47reJgGN+KVoYoxeLBoj4XkKYscNI= -cloud.google.com/go/automl v1.5.0/go.mod h1:34EjfoFGMZ5sgJ9EoLsRtdPSNZLcfflJR39VbVNS2M0= -cloud.google.com/go/automl v1.6.0/go.mod h1:ugf8a6Fx+zP0D59WLhqgTDsQI9w07o64uf/Is3Nh5p8= -cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o= -cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE= -cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc= -cloud.google.com/go/bigquery v1.5.0/go.mod h1:snEHRnqQbz117VIFhE8bmtwIDY80NLUZUMb4Nv6dBIg= -cloud.google.com/go/bigquery v1.7.0/go.mod h1://okPTzCYNXSlb24MZs83e2Do+h+VXtc4gLoIoXIAPc= -cloud.google.com/go/bigquery v1.8.0/go.mod h1:J5hqkt3O0uAFnINi6JXValWIb1v0goeZM77hZzJN/fQ= -cloud.google.com/go/bigquery v1.42.0/go.mod h1:8dRTJxhtG+vwBKzE5OseQn/hiydoQN3EedCaOdYmxRA= -cloud.google.com/go/billing v1.4.0/go.mod h1:g9IdKBEFlItS8bTtlrZdVLWSSdSyFUZKXNS02zKMOZY= -cloud.google.com/go/billing v1.5.0/go.mod h1:mztb1tBc3QekhjSgmpf/CV4LzWXLzCArwpLmP2Gm88s= -cloud.google.com/go/binaryauthorization v1.1.0/go.mod h1:xwnoWu3Y84jbuHa0zd526MJYmtnVXn0syOjaJgy4+dM= -cloud.google.com/go/binaryauthorization v1.2.0/go.mod h1:86WKkJHtRcv5ViNABtYMhhNWRrD1Vpi//uKEy7aYEfI= -cloud.google.com/go/cloudtasks v1.5.0/go.mod h1:fD92REy1x5woxkKEkLdvavGnPJGEn8Uic9nWuLzqCpY= -cloud.google.com/go/cloudtasks v1.6.0/go.mod h1:C6Io+sxuke9/KNRkbQpihnW93SWDU3uXt92nu85HkYI= -cloud.google.com/go/compute v0.1.0/go.mod h1:GAesmwr110a34z04OlxYkATPBEfVhkymfTBXtfbBFow= -cloud.google.com/go/compute v1.3.0/go.mod h1:cCZiE1NHEtai4wiufUhW8I8S1JKkAnhnQJWM7YD99wM= -cloud.google.com/go/compute v1.5.0/go.mod h1:9SMHyhJlzhlkJqrPAc839t2BZFTSk6Jdj6mkzQJeu0M= -cloud.google.com/go/compute v1.6.0/go.mod h1:T29tfhtVbq1wvAPo0E3+7vhgmkOYeXjhFvz/FMzPu0s= -cloud.google.com/go/compute v1.6.1/go.mod h1:g85FgpzFvNULZ+S8AYq87axRKuf2Kh7deLqV/jJ3thU= -cloud.google.com/go/compute v1.7.0/go.mod h1:435lt8av5oL9P3fv1OEzSbSUe+ybHXGMPQHHZWZxy9U= -cloud.google.com/go/compute v1.10.0/go.mod h1:ER5CLbMxl90o2jtNbGSbtfOpQKR0t15FOtRsugnLrlU= -cloud.google.com/go/compute/metadata v0.3.0 h1:Tz+eQXMEqDIKRsmY3cHTL6FVaynIjX2QxYC4trgAKZc= -cloud.google.com/go/compute/metadata v0.3.0/go.mod h1:zFmK7XCadkQkj6TtorcaGlCW1hT1fIilQDwofLpJ20k= -cloud.google.com/go/containeranalysis v0.5.1/go.mod h1:1D92jd8gRR/c0fGMlymRgxWD3Qw9C1ff6/T7mLgVL8I= -cloud.google.com/go/containeranalysis v0.6.0/go.mod h1:HEJoiEIu+lEXM+k7+qLCci0h33lX3ZqoYFdmPcoO7s4= -cloud.google.com/go/datacatalog v1.3.0/go.mod h1:g9svFY6tuR+j+hrTw3J2dNcmI0dzmSiyOzm8kpLq0a0= -cloud.google.com/go/datacatalog v1.5.0/go.mod h1:M7GPLNQeLfWqeIm3iuiruhPzkt65+Bx8dAKvScX8jvs= -cloud.google.com/go/datacatalog v1.6.0/go.mod h1:+aEyF8JKg+uXcIdAmmaMUmZ3q1b/lKLtXCmXdnc0lbc= -cloud.google.com/go/dataflow v0.6.0/go.mod h1:9QwV89cGoxjjSR9/r7eFDqqjtvbKxAK2BaYU6PVk9UM= -cloud.google.com/go/dataflow v0.7.0/go.mod h1:PX526vb4ijFMesO1o202EaUmouZKBpjHsTlCtB4parQ= -cloud.google.com/go/dataform v0.3.0/go.mod h1:cj8uNliRlHpa6L3yVhDOBrUXH+BPAO1+KFMQQNSThKo= -cloud.google.com/go/dataform v0.4.0/go.mod h1:fwV6Y4Ty2yIFL89huYlEkwUPtS7YZinZbzzj5S9FzCE= -cloud.google.com/go/datalabeling v0.5.0/go.mod h1:TGcJ0G2NzcsXSE/97yWjIZO0bXj0KbVlINXMG9ud42I= -cloud.google.com/go/datalabeling v0.6.0/go.mod h1:WqdISuk/+WIGeMkpw/1q7bK/tFEZxsrFJOJdY2bXvTQ= -cloud.google.com/go/dataqna v0.5.0/go.mod h1:90Hyk596ft3zUQ8NkFfvICSIfHFh1Bc7C4cK3vbhkeo= -cloud.google.com/go/dataqna v0.6.0/go.mod h1:1lqNpM7rqNLVgWBJyk5NF6Uen2PHym0jtVJonplVsDA= -cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE= -cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk= -cloud.google.com/go/datastream v1.2.0/go.mod h1:i/uTP8/fZwgATHS/XFu0TcNUhuA0twZxxQ3EyCUQMwo= -cloud.google.com/go/datastream v1.3.0/go.mod h1:cqlOX8xlyYF/uxhiKn6Hbv6WjwPPuI9W2M9SAXwaLLQ= -cloud.google.com/go/dialogflow v1.15.0/go.mod h1:HbHDWs33WOGJgn6rfzBW1Kv807BE3O1+xGbn59zZWI4= -cloud.google.com/go/dialogflow v1.16.1/go.mod h1:po6LlzGfK+smoSmTBnbkIZY2w8ffjz/RcGSS+sh1el0= -cloud.google.com/go/dialogflow v1.17.0/go.mod h1:YNP09C/kXA1aZdBgC/VtXX74G/TKn7XVCcVumTflA+8= -cloud.google.com/go/documentai v1.7.0/go.mod h1:lJvftZB5NRiFSX4moiye1SMxHx0Bc3x1+p9e/RfXYiU= -cloud.google.com/go/documentai v1.8.0/go.mod h1:xGHNEB7CtsnySCNrCFdCyyMz44RhFEEX2Q7UD0c5IhU= -cloud.google.com/go/domains v0.6.0/go.mod h1:T9Rz3GasrpYk6mEGHh4rymIhjlnIuB4ofT1wTxDeT4Y= -cloud.google.com/go/domains v0.7.0/go.mod h1:PtZeqS1xjnXuRPKE/88Iru/LdfoRyEHYA9nFQf4UKpg= -cloud.google.com/go/edgecontainer v0.1.0/go.mod h1:WgkZ9tp10bFxqO8BLPqv2LlfmQF1X8lZqwW4r1BTajk= -cloud.google.com/go/edgecontainer v0.2.0/go.mod h1:RTmLijy+lGpQ7BXuTDa4C4ssxyXT34NIuHIgKuP4s5w= -cloud.google.com/go/functions v1.6.0/go.mod h1:3H1UA3qiIPRWD7PeZKLvHZ9SaQhR26XIJcC0A5GbvAk= -cloud.google.com/go/functions v1.7.0/go.mod h1:+d+QBcWM+RsrgZfV9xo6KfA1GlzJfxcfZcRPEhDDfzg= -cloud.google.com/go/gaming v1.5.0/go.mod h1:ol7rGcxP/qHTRQE/RO4bxkXq+Fix0j6D4LFPzYTIrDM= -cloud.google.com/go/gaming v1.6.0/go.mod h1:YMU1GEvA39Qt3zWGyAVA9bpYz/yAhTvaQ1t2sK4KPUA= -cloud.google.com/go/gkeconnect v0.5.0/go.mod h1:c5lsNAg5EwAy7fkqX/+goqFsU1Da/jQFqArp+wGNr/o= -cloud.google.com/go/gkeconnect v0.6.0/go.mod h1:Mln67KyU/sHJEBY8kFZ0xTeyPtzbq9StAVvEULYK16A= -cloud.google.com/go/gkehub v0.9.0/go.mod h1:WYHN6WG8w9bXU0hqNxt8rm5uxnk8IH+lPY9J2TV7BK0= -cloud.google.com/go/gkehub v0.10.0/go.mod h1:UIPwxI0DsrpsVoWpLB0stwKCP+WFVG9+y977wO+hBH0= -cloud.google.com/go/grafeas v0.2.0/go.mod h1:KhxgtF2hb0P191HlY5besjYm6MqTSTj3LSI+M+ByZHc= -cloud.google.com/go/iam v0.3.0/go.mod h1:XzJPvDayI+9zsASAFO68Hk07u3z+f+JrT2xXNdp4bnY= -cloud.google.com/go/iam v0.5.0/go.mod h1:wPU9Vt0P4UmCux7mqtRu6jcpPAb74cP1fh50J3QpkUc= -cloud.google.com/go/iam v1.1.6 h1:bEa06k05IO4f4uJonbB5iAgKTPpABy1ayxaIZV/GHVc= -cloud.google.com/go/iam v1.1.6/go.mod h1:O0zxdPeGBoFdWW3HWmBxJsk0pfvNM/p/qa82rWOGTwI= -cloud.google.com/go/language v1.4.0/go.mod h1:F9dRpNFQmJbkaop6g0JhSBXCNlO90e1KWx5iDdxbWic= -cloud.google.com/go/language v1.6.0/go.mod h1:6dJ8t3B+lUYfStgls25GusK04NLh3eDLQnWM3mdEbhI= -cloud.google.com/go/lifesciences v0.5.0/go.mod h1:3oIKy8ycWGPUyZDR/8RNnTOYevhaMLqh5vLUXs9zvT8= -cloud.google.com/go/lifesciences v0.6.0/go.mod h1:ddj6tSX/7BOnhxCSd3ZcETvtNr8NZ6t/iPhY2Tyfu08= -cloud.google.com/go/mediatranslation v0.5.0/go.mod h1:jGPUhGTybqsPQn91pNXw0xVHfuJ3leR1wj37oU3y1f4= -cloud.google.com/go/mediatranslation v0.6.0/go.mod h1:hHdBCTYNigsBxshbznuIMFNe5QXEowAuNmmC7h8pu5w= -cloud.google.com/go/memcache v1.4.0/go.mod h1:rTOfiGZtJX1AaFUrOgsMHX5kAzaTQ8azHiuDoTPzNsE= -cloud.google.com/go/memcache v1.5.0/go.mod h1:dk3fCK7dVo0cUU2c36jKb4VqKPS22BTkf81Xq617aWM= -cloud.google.com/go/metastore v1.5.0/go.mod h1:2ZNrDcQwghfdtCwJ33nM0+GrBGlVuh8rakL3vdPY3XY= -cloud.google.com/go/metastore v1.6.0/go.mod h1:6cyQTls8CWXzk45G55x57DVQ9gWg7RiH65+YgPsNh9s= -cloud.google.com/go/networkconnectivity v1.4.0/go.mod h1:nOl7YL8odKyAOtzNX73/M5/mGZgqqMeryi6UPZTk/rA= -cloud.google.com/go/networkconnectivity v1.5.0/go.mod h1:3GzqJx7uhtlM3kln0+x5wyFvuVH1pIBJjhCpjzSt75o= -cloud.google.com/go/networksecurity v0.5.0/go.mod h1:xS6fOCoqpVC5zx15Z/MqkfDwH4+m/61A3ODiDV1xmiQ= -cloud.google.com/go/networksecurity v0.6.0/go.mod h1:Q5fjhTr9WMI5mbpRYEbiexTzROf7ZbDzvzCrNl14nyU= -cloud.google.com/go/notebooks v1.2.0/go.mod h1:9+wtppMfVPUeJ8fIWPOq1UnATHISkGXGqTkxeieQ6UY= -cloud.google.com/go/notebooks v1.3.0/go.mod h1:bFR5lj07DtCPC7YAAJ//vHskFBxA5JzYlH68kXVdk34= -cloud.google.com/go/osconfig v1.7.0/go.mod h1:oVHeCeZELfJP7XLxcBGTMBvRO+1nQ5tFG9VQTmYS2Fs= -cloud.google.com/go/osconfig v1.8.0/go.mod h1:EQqZLu5w5XA7eKizepumcvWx+m8mJUhEwiPqWiZeEdg= -cloud.google.com/go/oslogin v1.4.0/go.mod h1:YdgMXWRaElXz/lDk1Na6Fh5orF7gvmJ0FGLIs9LId4E= -cloud.google.com/go/oslogin v1.5.0/go.mod h1:D260Qj11W2qx/HVF29zBg+0fd6YCSjSqLUkY/qEenQU= -cloud.google.com/go/phishingprotection v0.5.0/go.mod h1:Y3HZknsK9bc9dMi+oE8Bim0lczMU6hrX0UpADuMefr0= -cloud.google.com/go/phishingprotection v0.6.0/go.mod h1:9Y3LBLgy0kDTcYET8ZH3bq/7qni15yVUoAxiFxnlSUA= -cloud.google.com/go/privatecatalog v0.5.0/go.mod h1:XgosMUvvPyxDjAVNDYxJ7wBW8//hLDDYmnsNcMGq1K0= -cloud.google.com/go/privatecatalog v0.6.0/go.mod h1:i/fbkZR0hLN29eEWiiwue8Pb+GforiEIBnV9yrRUOKI= -cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I= -cloud.google.com/go/pubsub v1.1.0/go.mod h1:EwwdRX2sKPjnvnqCa270oGRyludottCI76h+R3AArQw= -cloud.google.com/go/pubsub v1.2.0/go.mod h1:jhfEVHT8odbXTkndysNHCcx0awwzvfOlguIAii9o8iA= -cloud.google.com/go/pubsub v1.3.1/go.mod h1:i+ucay31+CNRpDW4Lu78I4xXG+O1r/MAHgjpRVR+TSU= -cloud.google.com/go/recaptchaenterprise v1.3.1/go.mod h1:OdD+q+y4XGeAlxRaMn1Y7/GveP6zmq76byL6tjPE7d4= -cloud.google.com/go/recaptchaenterprise/v2 v2.1.0/go.mod h1:w9yVqajwroDNTfGuhmOjPDN//rZGySaf6PtFVcSCa7o= -cloud.google.com/go/recaptchaenterprise/v2 v2.2.0/go.mod h1:/Zu5jisWGeERrd5HnlS3EUGb/D335f9k51B/FVil0jk= -cloud.google.com/go/recaptchaenterprise/v2 v2.3.0/go.mod h1:O9LwGCjrhGHBQET5CA7dd5NwwNQUErSgEDit1DLNTdo= -cloud.google.com/go/recommendationengine v0.5.0/go.mod h1:E5756pJcVFeVgaQv3WNpImkFP8a+RptV6dDLGPILjvg= -cloud.google.com/go/recommendationengine v0.6.0/go.mod h1:08mq2umu9oIqc7tDy8sx+MNJdLG0fUi3vaSVbztHgJ4= -cloud.google.com/go/recommender v1.5.0/go.mod h1:jdoeiBIVrJe9gQjwd759ecLJbxCDED4A6p+mqoqDvTg= -cloud.google.com/go/recommender v1.6.0/go.mod h1:+yETpm25mcoiECKh9DEScGzIRyDKpZ0cEhWGo+8bo+c= -cloud.google.com/go/redis v1.7.0/go.mod h1:V3x5Jq1jzUcg+UNsRvdmsfuFnit1cfe3Z/PGyq/lm4Y= -cloud.google.com/go/redis v1.8.0/go.mod h1:Fm2szCDavWzBk2cDKxrkmWBqoCiL1+Ctwq7EyqBCA/A= -cloud.google.com/go/retail v1.8.0/go.mod h1:QblKS8waDmNUhghY2TI9O3JLlFk8jybHeV4BF19FrE4= -cloud.google.com/go/retail v1.9.0/go.mod h1:g6jb6mKuCS1QKnH/dpu7isX253absFl6iE92nHwlBUY= -cloud.google.com/go/scheduler v1.4.0/go.mod h1:drcJBmxF3aqZJRhmkHQ9b3uSSpQoltBPGPxGAWROx6s= -cloud.google.com/go/scheduler v1.5.0/go.mod h1:ri073ym49NW3AfT6DZi21vLZrG07GXr5p3H1KxN5QlI= -cloud.google.com/go/secretmanager v1.6.0/go.mod h1:awVa/OXF6IiyaU1wQ34inzQNc4ISIDIrId8qE5QGgKA= -cloud.google.com/go/security v1.5.0/go.mod h1:lgxGdyOKKjHL4YG3/YwIL2zLqMFCKs0UbQwgyZmfJl4= -cloud.google.com/go/security v1.7.0/go.mod h1:mZklORHl6Bg7CNnnjLH//0UlAlaXqiG7Lb9PsPXLfD0= -cloud.google.com/go/security v1.8.0/go.mod h1:hAQOwgmaHhztFhiQ41CjDODdWP0+AE1B3sX4OFlq+GU= -cloud.google.com/go/securitycenter v1.13.0/go.mod h1:cv5qNAqjY84FCN6Y9z28WlkKXyWsgLO832YiWwkCWcU= -cloud.google.com/go/securitycenter v1.14.0/go.mod h1:gZLAhtyKv85n52XYWt6RmeBdydyxfPeTrpToDPw4Auc= -cloud.google.com/go/servicedirectory v1.4.0/go.mod h1:gH1MUaZCgtP7qQiI+F+A+OpeKF/HQWgtAddhTbhL2bs= -cloud.google.com/go/servicedirectory v1.5.0/go.mod h1:QMKFL0NUySbpZJ1UZs3oFAmdvVxhhxB6eJ/Vlp73dfg= -cloud.google.com/go/speech v1.6.0/go.mod h1:79tcr4FHCimOp56lwC01xnt/WPJZc4v3gzyT7FoBkCM= -cloud.google.com/go/speech v1.7.0/go.mod h1:KptqL+BAQIhMsj1kOP2la5DSEEerPDuOP/2mmkhHhZQ= -cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw= -cloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0ZeosJ0Rtdos= -cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohlUTyfDhBk= -cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RXyy7KQOVs= -cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0= -cloud.google.com/go/storage v1.22.1/go.mod h1:S8N1cAStu7BOeFfE8KAQzmyyLkK8p/vmRq6kuBTW58Y= -cloud.google.com/go/storage v1.23.0/go.mod h1:vOEEDNFnciUMhBeT6hsJIn3ieU5cFRmzeLgDvXzfIXc= -cloud.google.com/go/storage v1.27.0/go.mod h1:x9DOL8TK/ygDUMieqwfhdpQryTeEkhGKMi80i/iqR2s= -cloud.google.com/go/storage v1.38.0 h1:Az68ZRGlnNTpIBbLjSMIV2BDcwwXYlRlQzis0llkpJg= -cloud.google.com/go/storage v1.38.0/go.mod h1:tlUADB0mAb9BgYls9lq+8MGkfzOXuLrnHXlpHmvFJoY= -cloud.google.com/go/talent v1.1.0/go.mod h1:Vl4pt9jiHKvOgF9KoZo6Kob9oV4lwd/ZD5Cto54zDRw= -cloud.google.com/go/talent v1.2.0/go.mod h1:MoNF9bhFQbiJ6eFD3uSsg0uBALw4n4gaCaEjBw9zo8g= -cloud.google.com/go/videointelligence v1.6.0/go.mod h1:w0DIDlVRKtwPCn/C4iwZIJdvC69yInhW0cfi+p546uU= -cloud.google.com/go/videointelligence v1.7.0/go.mod h1:k8pI/1wAhjznARtVT9U1llUaFNPh7muw8QyOUpavru4= -cloud.google.com/go/vision v1.2.0/go.mod h1:SmNwgObm5DpFBme2xpyOyasvBc1aPdjvMk2bBk0tKD0= -cloud.google.com/go/vision/v2 v2.2.0/go.mod h1:uCdV4PpN1S0jyCyq8sIM42v2Y6zOLkZs+4R9LrGYwFo= -cloud.google.com/go/vision/v2 v2.3.0/go.mod h1:UO61abBx9QRMFkNBbf1D8B1LXdS2cGiiCRx0vSpZoUo= -cloud.google.com/go/webrisk v1.4.0/go.mod h1:Hn8X6Zr+ziE2aNd8SliSDWpEnSS1u4R9+xXZmFiHmGE= -cloud.google.com/go/webrisk v1.5.0/go.mod h1:iPG6fr52Tv7sGk0H6qUFzmL3HHZev1htXuWDEEsqMTg= -cloud.google.com/go/workflows v1.6.0/go.mod h1:6t9F5h/unJz41YqfBmqSASJSXccBLtD1Vwf+KmJENM0= -cloud.google.com/go/workflows v1.7.0/go.mod h1:JhSrZuVZWuiDfKEFxU0/F1PQjmpnpcoISEXH2bcHC3M= -cosmossdk.io/api v0.7.5 h1:eMPTReoNmGUm8DeiQL9DyM8sYDjEhWzL1+nLbI9DqtQ= -cosmossdk.io/api v0.7.5/go.mod h1:IcxpYS5fMemZGqyYtErK7OqvdM0C8kdW3dq8Q/XIG38= -cosmossdk.io/client/v2 v2.0.0-beta.1 h1:XkHh1lhrLYIT9zKl7cIOXUXg2hdhtjTPBUfqERNA1/Q= -cosmossdk.io/client/v2 v2.0.0-beta.1/go.mod h1:JEUSu9moNZQ4kU3ir1DKD5eU4bllmAexrGWjmb9k8qU= -cosmossdk.io/collections v0.4.0 h1:PFmwj2W8szgpD5nOd8GWH6AbYNi1f2J6akWXJ7P5t9s= -cosmossdk.io/collections v0.4.0/go.mod h1:oa5lUING2dP+gdDquow+QjlF45eL1t4TJDypgGd+tv0= -cosmossdk.io/core v0.11.1 h1:h9WfBey7NAiFfIcUhDVNS503I2P2HdZLebJlUIs8LPA= -cosmossdk.io/core v0.11.1/go.mod h1:OJzxcdC+RPrgGF8NJZR2uoQr56tc7gfBKhiKeDO7hH0= -cosmossdk.io/depinject v1.0.0 h1:dQaTu6+O6askNXO06+jyeUAnF2/ssKwrrszP9t5q050= -cosmossdk.io/depinject v1.0.0/go.mod h1:zxK/h3HgHoA/eJVtiSsoaRaRA2D5U4cJ5thIG4ssbB8= -cosmossdk.io/errors v1.0.1 h1:bzu+Kcr0kS/1DuPBtUFdWjzLqyUuCiyHjyJB6srBV/0= -cosmossdk.io/errors v1.0.1/go.mod h1:MeelVSZThMi4bEakzhhhE/CKqVv3nOJDA25bIqRDu/U= -cosmossdk.io/log v1.3.1 h1:UZx8nWIkfbbNEWusZqzAx3ZGvu54TZacWib3EzUYmGI= -cosmossdk.io/log v1.3.1/go.mod h1:2/dIomt8mKdk6vl3OWJcPk2be3pGOS8OQaLUM/3/tCM= -cosmossdk.io/math v1.3.0 h1:RC+jryuKeytIiictDslBP9i1fhkVm6ZDmZEoNP316zE= -cosmossdk.io/math v1.3.0/go.mod h1:vnRTxewy+M7BtXBNFybkuhSH4WfedVAAnERHgVFhp3k= -cosmossdk.io/store v1.1.0 h1:LnKwgYMc9BInn9PhpTFEQVbL9UK475G2H911CGGnWHk= -cosmossdk.io/store v1.1.0/go.mod h1:oZfW/4Fc/zYqu3JmQcQdUJ3fqu5vnYTn3LZFFy8P8ng= -cosmossdk.io/x/circuit v0.1.0 h1:IAej8aRYeuOMritczqTlljbUVHq1E85CpBqaCTwYgXs= -cosmossdk.io/x/circuit v0.1.0/go.mod h1:YDzblVE8+E+urPYQq5kq5foRY/IzhXovSYXb4nwd39w= -cosmossdk.io/x/evidence v0.1.0 h1:J6OEyDl1rbykksdGynzPKG5R/zm6TacwW2fbLTW4nCk= -cosmossdk.io/x/evidence v0.1.0/go.mod h1:hTaiiXsoiJ3InMz1uptgF0BnGqROllAN8mwisOMMsfw= -cosmossdk.io/x/feegrant v0.1.0 h1:c7s3oAq/8/UO0EiN1H5BIjwVntujVTkYs35YPvvrdQk= -cosmossdk.io/x/feegrant v0.1.0/go.mod h1:4r+FsViJRpcZif/yhTn+E0E6OFfg4n0Lx+6cCtnZElU= -cosmossdk.io/x/tx v0.13.4 h1:Eg0PbJgeO0gM8p5wx6xa0fKR7hIV6+8lC56UrsvSo0Y= -cosmossdk.io/x/tx v0.13.4/go.mod h1:BkFqrnGGgW50Y6cwTy+JvgAhiffbGEKW6KF9ufcDpvk= -cosmossdk.io/x/upgrade v0.1.4 h1:/BWJim24QHoXde8Bc64/2BSEB6W4eTydq0X/2f8+g38= -cosmossdk.io/x/upgrade v0.1.4/go.mod h1:9v0Aj+fs97O+Ztw+tG3/tp5JSlrmT7IcFhAebQHmOPo= -dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= -filippo.io/edwards25519 v1.0.0 h1:0wAIcmJUqRdI8IJ/3eGi5/HwXZWPujYXXlkrQogz0Ek= -filippo.io/edwards25519 v1.0.0/go.mod h1:N1IkdkCkiLB6tki+MYJoSx2JTY9NUlxZE7eHn5EwJns= -github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 h1:/vQbFIOMbk2FiG/kXiLl8BRyzTWDw7gX/Hz7Dd5eDMs= -github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4/go.mod h1:hN7oaIRCjzsZ2dE+yG5k+rsdt3qcwykqK6HVGcKwsw4= -github.com/99designs/keyring v1.2.2 h1:pZd3neh/EmUzWONb35LxQfvuY7kiSXAq3HQd97+XBn0= -github.com/99designs/keyring v1.2.2/go.mod h1:wes/FrByc8j7lFOAGLGSNEg8f/PaI3cgTBqhFkHUrPk= -github.com/Azure/go-ansiterm v0.0.0-20230124172434-306776ec8161 h1:L/gRVlceqvL25UVaW/CKtUDjefjrs0SPonmDGUVOYP0= -github.com/Azure/go-ansiterm v0.0.0-20230124172434-306776ec8161/go.mod h1:xomTg63KZ2rFqZQzSB4Vz2SUXa1BpHTVz9L5PTmPC4E= -github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= -github.com/BurntSushi/toml v1.4.0 h1:kuoIxZQy2WRRk1pttg9asf+WVv6tWQuBNVmK8+nqPr0= -github.com/BurntSushi/toml v1.4.0/go.mod h1:ukJfTF/6rtPPRCnwkur4qwRxa8vTRFBF0uk2lLoLwho= -github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= -github.com/ChainSafe/go-schnorrkel v0.0.0-20200405005733-88cbf1b4c40d h1:nalkkPQcITbvhmL4+C4cKA87NW0tfm3Kl9VXRoPywFg= -github.com/ChainSafe/go-schnorrkel v0.0.0-20200405005733-88cbf1b4c40d/go.mod h1:URdX5+vg25ts3aCh8H5IFZybJYKWhJHYMTnf+ULtoC4= -github.com/ChainSafe/go-schnorrkel v1.0.0 h1:3aDA67lAykLaG1y3AOjs88dMxC88PgUuHRrLeDnvGIM= -github.com/ChainSafe/go-schnorrkel v1.0.0/go.mod h1:dpzHYVxLZcp8pjlV+O+UR8K0Hp/z7vcchBSbMBEhCw4= -github.com/ComposableFi/go-subkey/v2 v2.0.0-tm03420 h1:oknQF/iIhf5lVjbwjsVDzDByupRhga8nhA3NAmwyHDA= -github.com/ComposableFi/go-subkey/v2 v2.0.0-tm03420/go.mod h1:KYkiMX5AbOlXXYfxkrYPrRPV6EbVUALTQh5ptUOJzu8= -github.com/DataDog/datadog-go v3.2.0+incompatible h1:qSG2N4FghB1He/r2mFrWKCaL7dXCilEuNEeAn20fdD4= -github.com/DataDog/datadog-go v3.2.0+incompatible/go.mod h1:LButxg5PwREeZtORoXG3tL4fMGNddJ+vMq1mwgfaqoQ= -github.com/DataDog/zstd v1.5.5 h1:oWf5W7GtOLgp6bciQYDmhHHjdhYkALu6S/5Ni9ZgSvQ= -github.com/DataDog/zstd v1.5.5/go.mod h1:g4AWEaM3yOg3HYfnJ3YIawPnVdXJh9QME85blwSAmyw= -github.com/FactomProject/basen v0.0.0-20150613233007-fe3947df716e h1:ahyvB3q25YnZWly5Gq1ekg6jcmWaGj/vG/MhF4aisoc= -github.com/FactomProject/basen v0.0.0-20150613233007-fe3947df716e/go.mod h1:kGUqhHd//musdITWjFvNTHn90WG9bMLBEPQZ17Cmlpw= -github.com/FactomProject/btcutilecc v0.0.0-20130527213604-d3a63a5752ec h1:1Qb69mGp/UtRPn422BH4/Y4Q3SLUrD9KHuDkm8iodFc= -github.com/FactomProject/btcutilecc v0.0.0-20130527213604-d3a63a5752ec/go.mod h1:CD8UlnlLDiqb36L110uqiP2iSflVjx9g/3U9hCI4q2U= -github.com/Knetic/govaluate v3.0.1-0.20171022003610-9aa49832a739+incompatible/go.mod h1:r7JcOSlj0wfOMncg0iLm8Leh48TZaKVeNIfJntJ2wa0= -github.com/Microsoft/go-winio v0.6.2 h1:F2VQgta7ecxGYO8k3ZZz3RS8fVIXVxONVUPlNERoyfY= -github.com/Microsoft/go-winio v0.6.2/go.mod h1:yd8OoFMLzJbo9gZq8j5qaps8bJ9aShtEA8Ipt1oGCvU= -github.com/Nvveen/Gotty v0.0.0-20120604004816-cd527374f1e5 h1:TngWCqHvy9oXAN6lEVMRuU21PR1EtLVZJmdB18Gu3Rw= -github.com/Nvveen/Gotty v0.0.0-20120604004816-cd527374f1e5/go.mod h1:lmUJ/7eu/Q8D7ML55dXQrVaamCz2vxCfdQBasLZfHKk= -github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= -github.com/Shopify/sarama v1.19.0/go.mod h1:FVkBWblsNy7DGZRfXLU0O9RCGt5g3g3yEuWXgklEdEo= -github.com/Shopify/toxiproxy v2.1.4+incompatible/go.mod h1:OXgGpZ6Cli1/URJOF1DMxUHB2q5Ap20/P/eIdh4G0pI= -github.com/StackExchange/wmi v1.2.1 h1:VIkavFPXSjcnS+O8yTq7NI32k0R5Aj+v39y29VYDOSA= -github.com/StackExchange/wmi v1.2.1/go.mod h1:rcmrprowKIVzvc+NUiLncP2uuArMWLCbu9SBzvHz7e8= -github.com/StirlingMarketingGroup/go-namecase v1.0.0 h1:2CzaNtCzc4iNHirR+5ru9OzGg8rQp860gqLBFqRI02Y= -github.com/StirlingMarketingGroup/go-namecase v1.0.0/go.mod h1:ZsoSKcafcAzuBx+sndbxHu/RjDcDTrEdT4UvhniHfio= -github.com/VictoriaMetrics/fastcache v1.12.2 h1:N0y9ASrJ0F6h0QaC3o6uJb3NIZ9VKLjCM7NQbSmF7WI= -github.com/VictoriaMetrics/fastcache v1.12.2/go.mod h1:AmC+Nzz1+3G2eCPapF6UcsnkThDcMsQicp4xDukwJYI= -github.com/VividCortex/gohistogram v1.0.0 h1:6+hBz+qvs0JOrrNhhmR7lFxo5sINxBCGXrdtl/UvroE= -github.com/VividCortex/gohistogram v1.0.0/go.mod h1:Pf5mBqqDxYaXu3hDrrU+w6nw50o/4+TcAqDqk/vUH7g= -github.com/adlio/schema v1.3.3 h1:oBJn8I02PyTB466pZO1UZEn1TV5XLlifBSyMrmHl/1I= -github.com/adlio/schema v1.3.3/go.mod h1:1EsRssiv9/Ce2CMzq5DoL7RiMshhuigQxrR4DMV9fHg= -github.com/afex/hystrix-go v0.0.0-20180502004556-fa1af6a1f4f5/go.mod h1:SkGFH1ia65gfNATL8TAiHDNxPzPdmEL5uirI2Uyuz6c= -github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= -github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= -github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= -github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= -github.com/alecthomas/units v0.0.0-20190924025748-f65c72e2690d/go.mod h1:rBZYJk541a8SKzHPHnH3zbiI+7dagKZ0cgpgrD7Fyho= -github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= -github.com/apache/thrift v0.12.0/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ= -github.com/apache/thrift v0.13.0/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ= -github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o= -github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY= -github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= -github.com/aryann/difflib v0.0.0-20170710044230-e206f873d14a/go.mod h1:DAHtR1m6lCRdSC2Tm3DSWRPvIPr6xNKyeHdqDQSQT+A= -github.com/avast/retry-go/v4 v4.5.1 h1:AxIx0HGi4VZ3I02jr78j5lZ3M6x1E0Ivxa6b0pUUh7o= -github.com/avast/retry-go/v4 v4.5.1/go.mod h1:/sipNsvNB3RRuT5iNcb6h73nw3IBmXJ/H3XrCQYSOpc= -github.com/aws/aws-lambda-go v1.13.3/go.mod h1:4UKl9IzQMoD+QF79YdCuzCwp8VbmG4VAQwij/eHl5CU= -github.com/aws/aws-sdk-go v1.27.0/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= -github.com/aws/aws-sdk-go v1.44.122/go.mod h1:y4AeaBuwd2Lk+GepC1E9v0qOiTws0MIWAX4oIKwKHZo= -github.com/aws/aws-sdk-go v1.44.224 h1:09CiaaF35nRmxrzWZ2uRq5v6Ghg/d2RiPjZnSgtt+RQ= -github.com/aws/aws-sdk-go v1.44.224/go.mod h1:aVsgQcEevwlmQ7qHE9I3h+dtQgpqhFB+i8Phjh7fkwI= -github.com/aws/aws-sdk-go-v2 v0.18.0/go.mod h1:JWVYvqSMppoMJC0x5wdwiImzgXTI9FuZwxzkQq9wy+g= -github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= -github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= -github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= -github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= -github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= -github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d h1:xDfNPAt8lFiC1UJrqV3uuy861HCTo708pDMbjHHdCas= -github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d/go.mod h1:6QX/PXZ00z/TKoufEY6K/a0k6AhaJrQKdFe6OfVXsa4= -github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= -github.com/bgentry/speakeasy v0.1.1-0.20220910012023-760eaf8b6816 h1:41iFGWnSlI2gVpmOtVTJZNodLdLQLn/KsJqFvXwnd/s= -github.com/bgentry/speakeasy v0.1.1-0.20220910012023-760eaf8b6816/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= -github.com/bits-and-blooms/bitset v1.10.0 h1:ePXTeiPEazB5+opbv5fr8umg2R/1NlzgDsyepwsSr88= -github.com/bits-and-blooms/bitset v1.10.0/go.mod h1:7hO7Gc7Pp1vODcmWvKMRA9BNmbv6a/7QIWpPxHddWR8= -github.com/btcsuite/btcd v0.22.2 h1:vBZ+lGGd1XubpOWO67ITJpAEsICWhA0YzqkcpkgNBfo= -github.com/btcsuite/btcd v0.22.2/go.mod h1:wqgTSL29+50LRkmOVknEdmt8ZojIzhuWvgu/iptuN7Y= -github.com/btcsuite/btcd/btcec/v2 v2.3.3 h1:6+iXlDKE8RMtKsvK0gshlXIuPbyWM/h84Ensb7o3sC0= -github.com/btcsuite/btcd/btcec/v2 v2.3.3/go.mod h1:zYzJ8etWJQIv1Ogk7OzpWjowwOdXY1W/17j2MW85J04= -github.com/btcsuite/btcd/btcutil v1.1.3 h1:xfbtw8lwpp0G6NwSHb+UE67ryTFHJAiNuipusjXSohQ= -github.com/btcsuite/btcd/btcutil v1.1.3/go.mod h1:UR7dsSJzJUfMmFiiLlIrMq1lS9jh9EdCV7FStZSnpi0= -github.com/btcsuite/btcd/chaincfg/chainhash v1.0.1 h1:q0rUy8C/TYNBQS1+CGKw68tLOFYSNEs0TFnxxnS9+4U= -github.com/btcsuite/btcd/chaincfg/chainhash v1.0.1/go.mod h1:7SFka0XMvUgj3hfZtydOrQY2mwhPclbT2snogU7SQQc= -github.com/btcsuite/btcutil v1.0.3-0.20201208143702-a53e38424cce h1:YtWJF7RHm2pYCvA5t0RPmAaLUhREsKuKd+SLhxFbFeQ= -github.com/btcsuite/btcutil v1.0.3-0.20201208143702-a53e38424cce/go.mod h1:0DVlHczLPewLcPGEIeUEzfOJhqGPQ0mJJRDBtD307+o= -github.com/bufbuild/protocompile v0.6.0 h1:Uu7WiSQ6Yj9DbkdnOe7U4mNKp58y9WDMKDn28/ZlunY= -github.com/bufbuild/protocompile v0.6.0/go.mod h1:YNP35qEYoYGme7QMtz5SBCoN4kL4g12jTtjuzRNdjpE= -github.com/casbin/casbin/v2 v2.1.2/go.mod h1:YcPU1XXisHhLzuxH9coDNf2FbKpjGlbCg3n9yuLkIJQ= -github.com/cenkalti/backoff v2.2.1+incompatible h1:tNowT99t7UNflLxfYYSlKYsBpXdEet03Pg2g16Swow4= -github.com/cenkalti/backoff v2.2.1+incompatible/go.mod h1:90ReRw6GdpyfrHakVjL/QHaoyV4aDUVVkXQJJJ3NXXM= -github.com/cenkalti/backoff/v4 v4.1.1/go.mod h1:scbssz8iZGpm3xbr14ovlUdkxfGXNInqkPWOWmG2CLw= -github.com/cenkalti/backoff/v4 v4.1.3 h1:cFAlzYUlVYDysBEH2T5hyJZMh3+5+WCBvSnK6Q8UtC4= -github.com/cenkalti/backoff/v4 v4.1.3/go.mod h1:scbssz8iZGpm3xbr14ovlUdkxfGXNInqkPWOWmG2CLw= -github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= -github.com/cespare/xxhash v1.1.0 h1:a6HrQnmkObjyL+Gs60czilIUGqrzKutQD6XZog3p+ko= -github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= -github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= -github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs= -github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= -github.com/cheggaaa/pb v1.0.27/go.mod h1:pQciLPpbU0oxA0h+VJYYLxO+XeDQb5pZijXscXHm81s= -github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= -github.com/chzyer/logex v1.2.1 h1:XHDu3E6q+gdHgsdTPH6ImJMIp436vR6MPtH8gP05QzM= -github.com/chzyer/logex v1.2.1/go.mod h1:JLbx6lG2kDbNRFnfkgvh4eRJRPX1QCoOIWomwysCBrQ= -github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= -github.com/chzyer/readline v1.5.1 h1:upd/6fQk4src78LMRzh5vItIt361/o4uq553V8B5sGI= -github.com/chzyer/readline v1.5.1/go.mod h1:Eh+b79XXUwfKfcPLepksvw2tcLE/Ct21YObkaSkeBlk= -github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= -github.com/chzyer/test v1.0.0 h1:p3BQDXSxOhOG0P9z6/hGnII4LGiEPOYBhs8asl/fC04= -github.com/chzyer/test v1.0.0/go.mod h1:2JlltgoNkt4TW/z9V/IzDdFaMTM2JPIi26O1pF38GC8= -github.com/circonus-labs/circonus-gometrics v2.3.1+incompatible/go.mod h1:nmEj6Dob7S7YxXgwXpfOuvO54S+tGdZdw9fuRZt25Ag= -github.com/circonus-labs/circonusllhist v0.1.3/go.mod h1:kMXHVDlOchFAehlya5ePtbp5jckzBHf4XRpQvBOLI+I= -github.com/clbanning/x2j v0.0.0-20191024224557-825249438eec/go.mod h1:jMjuTZXRI4dUb/I5gc9Hdhagfvm9+RyrPryS/auMzxE= -github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= -github.com/cmars/basen v0.0.0-20150613233007-fe3947df716e h1:0XBUw73chJ1VYSsfvcPvVT7auykAJce9FpRr10L6Qhw= -github.com/cmars/basen v0.0.0-20150613233007-fe3947df716e/go.mod h1:P13beTBKr5Q18lJe1rIoLUqjM+CB1zYrRg44ZqGuQSA= -github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= -github.com/cncf/udpa/go v0.0.0-20200629203442-efcf912fb354/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= -github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= -github.com/cncf/udpa/go v0.0.0-20210930031921-04548b0d99d4/go.mod h1:6pvJx4me5XPnfI9Z40ddWsdw2W/uZgQLFXToKeRcDiI= -github.com/cncf/xds/go v0.0.0-20210312221358-fbca930ec8ed/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/cncf/xds/go v0.0.0-20210805033703-aa0b78936158/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/cncf/xds/go v0.0.0-20210922020428-25de7278fc84/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/cncf/xds/go v0.0.0-20211001041855-01bcc9b48dfe/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/cncf/xds/go v0.0.0-20211011173535-cb28da3451f1/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/cockroachdb/apd/v2 v2.0.2 h1:weh8u7Cneje73dDh+2tEVLUvyBc89iwepWCD8b8034E= -github.com/cockroachdb/apd/v2 v2.0.2/go.mod h1:DDxRlzC2lo3/vSlmSoS7JkqbbrARPuFOGr0B9pvN3Gw= -github.com/cockroachdb/datadriven v0.0.0-20190809214429-80d97fb3cbaa/go.mod h1:zn76sxSg3SzpJ0PPJaLDCu+Bu0Lg3sKTORVIj19EIF8= -github.com/cockroachdb/datadriven v1.0.3-0.20230801171734-e384cf455877 h1:1MLK4YpFtIEo3ZtMA5C795Wtv5VuUnrXX7mQG+aHg6o= -github.com/cockroachdb/datadriven v1.0.3-0.20230801171734-e384cf455877/go.mod h1:a9RdTaap04u637JoCzcUoIcDmvwSUtcUFtT/C3kJlTU= -github.com/cockroachdb/errors v1.11.3 h1:5bA+k2Y6r+oz/6Z/RFlNeVCesGARKuC6YymtcDrbC/I= -github.com/cockroachdb/errors v1.11.3/go.mod h1:m4UIW4CDjx+R5cybPsNrRbreomiFqt8o1h1wUVazSd8= -github.com/cockroachdb/fifo v0.0.0-20240606204812-0bbfbd93a7ce h1:giXvy4KSc/6g/esnpM7Geqxka4WSqI1SZc7sMJFd3y4= -github.com/cockroachdb/fifo v0.0.0-20240606204812-0bbfbd93a7ce/go.mod h1:9/y3cnZ5GKakj/H4y9r9GTjCvAFta7KLgSHPJJYc52M= -github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b h1:r6VH0faHjZeQy818SGhaone5OnYfxFR/+AzdY3sf5aE= -github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b/go.mod h1:Vz9DsVWQQhf3vs21MhPMZpMGSht7O/2vFW2xusFUVOs= -github.com/cockroachdb/pebble v1.1.1 h1:XnKU22oiCLy2Xn8vp1re67cXg4SAasg/WDt1NtcRFaw= -github.com/cockroachdb/pebble v1.1.1/go.mod h1:4exszw1r40423ZsmkG/09AFEG83I0uDgfujJdbL6kYU= -github.com/cockroachdb/redact v1.1.5 h1:u1PMllDkdFfPWaNGMyLD1+so+aq3uUItthCFqzwPJ30= -github.com/cockroachdb/redact v1.1.5/go.mod h1:BVNblN9mBWFyMyqK1k3AAiSxhvhfK2oOZZ2lK+dpvRg= -github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06 h1:zuQyyAKVxetITBuuhv3BI9cMrmStnpT18zmgmTxunpo= -github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06/go.mod h1:7nc4anLGjupUW/PeY5qiNYsdNXj7zopG+eqsS7To5IQ= -github.com/codahale/hdrhistogram v0.0.0-20161010025455-3a0bb77429bd/go.mod h1:sE/e/2PUdi/liOCUjSTXgM1o87ZssimdTWN964YiIeI= -github.com/cometbft/cometbft v0.38.11 h1:6bNDUB8/xq4uYonYwIfGc9OqK1ZH4NkdaMmR1LZIJqk= -github.com/cometbft/cometbft v0.38.11/go.mod h1:jHPx9vQpWzPHEAiYI/7EDKaB1NXhK6o3SArrrY8ExKc= -github.com/cometbft/cometbft-db v0.14.0 h1:dKnK/tQL8BwciH6SgFEuZxwKupMokR4NlwYfJWy7C48= -github.com/cometbft/cometbft-db v0.14.0/go.mod h1:JOXKwjrxS/MW5qJ1xuVpELa8HGBVgHpgI+t8j0L0JEo= -github.com/consensys/bavard v0.1.13 h1:oLhMLOFGTLdlda/kma4VOJazblc7IM5y5QPd2A/YjhQ= -github.com/consensys/bavard v0.1.13/go.mod h1:9ItSMtA/dXMAiL7BG6bqW2m3NdSEObYWoH223nGHukI= -github.com/consensys/gnark-crypto v0.12.1 h1:lHH39WuuFgVHONRl3J0LRBtuYdQTumFSDtJF7HpyG8M= -github.com/consensys/gnark-crypto v0.12.1/go.mod h1:v2Gy7L/4ZRosZ7Ivs+9SfUDr0f5UlG+EM5t7MPHiLuY= -github.com/containerd/continuity v0.3.0 h1:nisirsYROK15TAMVukJOUyGJjz4BNQJBVsNvAXZJ/eg= -github.com/containerd/continuity v0.3.0/go.mod h1:wJEAIwKOm/pBZuBd0JmeTvnLquTB1Ag8espWhkykbPM= -github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= -github.com/coreos/go-systemd v0.0.0-20180511133405-39ca1b05acc7/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= -github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= -github.com/coreos/pkg v0.0.0-20160727233714-3ac0863d7acf/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= -github.com/cosmos/btcutil v1.0.5 h1:t+ZFcX77LpKtDBhjucvnOH8C2l2ioGsBNEQ3jef8xFk= -github.com/cosmos/btcutil v1.0.5/go.mod h1:IyB7iuqZMJlthe2tkIFL33xPyzbFYP0XVdS8P5lUPis= -github.com/cosmos/cosmos-db v1.0.2 h1:hwMjozuY1OlJs/uh6vddqnk9j7VamLv+0DBlbEXbAKs= -github.com/cosmos/cosmos-db v1.0.2/go.mod h1:Z8IXcFJ9PqKK6BIsVOB3QXtkKoqUOp1vRvPT39kOXEA= -github.com/cosmos/cosmos-proto v1.0.0-beta.5 h1:eNcayDLpip+zVLRLYafhzLvQlSmyab+RC5W7ZfmxJLA= -github.com/cosmos/cosmos-proto v1.0.0-beta.5/go.mod h1:hQGLpiIUloJBMdQMMWb/4wRApmI9hjHH05nefC0Ojec= -github.com/cosmos/cosmos-sdk v0.50.9 h1:gt2usjz0H0qW6KwAxWw7ZJ3XU8uDwmhN+hYG3nTLeSg= -github.com/cosmos/cosmos-sdk v0.50.9/go.mod h1:TMH6wpoYBcg7Cp5BEg8fneLr+8XloNQkf2MRNF9V6JE= -github.com/cosmos/go-bip39 v0.0.0-20180819234021-555e2067c45d/go.mod h1:tSxLoYXyBmiFeKpvmq4dzayMdCjCnu8uqmCysIGBT2Y= -github.com/cosmos/go-bip39 v1.0.0 h1:pcomnQdrdH22njcAatO0yWojsUnCO3y2tNoV1cb6hHY= -github.com/cosmos/go-bip39 v1.0.0/go.mod h1:RNJv0H/pOIVgxw6KS7QeX2a0Uo0aKUlfhZ4xuwvCdJw= -github.com/cosmos/gogogateway v1.2.0 h1:Ae/OivNhp8DqBi/sh2A8a1D0y638GpL3tkmLQAiKxTE= -github.com/cosmos/gogogateway v1.2.0/go.mod h1:iQpLkGWxYcnCdz5iAdLcRBSw3h7NXeOkZ4GUkT+tbFI= -github.com/cosmos/gogoproto v1.4.2/go.mod h1:cLxOsn1ljAHSV527CHOtaIP91kK6cCrZETRBrkzItWU= -github.com/cosmos/gogoproto v1.5.0 h1:SDVwzEqZDDBoslaeZg+dGE55hdzHfgUA40pEanMh52o= -github.com/cosmos/gogoproto v1.5.0/go.mod h1:iUM31aofn3ymidYG6bUR5ZFrk+Om8p5s754eMUcyp8I= -github.com/cosmos/iavl v1.1.2 h1:zL9FK7C4L/P4IF1Dm5fIwz0WXCnn7Bp1M2FxH0ayM7Y= -github.com/cosmos/iavl v1.1.2/go.mod h1:jLeUvm6bGT1YutCaL2fIar/8vGUE8cPZvh/gXEWDaDM= -github.com/cosmos/ibc-go/modules/capability v1.0.1 h1:ibwhrpJ3SftEEZRxCRkH0fQZ9svjthrX2+oXdZvzgGI= -github.com/cosmos/ibc-go/modules/capability v1.0.1/go.mod h1:rquyOV262nGJplkumH+/LeYs04P3eV8oB7ZM4Ygqk4E= -github.com/cosmos/ibc-go/v8 v8.4.0 h1:K2PfX0AZ+1XKZytHGEMuSjQXG/MZshPb83RSTQt2+cE= -github.com/cosmos/ibc-go/v8 v8.4.0/go.mod h1:zh6x1osR0hNvEcFrC/lhGD08sMfQmr9wHVvZ/mRWMCs= -github.com/cosmos/ics23/go v0.10.0 h1:iXqLLgp2Lp+EdpIuwXTYIQU+AiHj9mOC2X9ab++bZDM= -github.com/cosmos/ics23/go v0.10.0/go.mod h1:ZfJSmng/TBNTBkFemHHHj5YY7VAU/MBU980F4VU1NG0= -github.com/cosmos/interchain-security/v5 v5.1.1 h1:xmRRMeE4xoc+JAZUh0XzXFYWaGBtzFFj5SETuOgnEnY= -github.com/cosmos/interchain-security/v5 v5.1.1/go.mod h1:vmeTcTxFCl1eV0o6xpl/IRT7Basz0szVVGzbppnInMg= -github.com/cosmos/ledger-cosmos-go v0.13.3 h1:7ehuBGuyIytsXbd4MP43mLeoN2LTOEnk5nvue4rK+yM= -github.com/cosmos/ledger-cosmos-go v0.13.3/go.mod h1:HENcEP+VtahZFw38HZ3+LS3Iv5XV6svsnkk9vdJtLr8= -github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= -github.com/cpuguy83/go-md2man/v2 v2.0.4 h1:wfIWP927BUkWJb2NmU/kNDYIBTh/ziUX91+lVfRxZq4= -github.com/cpuguy83/go-md2man/v2 v2.0.4/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= -github.com/crate-crypto/go-ipa v0.0.0-20240223125850-b1e8a79f509c h1:uQYC5Z1mdLRPrZhHjHxufI8+2UG/i25QG92j0Er9p6I= -github.com/crate-crypto/go-ipa v0.0.0-20240223125850-b1e8a79f509c/go.mod h1:geZJZH3SzKCqnz5VT0q/DyIG/tvu/dZk+VIfXicupJs= -github.com/crate-crypto/go-kzg-4844 v1.0.0 h1:TsSgHwrkTKecKJ4kadtHi4b3xHW5dCFUDFnUp1TsawI= -github.com/crate-crypto/go-kzg-4844 v1.0.0/go.mod h1:1kMhvPgI0Ky3yIa+9lFySEBUBXkYxeOi8ZF1sYioxhc= -github.com/creachadair/taskgroup v0.3.2 h1:zlfutDS+5XG40AOxcHDSThxKzns8Tnr9jnr6VqkYlkM= -github.com/creachadair/taskgroup v0.3.2/go.mod h1:wieWwecHVzsidg2CsUnFinW1faVN4+kq+TDlRJQ0Wbk= -github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7DoTY= -github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= -github.com/danieljoos/wincred v1.1.2 h1:QLdCxFs1/Yl4zduvBdcHB8goaYk9RARS2SgLLRuAyr0= -github.com/danieljoos/wincred v1.1.2/go.mod h1:GijpziifJoIBfYh+S7BbkdUTU4LfM+QnGqR5Vl2tAx0= -github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM= -github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/deckarep/golang-set v1.8.0 h1:sk9/l/KqpunDwP7pSjUg0keiOOLEnOBHzykLrsPppp4= -github.com/deckarep/golang-set v1.8.0/go.mod h1:5nI87KwE7wgsBU1F4GKAw2Qod7p5kyS383rP6+o6qqo= -github.com/deckarep/golang-set/v2 v2.6.0 h1:XfcQbWM1LlMB8BsJ8N9vW5ehnnPVIw0je80NsVHagjM= -github.com/deckarep/golang-set/v2 v2.6.0/go.mod h1:VAky9rY/yGXJOLEDv3OMci+7wtDpOF4IN+y82NBOac4= -github.com/decred/base58 v1.0.4 h1:QJC6B0E0rXOPA8U/kw2rP+qiRJsUaE2Er+pYb3siUeA= -github.com/decred/base58 v1.0.4/go.mod h1:jJswKPEdvpFpvf7dsDvFZyLT22xZ9lWqEByX38oGd9E= -github.com/decred/dcrd/chaincfg/chainhash v1.0.2 h1:rt5Vlq/jM3ZawwiacWjPa+smINyLRN07EO0cNBV6DGU= -github.com/decred/dcrd/chaincfg/chainhash v1.0.2/go.mod h1:BpbrGgrPTr3YJYRN3Bm+D9NuaFd+zGyNeIKgrhCXK60= -github.com/decred/dcrd/crypto/blake256 v1.0.0/go.mod h1:sQl2p6Y26YV+ZOcSTP6thNdn47hh8kt6rqSlvmrXFAc= -github.com/decred/dcrd/crypto/blake256 v1.0.1 h1:7PltbUIQB7u/FfZ39+DGa/ShuMyJ5ilcvdfma9wOH6Y= -github.com/decred/dcrd/crypto/blake256 v1.0.1/go.mod h1:2OfgNZ5wDpcsFmHmCK5gZTPcCXqlm2ArzUIkw9czNJo= -github.com/decred/dcrd/dcrec/secp256k1/v2 v2.0.1 h1:18HurQ6DfHeNvwIjvOmrgr44bPdtVaQAe/WWwHg9goM= -github.com/decred/dcrd/dcrec/secp256k1/v2 v2.0.1/go.mod h1:XmyzkaXBy7ZvHdrTAlXAjpog8qKSAWa3ze7yqzWmgmc= -github.com/decred/dcrd/dcrec/secp256k1/v4 v4.2.0 h1:8UrgZ3GkP4i/CLijOJx79Yu+etlyjdBU4sfcs2WYQMs= -github.com/decred/dcrd/dcrec/secp256k1/v4 v4.2.0/go.mod h1:v57UDF4pDQJcEfFUCRop3lJL149eHGSe9Jvczhzjo/0= -github.com/desertbit/timer v0.0.0-20180107155436-c41aec40b27f h1:U5y3Y5UE0w7amNe7Z5G/twsBW0KEalRQXZzf8ufSh9I= -github.com/desertbit/timer v0.0.0-20180107155436-c41aec40b27f/go.mod h1:xH/i4TFMt8koVQZ6WFms69WAsDWr2XsYL3Hkl7jkoLE= -github.com/dgraph-io/badger v1.6.2 h1:mNw0qs90GVgGGWylh0umH5iag1j6n/PeJtNvL6KY/x8= -github.com/dgraph-io/badger/v2 v2.2007.4 h1:TRWBQg8UrlUhaFdco01nO2uXwzKS7zd+HVdwV/GHc4o= -github.com/dgraph-io/badger/v2 v2.2007.4/go.mod h1:vSw/ax2qojzbN6eXHIx6KPKtCSHJN/Uz0X0VPruTIhk= -github.com/dgraph-io/badger/v4 v4.2.0 h1:kJrlajbXXL9DFTNuhhu9yCx7JJa4qpYWxtE8BzuWsEs= -github.com/dgraph-io/badger/v4 v4.2.0/go.mod h1:qfCqhPoWDFJRx1gp5QwwyGo8xk1lbHUxvK9nK0OGAak= -github.com/dgraph-io/ristretto v0.1.1 h1:6CWw5tJNgpegArSHpNHJKldNeq03FQCwYvfMVWajOK8= -github.com/dgraph-io/ristretto v0.1.1/go.mod h1:S1GPSBCYCIhmVNfcth17y2zZtQT6wzkzgwUve0VDWWA= -github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= -github.com/dgryski/go-farm v0.0.0-20190423205320-6a90982ecee2/go.mod h1:SqUrOPUnsFjfmXRMNPybcSiG0BgUW2AuFH8PAnS2iTw= -github.com/dgryski/go-farm v0.0.0-20200201041132-a6ae2369ad13 h1:fAjc9m62+UWV/WAFKLNi6ZS0675eEUC9y3AlwSbQu1Y= -github.com/dgryski/go-farm v0.0.0-20200201041132-a6ae2369ad13/go.mod h1:SqUrOPUnsFjfmXRMNPybcSiG0BgUW2AuFH8PAnS2iTw= -github.com/docker/distribution v2.8.2+incompatible h1:T3de5rq0dB1j30rp0sA2rER+m322EBzniBPB6ZIzuh8= -github.com/docker/distribution v2.8.2+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w= -github.com/docker/docker v24.0.9+incompatible h1:HPGzNmwfLZWdxHqK9/II92pyi1EpYKsAqcl4G0Of9v0= -github.com/docker/docker v24.0.9+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= -github.com/docker/go-connections v0.5.0 h1:USnMq7hx7gwdVZq1L49hLXaFtUdTADjXGp+uj1Br63c= -github.com/docker/go-connections v0.5.0/go.mod h1:ov60Kzw0kKElRwhNs9UlUHAE/F9Fe6GLaXnqyDdmEXc= -github.com/docker/go-units v0.5.0 h1:69rxXcBk27SvSaaxTtLh/8llcHD8vYHT7WSdRZ/jvr4= -github.com/docker/go-units v0.5.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= -github.com/dustin/go-humanize v0.0.0-20171111073723-bb3d318650d4/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= -github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= -github.com/dustin/go-humanize v1.0.1 h1:GzkhY7T5VNhEkwH0PVJgjz+fX1rhBrR7pRT3mDkpeCY= -github.com/dustin/go-humanize v1.0.1/go.mod h1:Mu1zIs6XwVuF/gI1OepvI0qD18qycQx+mFykh5fBlto= -github.com/dvsekhvalnov/jose2go v1.6.0 h1:Y9gnSnP4qEI0+/uQkHvFXeD2PLPJeXEL+ySMEA2EjTY= -github.com/dvsekhvalnov/jose2go v1.6.0/go.mod h1:QsHjhyTlD/lAVqn/NSbVZmSCGeDehTB/mPZadG+mhXU= -github.com/eapache/go-resiliency v1.1.0/go.mod h1:kFI+JgMyC7bLPUVY133qvEBtVayf5mFgVsvEsIPBvNs= -github.com/eapache/go-xerial-snappy v0.0.0-20180814174437-776d5712da21/go.mod h1:+020luEh2TKB4/GOp8oxxtq0Daoen/Cii55CzbTV6DU= -github.com/eapache/queue v1.1.0/go.mod h1:6eCeP0CKFpHLu8blIFXhExK/dRa7WDZfr6jVFPTqq+I= -github.com/edsrzf/mmap-go v1.0.0/go.mod h1:YO35OhQPt3KJa3ryjFM5Bs14WD66h8eGKpfaBNrHW5M= -github.com/emicklei/dot v1.6.1 h1:ujpDlBkkwgWUY+qPId5IwapRW/xEoligRSYjioR6DFI= -github.com/emicklei/dot v1.6.1/go.mod h1:DeV7GvQtIw4h2u73RKBkkFdvVAz0D9fzeJrgPW6gy/s= -github.com/envoyproxy/go-control-plane v0.6.9/go.mod h1:SBwIajubJHhxtWwsL9s8ss4safvEdbitLhGGK48rN6g= -github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= -github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= -github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= -github.com/envoyproxy/go-control-plane v0.9.7/go.mod h1:cwu0lG7PUMfa9snN8LXBig5ynNVH9qI8YYLbd1fK2po= -github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= -github.com/envoyproxy/go-control-plane v0.9.9-0.20210217033140-668b12f5399d/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= -github.com/envoyproxy/go-control-plane v0.9.9-0.20210512163311-63b5d3c536b0/go.mod h1:hliV/p42l8fGbc6Y9bQ70uLwIvmJyVE5k4iMKlh8wCQ= -github.com/envoyproxy/go-control-plane v0.9.10-0.20210907150352-cf90f659a021/go.mod h1:AFq3mo9L8Lqqiid3OhADV3RfLJnjiw63cSpi+fDTRC0= -github.com/envoyproxy/go-control-plane v0.10.2-0.20220325020618-49ff273808a1/go.mod h1:KJwIaB5Mv44NWtYuAOFCVOjcI94vtpEz2JU/D2v6IjE= -github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= -github.com/ethereum/c-kzg-4844 v1.0.0 h1:0X1LBXxaEtYD9xsyj9B9ctQEZIpnvVDeoBx8aHEwTNA= -github.com/ethereum/c-kzg-4844 v1.0.0/go.mod h1:VewdlzQmpT5QSrVhbBuGoCdFJkpaJlO1aQputP83wc0= -github.com/ethereum/go-ethereum v1.14.8 h1:NgOWvXS+lauK+zFukEvi85UmmsS/OkV0N23UZ1VTIig= -github.com/ethereum/go-ethereum v1.14.8/go.mod h1:TJhyuDq0JDppAkFXgqjwpdlQApywnu/m10kFPxh8vvs= -github.com/ethereum/go-verkle v0.1.1-0.20240306133620-7d920df305f0 h1:KrE8I4reeVvf7C1tm8elRjj4BdscTYzz/WAbYyf/JI4= -github.com/ethereum/go-verkle v0.1.1-0.20240306133620-7d920df305f0/go.mod h1:D9AJLVXSyZQXJQVk8oh1EwjISE+sJTn2duYIZC0dy3w= -github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= -github.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk= -github.com/fatih/color v1.16.0 h1:zmkK9Ngbjj+K0yRhTVONQh1p/HknKYSlNT+vZCzyokM= -github.com/fatih/color v1.16.0/go.mod h1:fL2Sau1YI5c0pdGEVCbKQbLXB6edEj1ZgiY4NijnWvE= -github.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2Wg= -github.com/felixge/httpsnoop v1.0.4/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= -github.com/fortytw2/leaktest v1.3.0 h1:u8491cBMTQ8ft8aeV+adlcytMZylmA5nnwwkRZjI8vw= -github.com/fortytw2/leaktest v1.3.0/go.mod h1:jDsjWgpAGjm2CA7WthBh/CdZYEPF31XHquHwclZch5g= -github.com/franela/goblin v0.0.0-20200105215937-c9ffbefa60db/go.mod h1:7dvUGVsVBjqR7JHJk0brhHOZYGmfBYOrK0ZhYMEtBr4= -github.com/franela/goreq v0.0.0-20171204163338-bcd34c9993f8/go.mod h1:ZhphrRTfi2rbfLwlschooIH4+wKKDR4Pdxhh+TRoA20= -github.com/frankban/quicktest v1.14.6 h1:7Xjx+VpznH+oBnejlPUj8oUpdxnVs4f8XU8WnHkI4W8= -github.com/frankban/quicktest v1.14.6/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7zb5vbUoiM6w0= -github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= -github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= -github.com/fsnotify/fsnotify v1.5.4/go.mod h1:OVB6XrOHzAwXMpEM7uPOzcehqUV2UqJxmVXmkdnm1bU= -github.com/fsnotify/fsnotify v1.7.0 h1:8JEhPFa5W2WU7YfeZzPNqzMP6Lwt7L2715Ggo0nosvA= -github.com/fsnotify/fsnotify v1.7.0/go.mod h1:40Bi/Hjc2AVfZrqy+aj+yEI+/bRxZnMJyTJwOpGvigM= -github.com/gballet/go-libpcsclite v0.0.0-20190607065134-2772fd86a8ff h1:tY80oXqGNY4FhTFhk+o9oFHGINQ/+vhlm8HFzi6znCI= -github.com/gballet/go-libpcsclite v0.0.0-20190607065134-2772fd86a8ff/go.mod h1:x7DCsMOv1taUwEWCzT4cmDeAkigA5/QCwUodaVOe8Ww= -github.com/getsentry/sentry-go v0.27.0 h1:Pv98CIbtB3LkMWmXi4Joa5OOcwbmnX88sF5qbK3r3Ps= -github.com/getsentry/sentry-go v0.27.0/go.mod h1:lc76E2QywIyW8WuBnwl8Lc4bkmQH4+w1gwTf25trprY= -github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= -github.com/gin-contrib/sse v0.1.0 h1:Y/yl/+YNO8GZSjAhjMsSuLt29uWRFHdHYUb5lYOV9qE= -github.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm+fLHvGI= -github.com/gin-gonic/gin v1.6.3/go.mod h1:75u5sXoLsGZoRN5Sgbi1eraJ4GU3++wFwWzhwvtwp4M= -github.com/gin-gonic/gin v1.8.1 h1:4+fr/el88TOO3ewCmQr8cx/CtZ/umlIRIs5M4NTNjf8= -github.com/gin-gonic/gin v1.8.1/go.mod h1:ji8BvRH1azfM+SYow9zQ6SZMvR8qOMZHmsCuWR9tTTk= -github.com/go-errors/errors v1.4.2 h1:J6MZopCL4uSllY1OfXM374weqZFFItUbrImctkmUxIA= -github.com/go-errors/errors v1.4.2/go.mod h1:sIVyrIiJhuEF+Pj9Ebtd6P/rEYROXFi3BopGUQ5a5Og= -github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= -github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= -github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= -github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= -github.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= -github.com/go-kit/kit v0.10.0/go.mod h1:xUsJbQ/Fp4kEt7AFgCuvyX4a71u8h9jB8tj/ORgOZ7o= -github.com/go-kit/kit v0.12.0 h1:e4o3o3IsBfAKQh5Qbbiqyfu97Ku7jrO/JbohvztANh4= -github.com/go-kit/kit v0.12.0/go.mod h1:lHd+EkCZPIwYItmGDDRdhinkzX2A1sj+M9biaEaizzs= -github.com/go-kit/log v0.1.0/go.mod h1:zbhenjAZHb184qTLMA9ZjW7ThYL0H2mk7Q6pNt4vbaY= -github.com/go-kit/log v0.2.1 h1:MRVx0/zhvdseW+Gza6N9rVzU/IVzaeE1SFI4raAhmBU= -github.com/go-kit/log v0.2.1/go.mod h1:NwTd00d/i8cPZ3xOwwiv2PO5MOcx78fFErGNcVmBjv0= -github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE= -github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= -github.com/go-logfmt/logfmt v0.5.0/go.mod h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG1KdI/P7A= -github.com/go-logfmt/logfmt v0.6.0 h1:wGYYu3uicYdqXVgoYbvnkrPVXkuLM1p1ifugDMEdRi4= -github.com/go-logfmt/logfmt v0.6.0/go.mod h1:WYhtIu8zTZfxdn5+rREduYbwxfcBr/Vr6KEVveWlfTs= -github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= -github.com/go-logr/logr v1.4.1 h1:pKouT5E8xu9zeFC39JXRDukb6JFQPXM5p5I91188VAQ= -github.com/go-logr/logr v1.4.1/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= -github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= -github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= -github.com/go-ole/go-ole v1.2.5/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0= -github.com/go-ole/go-ole v1.3.0 h1:Dt6ye7+vXGIKZ7Xtk4s6/xVdGDQynvom7xCFEdWr6uE= -github.com/go-ole/go-ole v1.3.0/go.mod h1:5LS6F96DhAwUc7C+1HLexzMXY1xGRSryjyPPKW6zv78= -github.com/go-playground/assert/v2 v2.0.1/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4= -github.com/go-playground/locales v0.13.0/go.mod h1:taPMhCMXrRLJO55olJkUXHZBHCxTMfnGwq/HNwmWNS8= -github.com/go-playground/locales v0.14.0 h1:u50s323jtVGugKlcYeyzC0etD1HifMjqmJqb8WugfUU= -github.com/go-playground/locales v0.14.0/go.mod h1:sawfccIbzZTqEDETgFXqTho0QybSa7l++s0DH+LDiLs= -github.com/go-playground/universal-translator v0.17.0/go.mod h1:UkSxE5sNxxRwHyU+Scu5vgOQjsIJAF8j9muTVoKLVtA= -github.com/go-playground/universal-translator v0.18.0 h1:82dyy6p4OuJq4/CByFNOn/jYrnRPArHwAcmLoJZxyho= -github.com/go-playground/universal-translator v0.18.0/go.mod h1:UvRDBj+xPUEGrFYl+lu/H90nyDXpg0fqeB/AQUGNTVA= -github.com/go-playground/validator v9.31.0+incompatible h1:UA72EPEogEnq76ehGdEDp4Mit+3FDh548oRqwVgNsHA= -github.com/go-playground/validator v9.31.0+incompatible/go.mod h1:yrEkQXlcI+PugkyDjY2bRrL/UBU4f3rvrgkN3V8JEig= -github.com/go-playground/validator/v10 v10.2.0/go.mod h1:uOYAAleCW8F/7oMFd6aG0GOhaH6EGOAJShg8Id5JGkI= -github.com/go-playground/validator/v10 v10.11.1 h1:prmOlTVv+YjZjmRmNSF3VmspqJIxJWXmqUsHwfTRRkQ= -github.com/go-playground/validator/v10 v10.11.1/go.mod h1:i+3WkQ1FvaUjjxh1kSvIA4dMGDBiPU55YFDl0WbKdWU= -github.com/go-sql-driver/mysql v1.4.0/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w= -github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= -github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0/go.mod h1:fyg7847qk6SyHyPtNmDHnmrv/HOrqktSC+C9fM+CJOE= -github.com/gobwas/httphead v0.0.0-20180130184737-2c6c146eadee/go.mod h1:L0fX3K22YWvt/FAX9NnzrNzcI4wNYi9Yku4O0LKYflo= -github.com/gobwas/httphead v0.1.0 h1:exrUm0f4YX0L7EBwZHuCF4GDp8aJfVeBrlLQrs6NqWU= -github.com/gobwas/httphead v0.1.0/go.mod h1:O/RXo79gxV8G+RqlR/otEwx4Q36zl9rqC5u12GKvMCM= -github.com/gobwas/pool v0.2.0/go.mod h1:q8bcK0KcYlCgd9e7WYLm9LpyS+YeLd8JVDW6WezmKEw= -github.com/gobwas/pool v0.2.1 h1:xfeeEhW7pwmX8nuLVlqbzVc7udMDrwetjEv+TZIz1og= -github.com/gobwas/pool v0.2.1/go.mod h1:q8bcK0KcYlCgd9e7WYLm9LpyS+YeLd8JVDW6WezmKEw= -github.com/gobwas/ws v1.0.2/go.mod h1:szmBTxLgaFppYjEmNtny/v3w89xOydFnnZMcgRRu/EM= -github.com/gobwas/ws v1.2.1 h1:F2aeBZrm2NDsc7vbovKrWSogd4wvfAxg0FQ89/iqOTk= -github.com/gobwas/ws v1.2.1/go.mod h1:hRKAFb8wOxFROYNsT1bqfWnhX+b5MFeJM9r2ZSwg/KY= -github.com/goccy/go-json v0.10.2 h1:CrxCmQqYDkv1z7lO7Wbh2HN93uovUHgrECaO5ZrCXAU= -github.com/goccy/go-json v0.10.2/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I= -github.com/godbus/dbus v0.0.0-20190726142602-4481cbc300e2 h1:ZpnhV/YsD2/4cESfV5+Hoeu/iUR3ruzNvZ+yQfO03a0= -github.com/godbus/dbus v0.0.0-20190726142602-4481cbc300e2/go.mod h1:bBOAhwG1umN6/6ZUMtDFBMQR8jRg9O75tm9K00oMsK4= -github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= -github.com/gofrs/flock v0.8.1 h1:+gYjHKf32LDeiEEFhQaotPbLuUXjY5ZqxKgXy7n59aw= -github.com/gofrs/flock v0.8.1/go.mod h1:F1TvTiK9OcQqauNUHlbJvyl9Qa1QvF/gOUDKA14jxHU= -github.com/gogo/googleapis v1.1.0/go.mod h1:gf4bu3Q80BeJ6H1S1vYPm8/ELATdvryBaNFGgqEef3s= -github.com/gogo/googleapis v1.4.1-0.20201022092350-68b0159b7869/go.mod h1:5YRNX2z1oM5gXdAkurHa942MDgEJyk02w4OecKY87+c= -github.com/gogo/googleapis v1.4.1 h1:1Yx4Myt7BxzvUr5ldGSbwYiZG6t9wGBZ+8/fX3Wvtq0= -github.com/gogo/googleapis v1.4.1/go.mod h1:2lpHqI5OcWCtVElxXnPt+s8oJvMpySlOyM6xDCrzib4= -github.com/golang-jwt/jwt/v4 v4.5.0 h1:7cYmW1XlMY7h7ii7UhUyChSgS5wUJEnm9uZVTGqOWzg= -github.com/golang-jwt/jwt/v4 v4.5.0/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0= -github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= -github.com/golang/glog v1.2.1 h1:OptwRhECazUx5ix5TTWC3EZhsZEHWcYWY4FQHTIubm4= -github.com/golang/glog v1.2.1/go.mod h1:6AhwSGph0fcJtXVM/PEHPqZlFeoLxhs7/t5UDAwmO+w= -github.com/golang/groupcache v0.0.0-20160516000752-02826c3e7903/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= -github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= -github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= -github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= -github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da h1:oI5xCqsCo564l8iNU+DwB5epxmsaqB+rhGL0m5jtYqE= -github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= -github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= -github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= -github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y= -github.com/golang/mock v1.4.0/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= -github.com/golang/mock v1.4.1/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= -github.com/golang/mock v1.4.3/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= -github.com/golang/mock v1.4.4/go.mod h1:l3mdAwkq5BuhzHwde/uurv3sEJeZMXNpwsxVWU71h+4= -github.com/golang/mock v1.5.0/go.mod h1:CWnOUgYIOo4TcNZ0wHX3YZCqsaM1I1Jvs6v3mP3KVu8= -github.com/golang/mock v1.6.0 h1:ErTB+efbowRARo13NNdxyJji2egdxLGQhRaY+DUumQc= -github.com/golang/mock v1.6.0/go.mod h1:p6yTPP+5HYm5mzsMV8JkE6ZKdX+/wYM6Hr+LicevLPs= -github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= -github.com/golang/protobuf v1.3.0/go.mod h1:Qd/q+1AKNOZr9uGQzbzCmRO6sUih6GTPZv6a1/R87v0= -github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= -github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= -github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= -github.com/golang/protobuf v1.3.4/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= -github.com/golang/protobuf v1.3.5/go.mod h1:6O5/vntMXwX2lRkT1hjjk0nAC1IDOTvTlVgjlRvqsdk= -github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8= -github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA= -github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs= -github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w= -github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0= -github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8= -github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= -github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= -github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= -github.com/golang/protobuf v1.5.1/go.mod h1:DopwsBzvsk0Fs44TXzsVbJyPhcCPeIwnvohx4u74HPM= -github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= -github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= -github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= -github.com/golang/snappy v0.0.0-20180518054509-2e65f85255db/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= -github.com/golang/snappy v0.0.3/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= -github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= -github.com/golang/snappy v0.0.5-0.20220116011046-fa5810519dcb h1:PBC98N2aIaM3XXiurYmW7fx4GZkL8feAMVq7nEjURHk= -github.com/golang/snappy v0.0.5-0.20220116011046-fa5810519dcb/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= -github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= -github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= -github.com/google/btree v1.1.2 h1:xf4v41cLI2Z6FxbKm+8Bu+m8ifhj15JuZ9sa0jZCMUU= -github.com/google/btree v1.1.2/go.mod h1:qOPhT0dTNdNzV6Z/lhRX0YXUafgPLFUh+gZMl761Gm4= -github.com/google/flatbuffers v1.12.1 h1:MVlul7pQNoDzWRLTw5imwYsl+usrS1TXG2H4jg6ImGw= -github.com/google/flatbuffers v1.12.1/go.mod h1:1AeVuKshWv4vARoZatz6mlQ0JxURH0Kv5+zNeJKJCa8= -github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= -github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= -github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= -github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.4.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.3/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.7/go.mod h1:n+brtR0CgQNWTVd5ZUFpTBC8YFBDLK/h/bpaJ8/DtOE= -github.com/google/go-cmp v0.5.8/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= -github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= -github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= -github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= -github.com/google/gofuzz v0.0.0-20170612174753-24818f796faf/go.mod h1:HP5RmnzzSNb993RKQDq4+1A4ia9nllfqcQFTQJedwGI= -github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= -github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0= -github.com/google/gofuzz v1.2.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= -github.com/google/martian v2.1.0+incompatible h1:/CP5g8u/VJHijgedC/Legn3BAbAaWPgecwXBIDzw5no= -github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= -github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= -github.com/google/martian/v3 v3.1.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= -github.com/google/martian/v3 v3.2.1/go.mod h1:oBOf6HBosgwRXnUGWUB05QECsc6uvmMiJ3+6W4l/CUk= -github.com/google/martian/v3 v3.3.2 h1:IqNFLAmvJOgVlpdEBiQbDc2EwKW77amAycfTuWKdfvw= -github.com/google/martian/v3 v3.3.2/go.mod h1:oBOf6HBosgwRXnUGWUB05QECsc6uvmMiJ3+6W4l/CUk= -github.com/google/orderedcode v0.0.1 h1:UzfcAexk9Vhv8+9pNOgRu41f16lHq725vPwnSeiG/Us= -github.com/google/orderedcode v0.0.1/go.mod h1:iVyU4/qPKHY5h/wSd6rZZCDcLJNxiWO6dvsYES2Sb20= -github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= -github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= -github.com/google/pprof v0.0.0-20191218002539-d4f498aebedc/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/pprof v0.0.0-20200212024743-f11f1df84d12/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/pprof v0.0.0-20200229191704-1ebb73c60ed3/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/pprof v0.0.0-20200430221834-fc25d7d30c6d/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/pprof v0.0.0-20200708004538-1a94d8640e99/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/pprof v0.0.0-20201023163331-3e6fc7fc9c4c/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20201203190320-1bf35d6f28c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20210122040257-d980be63207e/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20210226084205-cbba55b83ad5/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20210407192527-94a9f03dee38/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20210601050228-01bbb1931b22/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20210609004039-a478d1d731e9/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20240409012703-83162a5b38cd h1:gbpYu9NMq8jhDVbvlGkMFWCjLFlqqEZjEmObmhUy6Vo= -github.com/google/pprof v0.0.0-20240409012703-83162a5b38cd/go.mod h1:kf6iHlnVGwgKolg33glAes7Yg/8iWP8ukqeldJSO7jw= -github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= -github.com/google/s2a-go v0.1.7 h1:60BLSyTrOV4/haCDW4zb1guZItoSq8foHCXrAnjBo/o= -github.com/google/s2a-go v0.1.7/go.mod h1:50CgR4k1jNlWBu4UfS4AcfhVe1r6pdZPygJ3R8F0Qdw= -github.com/google/subcommands v1.2.0/go.mod h1:ZjhPrFU+Olkh9WazFPsl27BQ4UPiG37m3yTrtFlrHVk= -github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= -github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/googleapis/enterprise-certificate-proxy v0.0.0-20220520183353-fd19c99a87aa/go.mod h1:17drOmN3MwGY7t0e+Ei9b45FFGA3fBs3x36SsCg1hq8= -github.com/googleapis/enterprise-certificate-proxy v0.1.0/go.mod h1:17drOmN3MwGY7t0e+Ei9b45FFGA3fBs3x36SsCg1hq8= -github.com/googleapis/enterprise-certificate-proxy v0.2.0/go.mod h1:8C0jb7/mgJe/9KK8Lm7X9ctZC2t60YyIpYEI16jx0Qg= -github.com/googleapis/enterprise-certificate-proxy v0.3.2 h1:Vie5ybvEvT75RniqhfFxPRy3Bf7vr3h0cechB90XaQs= -github.com/googleapis/enterprise-certificate-proxy v0.3.2/go.mod h1:VLSiSSBs/ksPL8kq3OBOQ6WRI2QnaFynd1DCjZ62+V0= -github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= -github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= -github.com/googleapis/gax-go/v2 v2.1.0/go.mod h1:Q3nei7sK6ybPYH7twZdmQpAd1MKb7pfu6SK+H1/DsU0= -github.com/googleapis/gax-go/v2 v2.1.1/go.mod h1:hddJymUZASv3XPyGkUpKj8pPO47Rmb0eJc8R6ouapiM= -github.com/googleapis/gax-go/v2 v2.2.0/go.mod h1:as02EH8zWkzwUoLbBaFeQ+arQaj/OthfcblKl4IGNaM= -github.com/googleapis/gax-go/v2 v2.3.0/go.mod h1:b8LNqSzNabLiUpXKkY7HAR5jr6bIT99EXz9pXxye9YM= -github.com/googleapis/gax-go/v2 v2.4.0/go.mod h1:XOTVJ59hdnfJLIP/dh8n5CGryZR2LxK9wbMD5+iXC6c= -github.com/googleapis/gax-go/v2 v2.5.1/go.mod h1:h6B0KMMFNtI2ddbGJn3T3ZbwkeT6yqEF02fYlzkUCyo= -github.com/googleapis/gax-go/v2 v2.6.0/go.mod h1:1mjbznJAPHFpesgE5ucqfYEscaz5kMdcIDwU/6+DDoY= -github.com/googleapis/gax-go/v2 v2.12.3 h1:5/zPPDvw8Q1SuXjrqrZslrqT7dL/uJT2CQii/cLCKqA= -github.com/googleapis/gax-go/v2 v2.12.3/go.mod h1:AKloxT6GtNbaLm8QTNSidHUVsHYcBHwWRvkNFJUQcS4= -github.com/googleapis/go-type-adapters v1.0.0/go.mod h1:zHW75FOG2aur7gAO2B+MLby+cLsWGBF62rFAi7WjWO4= -github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= -github.com/gorilla/context v1.1.1/go.mod h1:kBGZzfjB9CEq2AlWe17Uuf7NDRt0dE0s8S51q0aT7Yg= -github.com/gorilla/handlers v1.5.2 h1:cLTUSsNkgcwhgRqvCNmdbRWG0A3N4F+M2nWKdScwyEE= -github.com/gorilla/handlers v1.5.2/go.mod h1:dX+xVpaxdSw+q0Qek8SSsl3dfMk3jNddUkMzo0GtH0w= -github.com/gorilla/mux v1.6.2/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= -github.com/gorilla/mux v1.7.3/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= -github.com/gorilla/mux v1.8.1 h1:TuBL49tXwgrFYWhqrNgrUNEY92u81SPhu7sTdzQEiWY= -github.com/gorilla/mux v1.8.1/go.mod h1:AKf9I4AEqPTmMytcMc0KkNouC66V3BtZ4qD5fmWSiMQ= -github.com/gorilla/websocket v0.0.0-20170926233335-4201258b820c/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= -github.com/gorilla/websocket v1.4.1/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= -github.com/gorilla/websocket v1.5.0 h1:PPwGk2jz7EePpoHN/+ClbZu8SPxiqlu12wZP/3sWmnc= -github.com/gorilla/websocket v1.5.0/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= -github.com/grpc-ecosystem/go-grpc-middleware v1.0.1-0.20190118093823-f849b5445de4/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= -github.com/grpc-ecosystem/go-grpc-middleware v1.2.2/go.mod h1:EaizFBKfUKtMIF5iaDEhniwNedqGo9FuLFzppDr3uwI= -github.com/grpc-ecosystem/go-grpc-middleware v1.4.0 h1:UH//fgunKIs4JdUbpDl1VZCDaL56wXCB/5+wF6uHfaI= -github.com/grpc-ecosystem/go-grpc-middleware v1.4.0/go.mod h1:g5qyo/la0ALbONm6Vbp88Yd8NsDy6rZz+RcrMPxvld8= -github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk= -github.com/grpc-ecosystem/grpc-gateway v1.9.5/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= -github.com/grpc-ecosystem/grpc-gateway v1.16.0 h1:gmcG1KaJ57LophUzW0Hy8NmPhnMZb4M0+kPpLofRdBo= -github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= -github.com/gsterjov/go-libsecret v0.0.0-20161001094733-a6f4afe4910c h1:6rhixN/i8ZofjG1Y75iExal34USq5p+wiN1tpie8IrU= -github.com/gsterjov/go-libsecret v0.0.0-20161001094733-a6f4afe4910c/go.mod h1:NMPJylDgVpX0MLRlPy15sqSwOFv/U1GZ2m21JhFfek0= -github.com/gtank/merlin v0.1.1-0.20191105220539-8318aed1a79f/go.mod h1:T86dnYJhcGOh5BjZFCJWTDeTK7XW8uE+E21Cy/bIQ+s= -github.com/gtank/merlin v0.1.1 h1:eQ90iG7K9pOhtereWsmyRJ6RAwcP4tHTDBHXNg+u5is= -github.com/gtank/merlin v0.1.1/go.mod h1:T86dnYJhcGOh5BjZFCJWTDeTK7XW8uE+E21Cy/bIQ+s= -github.com/gtank/ristretto255 v0.1.2 h1:JEqUCPA1NvLq5DwYtuzigd7ss8fwbYay9fi4/5uMzcc= -github.com/gtank/ristretto255 v0.1.2/go.mod h1:Ph5OpO6c7xKUGROZfWVLiJf9icMDwUeIvY4OmlYW69o= -github.com/hashicorp/consul/api v1.3.0/go.mod h1:MmDNSzIMUjNpY/mQ398R4bk2FnqQLoPndWW5VkKPlCE= -github.com/hashicorp/consul/sdk v0.3.0/go.mod h1:VKf9jXwCTEY1QZP2MOLRhb5i/I/ssyNV1vwHyQBF0x8= -github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= -github.com/hashicorp/go-bexpr v0.1.10 h1:9kuI5PFotCboP3dkDYFr/wi0gg0QVbSNz5oFRpxn4uE= -github.com/hashicorp/go-bexpr v0.1.10/go.mod h1:oxlubA2vC/gFVfX1A6JGp7ls7uCDlfJn732ehYYg+g0= -github.com/hashicorp/go-cleanhttp v0.5.0/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= -github.com/hashicorp/go-cleanhttp v0.5.1/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= -github.com/hashicorp/go-cleanhttp v0.5.2 h1:035FKYIWjmULyFRBKPs8TBQoi0x6d9G4xc9neXJWAZQ= -github.com/hashicorp/go-cleanhttp v0.5.2/go.mod h1:kO/YDlP8L1346E6Sodw+PrpBSV4/SoxCXGY6BqNFT48= -github.com/hashicorp/go-getter v1.7.4 h1:3yQjWuxICvSpYwqSayAdKRFcvBl1y/vogCxczWSmix0= -github.com/hashicorp/go-getter v1.7.4/go.mod h1:W7TalhMmbPmsSMdNjD0ZskARur/9GJ17cfHTRtXV744= -github.com/hashicorp/go-hclog v1.5.0 h1:bI2ocEMgcVlz55Oj1xZNBsVi900c7II+fWDyV9o+13c= -github.com/hashicorp/go-hclog v1.5.0/go.mod h1:W4Qnvbt70Wk/zYJryRzDRU/4r0kIg0PVHBcfoyhpF5M= -github.com/hashicorp/go-immutable-radix v1.0.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= -github.com/hashicorp/go-immutable-radix v1.3.1 h1:DKHmCUm2hRBK510BaiZlwvpD40f8bJFeZnpfm2KLowc= -github.com/hashicorp/go-immutable-radix v1.3.1/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= -github.com/hashicorp/go-metrics v0.5.3 h1:M5uADWMOGCTUNU1YuC4hfknOeHNaX54LDm4oYSucoNE= -github.com/hashicorp/go-metrics v0.5.3/go.mod h1:KEjodfebIOuBYSAe/bHTm+HChmKSxAOXPBieMLYozDE= -github.com/hashicorp/go-msgpack v0.5.3/go.mod h1:ahLV/dePpqEmjfWmKiqvPkv/twdG7iPBM1vqhUKIvfM= -github.com/hashicorp/go-multierror v1.0.0/go.mod h1:dHtQlpGsu+cZNNAkkCN/P3hoUDHhCYQXV3UM06sGGrk= -github.com/hashicorp/go-plugin v1.5.2 h1:aWv8eimFqWlsEiMrYZdPYl+FdHaBJSN4AWwGWfT1G2Y= -github.com/hashicorp/go-plugin v1.5.2/go.mod h1:w1sAEES3g3PuV/RzUrgow20W2uErMly84hhD3um1WL4= -github.com/hashicorp/go-retryablehttp v0.5.3/go.mod h1:9B5zBasrRhHXnJnui7y6sL7es7NDiJgTc6Er0maI1Xs= -github.com/hashicorp/go-rootcerts v1.0.0/go.mod h1:K6zTfqpRlCUIjkwsN4Z+hiSfzSTQa6eBIzfwKfwNnHU= -github.com/hashicorp/go-safetemp v1.0.0 h1:2HR189eFNrjHQyENnQMMpCiBAsRxzbTMIgBhEyExpmo= -github.com/hashicorp/go-safetemp v1.0.0/go.mod h1:oaerMy3BhqiTbVye6QuFhFtIceqFoDHxNAB65b+Rj1I= -github.com/hashicorp/go-sockaddr v1.0.0/go.mod h1:7Xibr9yA9JjQq1JpNB2Vw7kxv8xerXegt+ozgdvDeDU= -github.com/hashicorp/go-syslog v1.0.0/go.mod h1:qPfqrKkXGihmCqbJM2mZgkZGvKG1dFdvsLplgctolz4= -github.com/hashicorp/go-uuid v1.0.0/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= -github.com/hashicorp/go-uuid v1.0.1/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= -github.com/hashicorp/go-uuid v1.0.3 h1:2gKiV6YVmrJ1i2CKKa9obLvRieoRGviZFL26PcT/Co8= -github.com/hashicorp/go-uuid v1.0.3/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= -github.com/hashicorp/go-version v1.2.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= -github.com/hashicorp/go-version v1.6.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= -github.com/hashicorp/go-version v1.7.0 h1:5tqGy27NaOTB8yJKUZELlFAS/LTKJkrmONwQKeRZfjY= -github.com/hashicorp/go-version v1.7.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= -github.com/hashicorp/go.net v0.0.1/go.mod h1:hjKkEWcCURg++eb33jQU7oqQcI9XDCnUzHA0oac0k90= -github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= -github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= -github.com/hashicorp/golang-lru v1.0.2 h1:dV3g9Z/unq5DpblPpw+Oqcv4dU/1omnb4Ok8iPY6p1c= -github.com/hashicorp/golang-lru v1.0.2/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= -github.com/hashicorp/golang-lru/v2 v2.0.7 h1:a+bsQ5rvGLjzHuww6tVxozPZFVghXaHOwFs4luLUK2k= -github.com/hashicorp/golang-lru/v2 v2.0.7/go.mod h1:QeFd9opnmA6QUJc5vARoKUSoFhyfM2/ZepoAG6RGpeM= -github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= -github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= -github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO+LraFDTW64= -github.com/hashicorp/mdns v1.0.0/go.mod h1:tL+uN++7HEJ6SQLQ2/p+z2pH24WQKWjBPkE0mNTz8vQ= -github.com/hashicorp/memberlist v0.1.3/go.mod h1:ajVTdAv/9Im8oMAAj5G31PhhMCZJV2pPBoIllUwCN7I= -github.com/hashicorp/serf v0.8.2/go.mod h1:6hOLApaqBFA1NXqRQAsxw9QxuDEvNxSQRwA/JwenrHc= -github.com/hashicorp/yamux v0.1.1 h1:yrQxtgseBDrq9Y652vSRDvsKCJKOUD+GzTS4Y0Y8pvE= -github.com/hashicorp/yamux v0.1.1/go.mod h1:CtWFDAQgb7dxtzFs4tWbplKIe2jSi3+5vKbgIO0SLnQ= -github.com/hdevalence/ed25519consensus v0.1.0 h1:jtBwzzcHuTmFrQN6xQZn6CQEO/V9f7HsjsjeEZ6auqU= -github.com/hdevalence/ed25519consensus v0.1.0/go.mod h1:w3BHWjwJbFU29IRHL1Iqkw3sus+7FctEyM4RqDxYNzo= -github.com/holiman/billy v0.0.0-20240216141850-2abb0c79d3c4 h1:X4egAf/gcS1zATw6wn4Ej8vjuVGxeHdan+bRb2ebyv4= -github.com/holiman/billy v0.0.0-20240216141850-2abb0c79d3c4/go.mod h1:5GuXa7vkL8u9FkFuWdVvfR5ix8hRB7DbOAaYULamFpc= -github.com/holiman/bloomfilter/v2 v2.0.3 h1:73e0e/V0tCydx14a0SCYS/EWCxgwLZ18CZcZKVu0fao= -github.com/holiman/bloomfilter/v2 v2.0.3/go.mod h1:zpoh+gs7qcpqrHr3dB55AMiJwo0iURXE7ZOP9L9hSkA= -github.com/holiman/uint256 v1.3.1 h1:JfTzmih28bittyHM8z360dCjIA9dbPIBlcTI6lmctQs= -github.com/holiman/uint256 v1.3.1/go.mod h1:EOMSn4q6Nyt9P6efbI3bueV4e1b3dGlUCXeiRV4ng7E= -github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= -github.com/huandu/go-assert v1.1.5 h1:fjemmA7sSfYHJD7CUqs9qTwwfdNAx7/j2/ZlHXzNB3c= -github.com/huandu/go-assert v1.1.5/go.mod h1:yOLvuqZwmcHIC5rIzrBhT7D3Q9c3GFnd0JrPVhn/06U= -github.com/huandu/skiplist v1.2.0 h1:gox56QD77HzSC0w+Ws3MH3iie755GBJU1OER3h5VsYw= -github.com/huandu/skiplist v1.2.0/go.mod h1:7v3iFjLcSAzO4fN5B8dvebvo/qsfumiLiDXMrPiHF9w= -github.com/hudl/fargo v1.3.0/go.mod h1:y3CKSmjA+wD2gak7sUSXTAoopbhU08POFhmITJgmKTg= -github.com/huin/goupnp v1.3.0 h1:UvLUlWDNpoUdYzb2TCn+MuTWtcjXKSza2n6CBdQ0xXc= -github.com/huin/goupnp v1.3.0/go.mod h1:gnGPsThkYa7bFi/KWmEysQRf48l2dvR5bxr2OFckNX8= -github.com/iancoleman/strcase v0.3.0 h1:nTXanmYxhfFAMjZL34Ov6gkzEsSJZ5DbhxWjvSASxEI= -github.com/iancoleman/strcase v0.3.0/go.mod h1:iwCmte+B7n89clKwxIoIXy/HfoL7AsD47ZCWhYzw7ho= -github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= -github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= -github.com/icza/dyno v0.0.0-20220812133438-f0b6f8a18845 h1:H+uM0Bv88eur3ZSsd2NGKg3YIiuXxwxtlN7HjE66UTU= -github.com/icza/dyno v0.0.0-20220812133438-f0b6f8a18845/go.mod h1:c1tRKs5Tx7E2+uHGSyyncziFjvGpgv4H2HrqXeUQ/Uk= -github.com/improbable-eng/grpc-web v0.15.0 h1:BN+7z6uNXZ1tQGcNAuaU1YjsLTApzkjt2tzCixLaUPQ= -github.com/improbable-eng/grpc-web v0.15.0/go.mod h1:1sy9HKV4Jt9aEs9JSnkWlRJPuPtwNr0l57L4f878wP8= -github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= -github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= -github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= -github.com/influxdata/influxdb1-client v0.0.0-20191209144304-8bf82d3c094d/go.mod h1:qj24IKcXYK6Iy9ceXlo3Tc+vtHo9lIhSX5JddghvEPo= -github.com/ipfs/go-cid v0.4.1 h1:A/T3qGvxi4kpKWWcPC/PgbvDA2bjVLO7n4UeVwnbs/s= -github.com/ipfs/go-cid v0.4.1/go.mod h1:uQHwDeX4c6CtyrFwdqyhpNcxVewur1M7l7fNU7LKwZk= -github.com/jackpal/go-nat-pmp v1.0.2 h1:KzKSgb7qkJvOUTqYl9/Hg/me3pWgBmERKrTGD7BdWus= -github.com/jackpal/go-nat-pmp v1.0.2/go.mod h1:QPH045xvCAeXUZOxsnwmrtiCoxIr9eob+4orBN1SBKc= -github.com/jhump/protoreflect v1.15.3 h1:6SFRuqU45u9hIZPJAoZ8c28T3nK64BNdp9w6jFonzls= -github.com/jhump/protoreflect v1.15.3/go.mod h1:4ORHmSBmlCW8fh3xHmJMGyul1zNqZK4Elxc8qKP+p1k= -github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= -github.com/jmespath/go-jmespath v0.4.0 h1:BEgLn5cpjn8UN1mAw4NjwDrS35OdebyEtFe+9YPoQUg= -github.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHWvzYPziyZiYoo= -github.com/jmespath/go-jmespath/internal/testify v1.5.1 h1:shLQSRRSCCPj3f2gpwzGwWFoC7ycTf1rcQZHOlsJ6N8= -github.com/jmespath/go-jmespath/internal/testify v1.5.1/go.mod h1:L3OGu8Wl2/fWfCI6z80xFu9LTZmf1ZRjMHUOPmWr69U= -github.com/jmhodges/levigo v1.0.0 h1:q5EC36kV79HWeTBWsod3mG11EgStG3qArTKcvlksN1U= -github.com/jmhodges/levigo v1.0.0/go.mod h1:Q6Qx+uH3RAqyK4rFQroq9RL7mdkABMcfhEI+nNuzMJQ= -github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo= -github.com/jpillora/backoff v1.0.0/go.mod h1:J/6gKK9jxlEcS3zixgDgUAsiuZ7yrSoa/FX5e0EB2j4= -github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= -github.com/json-iterator/go v1.1.7/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= -github.com/json-iterator/go v1.1.8/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= -github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= -github.com/json-iterator/go v1.1.10/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= -github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= -github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= -github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= -github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk= -github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= -github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= -github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM= -github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= -github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= -github.com/klauspost/compress v1.10.3/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= -github.com/klauspost/compress v1.11.7/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= -github.com/klauspost/compress v1.15.11/go.mod h1:QPwzmACJjUTFsnSHH934V6woptycfrDDJnH7hvFVbGM= -github.com/klauspost/compress v1.17.7 h1:ehO88t2UGzQK66LMdE8tibEd1ErmzZjNEqWkjLAKQQg= -github.com/klauspost/compress v1.17.7/go.mod h1:Di0epgTjJY877eYKx5yC51cX2A2Vl2ibi7bDH9ttBbw= -github.com/klauspost/cpuid/v2 v2.2.7 h1:ZWSB3igEs+d0qvnxR/ZBzXVmxkgt8DdzP6m9pfuVLDM= -github.com/klauspost/cpuid/v2 v2.2.7/go.mod h1:Lcz8mBdAVJIBVzewtcLocK12l3Y+JytZYpaMropDUws= -github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= -github.com/konsorten/go-windows-terminal-sequences v1.0.3/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= -github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= -github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= -github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= -github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= -github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= -github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= -github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= -github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= -github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc= -github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw= -github.com/leanovate/gopter v0.2.9 h1:fQjYxZaynp97ozCzfOyOuAGOU4aU/z37zf/tOujFk7c= -github.com/leanovate/gopter v0.2.9/go.mod h1:U2L/78B+KVFIx2VmW6onHJQzXtFb+p5y3y2Sh+Jxxv8= -github.com/leodido/go-urn v1.2.0/go.mod h1:+8+nEpDfqqsY+g338gtMEUOtuK+4dEMhiQEgxpxOKII= -github.com/leodido/go-urn v1.2.1 h1:BqpAaACuzVSgi/VLzGZIobT2z4v53pjosyNd9Yv6n/w= -github.com/leodido/go-urn v1.2.1/go.mod h1:zt4jvISO2HfUBqxjfIshjdMTYS56ZS/qv49ictyFfxY= -github.com/lib/pq v1.10.7 h1:p7ZhMD+KsSRozJr34udlUrhboJwWAgCg34+/ZZNvZZw= -github.com/lib/pq v1.10.7/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= -github.com/libp2p/go-buffer-pool v0.1.0 h1:oK4mSFcQz7cTQIfqbe4MIj9gLW+mnanjyFtc6cdF0Y8= -github.com/libp2p/go-buffer-pool v0.1.0/go.mod h1:N+vh8gMqimBzdKkSMVuydVDq+UV5QTWy5HSiZacSbPg= -github.com/libp2p/go-libp2p v0.31.0 h1:LFShhP8F6xthWiBBq3euxbKjZsoRajVEyBS9snfHxYg= -github.com/libp2p/go-libp2p v0.31.0/go.mod h1:W/FEK1c/t04PbRH3fA9i5oucu5YcgrG0JVoBWT1B7Eg= -github.com/lightstep/lightstep-tracer-common/golang/gogo v0.0.0-20190605223551-bc2310a04743/go.mod h1:qklhhLq1aX+mtWk9cPHPzaBjWImj5ULL6C7HFJtXQMM= -github.com/lightstep/lightstep-tracer-go v0.18.1/go.mod h1:jlF1pusYV4pidLvZ+XD0UBX0ZE6WURAspgAczcDHrL4= -github.com/linxGnu/grocksdb v1.8.14 h1:HTgyYalNwBSG/1qCQUIott44wU5b2Y9Kr3z7SK5OfGQ= -github.com/linxGnu/grocksdb v1.8.14/go.mod h1:QYiYypR2d4v63Wj1adOOfzglnoII0gLj3PNh4fZkcFA= -github.com/lyft/protoc-gen-validate v0.0.13/go.mod h1:XbGvPuh87YZc5TdIa2/I4pLk0QoUACkjt2znoq26NVQ= -github.com/magiconair/properties v1.8.7 h1:IeQXZAiQcpL9mgcAe1Nu6cX9LLw6ExEHKjN0VQdvPDY= -github.com/magiconair/properties v1.8.7/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0= -github.com/manifoldco/promptui v0.9.0 h1:3V4HzJk1TtXW1MTZMP7mdlwbBpIinw3HztaIlYthEiA= -github.com/manifoldco/promptui v0.9.0/go.mod h1:ka04sppxSGFAtxX0qhlYQjISsg9mR4GWtQEhdbn6Pgg= -github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= -github.com/mattn/go-colorable v0.1.9/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= -github.com/mattn/go-colorable v0.1.12/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4= -github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= -github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg= -github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= -github.com/mattn/go-isatty v0.0.4/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= -github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= -github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94= -github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= -github.com/mattn/go-isatty v0.0.19/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= -github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= -github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= -github.com/mattn/go-runewidth v0.0.2/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= -github.com/mattn/go-runewidth v0.0.4/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= -github.com/mattn/go-runewidth v0.0.15 h1:UNAjwbU9l54TA3KzvqLGxwWjHmMgBUVhBiTjelZgg3U= -github.com/mattn/go-runewidth v0.0.15/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= -github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= -github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= -github.com/mimoo/StrobeGo v0.0.0-20181016162300-f8f6d4d2b643/go.mod h1:43+3pMjjKimDBf5Kr4ZFNGbLql1zKkbImw+fZbw3geM= -github.com/mimoo/StrobeGo v0.0.0-20220103164710-9a04d6ca976b h1:QrHweqAtyJ9EwCaGHBu1fghwxIPiopAHV06JlXrMHjk= -github.com/mimoo/StrobeGo v0.0.0-20220103164710-9a04d6ca976b/go.mod h1:xxLb2ip6sSUts3g1irPVHyk/DGslwQsNOo9I7smJfNU= -github.com/minio/highwayhash v1.0.2 h1:Aak5U0nElisjDCfPSG79Tgzkn2gl66NxOMspRrKnA/g= -github.com/minio/highwayhash v1.0.2/go.mod h1:BQskDq+xkJ12lmlUUi7U0M5Swg3EWR+dLTk+kldvVxY= -github.com/minio/sha256-simd v1.0.1 h1:6kaan5IFmwTNynnKKpDHe6FWHohJOHhCPchzK49dzMM= -github.com/minio/sha256-simd v1.0.1/go.mod h1:Pz6AKMiUdngCLpeTL/RJY1M9rUuPMYujV5xJjtbRSN8= -github.com/misko9/go-substrate-rpc-client/v4 v4.0.0-20240603204351-26b456ae3afe h1:0fcCSfvBgbagEsEMkZuxgA3Ex7IN9i1Hon0fwgMLpQw= -github.com/misko9/go-substrate-rpc-client/v4 v4.0.0-20240603204351-26b456ae3afe/go.mod h1:Q5BxOd9FxJqYp4vCiLGVdetecPcWTmUQIu0bRigYosU= -github.com/mitchellh/cli v1.0.0/go.mod h1:hNIlj7HEI86fIcpObd7a0FcrxTWetlwJDGcceTlRvqc= -github.com/mitchellh/go-homedir v1.0.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= -github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y= -github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= -github.com/mitchellh/go-testing-interface v1.0.0/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI= -github.com/mitchellh/go-testing-interface v1.14.1 h1:jrgshOhYAUVNMAJiKbEu7EqAwgJJ2JqpQmpLJOu07cU= -github.com/mitchellh/go-testing-interface v1.14.1/go.mod h1:gfgS7OtZj6MA4U1UrDRp04twqAjfvlZyCfX3sDjEym8= -github.com/mitchellh/gox v0.4.0/go.mod h1:Sd9lOJ0+aimLBi73mGofS1ycjY8lL3uZM3JPS42BGNg= -github.com/mitchellh/iochan v1.0.0/go.mod h1:JwYml1nuB7xOzsp52dPpHFffvOCDupsG0QubkSMEySY= -github.com/mitchellh/mapstructure v0.0.0-20160808181253-ca63d7c062ee/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= -github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= -github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY= -github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= -github.com/mitchellh/pointerstructure v1.2.0 h1:O+i9nHnXS3l/9Wu7r4NrEdwA2VFTicjUEN1uBnDo34A= -github.com/mitchellh/pointerstructure v1.2.0/go.mod h1:BRAsLI5zgXmw97Lf6s25bs8ohIXc3tViBH44KcwB2g4= -github.com/mmcloughlin/addchain v0.4.0 h1:SobOdjm2xLj1KkXN5/n0xTIWyZA2+s99UCY1iPfkHRY= -github.com/mmcloughlin/addchain v0.4.0/go.mod h1:A86O+tHqZLMNO4w6ZZ4FlVQEadcoqkyU72HC5wJ4RlU= -github.com/mmcloughlin/profile v0.1.1/go.mod h1:IhHD7q1ooxgwTgjxQYkACGA77oFTDdFVejUS1/tS/qU= -github.com/moby/term v0.0.0-20221205130635-1aeaba878587 h1:HfkjXDfhgVaN5rmueG8cL8KKeFNecRCXFhaJ2qZ5SKA= -github.com/moby/term v0.0.0-20221205130635-1aeaba878587/go.mod h1:8FzsFHVUBGZdbDsJw/ot+X+d5HLUbvklYLJ9uGfcI3Y= -github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= -github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= -github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= -github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= -github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= -github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M= -github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= -github.com/morikuni/aec v1.0.0 h1:nP9CBfwrvYnBRgY6qfDQkygYDmYwOilePFkwzv4dU8A= -github.com/morikuni/aec v1.0.0/go.mod h1:BbKIizmSmc5MMPqRYbxO4ZU0S0+P200+tUnFx7PXmsc= -github.com/mr-tron/base58 v1.2.0 h1:T/HDJBh4ZCPbU39/+c3rRvE0uKBQlU27+QI8LJ4t64o= -github.com/mr-tron/base58 v1.2.0/go.mod h1:BinMc/sQntlIE1frQmRFPUoPA1Zkr8VRgBdjWI2mNwc= -github.com/mtibben/percent v0.2.1 h1:5gssi8Nqo8QU/r2pynCm+hBQHpkB/uNK7BJCFogWdzs= -github.com/mtibben/percent v0.2.1/go.mod h1:KG9uO+SZkUp+VkRHsCdYQV3XSZrrSpR3O9ibNBTZrns= -github.com/multiformats/go-base32 v0.1.0 h1:pVx9xoSPqEIQG8o+UbAe7DNi51oej1NtK+aGkbLYxPE= -github.com/multiformats/go-base32 v0.1.0/go.mod h1:Kj3tFY6zNr+ABYMqeUNeGvkIC/UYgtWibDcT0rExnbI= -github.com/multiformats/go-base36 v0.2.0 h1:lFsAbNOGeKtuKozrtBsAkSVhv1p9D0/qedU9rQyccr0= -github.com/multiformats/go-base36 v0.2.0/go.mod h1:qvnKE++v+2MWCfePClUEjE78Z7P2a1UV0xHgWc0hkp4= -github.com/multiformats/go-multiaddr v0.11.0 h1:XqGyJ8ufbCE0HmTDwx2kPdsrQ36AGPZNZX6s6xfJH10= -github.com/multiformats/go-multiaddr v0.11.0/go.mod h1:gWUm0QLR4thQ6+ZF6SXUw8YjtwQSPapICM+NmCkxHSM= -github.com/multiformats/go-multibase v0.2.0 h1:isdYCVLvksgWlMW9OZRYJEa9pZETFivncJHmHnnd87g= -github.com/multiformats/go-multibase v0.2.0/go.mod h1:bFBZX4lKCA/2lyOFSAoKH5SS6oPyjtnzK/XTFDPkNuk= -github.com/multiformats/go-multicodec v0.9.0 h1:pb/dlPnzee/Sxv/j4PmkDRxCOi3hXTz3IbPKOXWJkmg= -github.com/multiformats/go-multicodec v0.9.0/go.mod h1:L3QTQvMIaVBkXOXXtVmYE+LI16i14xuaojr/H7Ai54k= -github.com/multiformats/go-multihash v0.2.3 h1:7Lyc8XfX/IY2jWb/gI7JP+o7JEq9hOa7BFvVU9RSh+U= -github.com/multiformats/go-multihash v0.2.3/go.mod h1:dXgKXCXjBzdscBLk9JkjINiEsCKRVch90MdaGiKsvSM= -github.com/multiformats/go-varint v0.0.7 h1:sWSGR+f/eu5ABZA2ZpYKBILXTTs9JWpdEM/nEGOHFS8= -github.com/multiformats/go-varint v0.0.7/go.mod h1:r8PUYw/fD/SjBCiKOoDlGF6QawOELpZAu9eioSos/OU= -github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= -github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f h1:KUppIJq7/+SVif2QVs3tOP0zanoHgBEVAwHxUSIzRqU= -github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= -github.com/mwitkow/grpc-proxy v0.0.0-20181017164139-0f1106ef9c76/go.mod h1:x5OoJHDHqxHS801UIuhqGl6QdSAEJvtausosHSdazIo= -github.com/nats-io/jwt v0.3.0/go.mod h1:fRYCDE99xlTsqUzISS1Bi75UBJ6ljOJQOAAu5VglpSg= -github.com/nats-io/jwt v0.3.2/go.mod h1:/euKqTS1ZD+zzjYrY7pseZrTtWQSjujC7xjPc8wL6eU= -github.com/nats-io/nats-server/v2 v2.1.2/go.mod h1:Afk+wRZqkMQs/p45uXdrVLuab3gwv3Z8C4HTBu8GD/k= -github.com/nats-io/nats.go v1.9.1/go.mod h1:ZjDU1L/7fJ09jvUSRVBR2e7+RnLiiIQyqyzEE/Zbp4w= -github.com/nats-io/nkeys v0.1.0/go.mod h1:xpnFELMwJABBLVhffcfd1MZx6VsNRFpEugbxziKVo7w= -github.com/nats-io/nkeys v0.1.3/go.mod h1:xpnFELMwJABBLVhffcfd1MZx6VsNRFpEugbxziKVo7w= -github.com/nats-io/nuid v1.0.1/go.mod h1:19wcPz3Ph3q0Jbyiqsd0kePYG7A95tJPxeL+1OSON2c= -github.com/ncruces/go-strftime v0.1.9 h1:bY0MQC28UADQmHmaF5dgpLmImcShSi2kHU9XLdhx/f4= -github.com/ncruces/go-strftime v0.1.9/go.mod h1:Fwc5htZGVVkseilnfgOVb9mKy6w1naJmn9CehxcKcls= -github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= -github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A= -github.com/nxadm/tail v1.4.8 h1:nPr65rt6Y5JFSKQO7qToXr7pePgD6Gwiw05lkbyAQTE= -github.com/nxadm/tail v1.4.8/go.mod h1:+ncqLTQzXmGhMZNUePPaPqPvBxHAIsmXswZKocGu+AU= -github.com/oasisprotocol/curve25519-voi v0.0.0-20230904125328-1f23a7beb09a h1:dlRvE5fWabOchtH7znfiFCcOvmIYgOeAS5ifBXBlh9Q= -github.com/oasisprotocol/curve25519-voi v0.0.0-20230904125328-1f23a7beb09a/go.mod h1:hVoHR2EVESiICEMbg137etN/Lx+lSrHPTD39Z/uE+2s= -github.com/oklog/oklog v0.3.2/go.mod h1:FCV+B7mhrz4o+ueLpx+KqkyXRGMWOYEvfiXtdGtbWGs= -github.com/oklog/run v1.0.0/go.mod h1:dlhp/R75TPv97u0XWUtDeV/lRKWPKSdTuV0TZvrmrQA= -github.com/oklog/run v1.1.0 h1:GEenZ1cK0+q0+wsJew9qUg/DyD8k3JzYsZAi5gYi2mA= -github.com/oklog/run v1.1.0/go.mod h1:sVPdnTZT1zYwAJeCMu2Th4T21pA3FPOQRfWjQlk7DVU= -github.com/olekukonko/tablewriter v0.0.0-20170122224234-a0225b3f23b5/go.mod h1:vsDQFd/mU46D+Z4whnwzcISnGGzXWMclvtLoiIKAKIo= -github.com/olekukonko/tablewriter v0.0.5 h1:P2Ga83D34wi1o9J6Wh1mRuqd4mF/x/lgBS7N7AbDhec= -github.com/olekukonko/tablewriter v0.0.5/go.mod h1:hPp6KlRPjbx+hW8ykQs1w3UBbZlj6HuIJcUGPhkA7kY= -github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= -github.com/onsi/ginkgo v1.7.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= -github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk= -github.com/onsi/ginkgo v1.16.4/go.mod h1:dX+/inL/fNMqNlz0e9LfyB9TswhZpCVdJM/Z6Vvnwo0= -github.com/onsi/ginkgo v1.16.5 h1:8xi0RTUf59SOSfEtZMvwTvXYMzG4gV23XVHOZiXNtnE= -github.com/onsi/ginkgo v1.16.5/go.mod h1:+E8gABHa3K6zRBolWtd+ROzc/U5bkGt0FwiG042wbpU= -github.com/onsi/ginkgo/v2 v2.1.3/go.mod h1:vw5CSIxN1JObi/U8gcbwft7ZxR2dgaR70JSE3/PpL4c= -github.com/onsi/gomega v1.4.3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= -github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY= -github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= -github.com/onsi/gomega v1.17.0/go.mod h1:HnhC7FXeEQY45zxNK3PPoIUhzk/80Xly9PcubAlGdZY= -github.com/onsi/gomega v1.19.0/go.mod h1:LY+I3pBVzYsTBU1AnDwOSxaYi9WoWiqgwooUqq9yPro= -github.com/onsi/gomega v1.27.10 h1:naR28SdDFlqrG6kScpT8VWpu1xWY5nJRCF3XaYyBjhI= -github.com/onsi/gomega v1.27.10/go.mod h1:RsS8tutOdbdgzbPtzzATp12yT7kM5I5aElG3evPbQ0M= -github.com/op/go-logging v0.0.0-20160315200505-970db520ece7/go.mod h1:HzydrMdWErDVzsI23lYNej1Htcns9BCg93Dk0bBINWk= -github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U= -github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM= -github.com/opencontainers/image-spec v1.1.0-rc2 h1:2zx/Stx4Wc5pIPDvIxHXvXtQFW/7XWJGmnM7r3wg034= -github.com/opencontainers/image-spec v1.1.0-rc2/go.mod h1:3OVijpioIKYWTqjiG0zfF6wvoJ4fAXGbjdZuI2NgsRQ= -github.com/opencontainers/runc v1.1.3 h1:vIXrkId+0/J2Ymu2m7VjGvbSlAId9XNRPhn2p4b+d8w= -github.com/opencontainers/runc v1.1.3/go.mod h1:1J5XiS+vdZ3wCyZybsuxXZWGrgSr8fFJHLXuG2PsnNg= -github.com/opentracing-contrib/go-observer v0.0.0-20170622124052-a52f23424492/go.mod h1:Ngi6UdF0k5OKD5t5wlmGhe/EDKPoUM3BXZSSfIuJbis= -github.com/opentracing/basictracer-go v1.0.0/go.mod h1:QfBfYuafItcjQuMwinw9GhYKwFXS9KnPs5lxoYwgW74= -github.com/opentracing/opentracing-go v1.0.2/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= -github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= -github.com/openzipkin-contrib/zipkin-go-opentracing v0.4.5/go.mod h1:/wsWhb9smxSfWAKL3wpBW7V8scJMt8N8gnaMCS9E/cA= -github.com/openzipkin/zipkin-go v0.1.6/go.mod h1:QgAqvLzwWbR/WpD4A3cGpPtJrZXNIiJc5AZX7/PBEpw= -github.com/openzipkin/zipkin-go v0.2.1/go.mod h1:NaW6tEwdmWMaCDZzg8sh+IBNOxHMPnhQw8ySjnjRyN4= -github.com/openzipkin/zipkin-go v0.2.2/go.mod h1:NaW6tEwdmWMaCDZzg8sh+IBNOxHMPnhQw8ySjnjRyN4= -github.com/ory/dockertest v3.3.5+incompatible h1:iLLK6SQwIhcbrG783Dghaaa3WPzGc+4Emza6EbVUUGA= -github.com/ory/dockertest v3.3.5+incompatible/go.mod h1:1vX4m9wsvi00u5bseYwXaSnhNrne+V0E6LAcBILJdPs= -github.com/oxyno-zeta/gomock-extra-matcher v1.2.0 h1:WPEclU0y0PMwUzdDcaKZvld4aXpa3fkzjiUMQdcBEHg= -github.com/oxyno-zeta/gomock-extra-matcher v1.2.0/go.mod h1:S0r7HmKeCGsHmvIVFMjKWwswb4+30nCNWbXRMBVPkaU= -github.com/pact-foundation/pact-go v1.0.4/go.mod h1:uExwJY4kCzNPcHRj+hCR/HBbOOIwwtUjcrb0b5/5kLM= -github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= -github.com/pascaldekloe/goe v0.1.0 h1:cBOtyMzM9HTpWjXfbbunk26uA6nG3a8n06Wieeh0MwY= -github.com/pascaldekloe/goe v0.1.0/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= -github.com/pborman/uuid v1.2.0/go.mod h1:X/NO0urCmaxf9VXbdlT7C2Yzkj2IKimNn4k+gtPdI/k= -github.com/pelletier/go-toml v1.9.5 h1:4yBQzkHv+7BHq2PQUZF3Mx0IYxG7LsP222s7Agd3ve8= -github.com/pelletier/go-toml v1.9.5/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c= -github.com/pelletier/go-toml/v2 v2.2.2 h1:aYUidT7k73Pcl9nb2gScu7NSrKCSHIDE89b3+6Wq+LM= -github.com/pelletier/go-toml/v2 v2.2.2/go.mod h1:1t835xjRzz80PqgE6HHgN2JOsmgYu/h4qDAS4n929Rs= -github.com/performancecopilot/speed v3.0.0+incompatible/go.mod h1:/CLtqpZ5gBg1M9iaPbIdPPGyKcA8hKdoy6hAWba7Yac= -github.com/petermattis/goid v0.0.0-20180202154549-b0b1615b78e5/go.mod h1:jvVRKCrJTQWu0XVbaOlby/2lO20uSCHEMzzplHXte1o= -github.com/petermattis/goid v0.0.0-20231207134359-e60b3f734c67 h1:jik8PHtAIsPlCRJjJzl4udgEf7hawInF9texMeO2jrU= -github.com/petermattis/goid v0.0.0-20231207134359-e60b3f734c67/go.mod h1:pxMtw7cyUw6B2bRH0ZBANSPg+AoSud1I1iyJHI69jH4= -github.com/pierrec/lz4 v1.0.2-0.20190131084431-473cd7ce01a1/go.mod h1:3/3N9NVKO0jef7pBehbT1qWhCMrIgbYNnFAZCqQ5LRc= -github.com/pierrec/lz4 v2.0.5+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY= -github.com/pierrec/xxHash v0.1.5 h1:n/jBpwTHiER4xYvK3/CdPVnLDPchj8eTJFFLUb4QHBo= -github.com/pierrec/xxHash v0.1.5/go.mod h1:w2waW5Zoa/Wc4Yqe0wgrIYAGKqRMf7czn2HNKXmuL+I= -github.com/pingcap/errors v0.11.4 h1:lFuQV/oaUMGcD2tqt+01ROSmJs75VG1ToEOkZIZ4nE4= -github.com/pingcap/errors v0.11.4/go.mod h1:Oi8TUi2kEtXXLMJk9l1cGmz20kV3TaQ0usTwv5KuLY8= -github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA= -github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= -github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= -github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= -github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= -github.com/pkg/profile v1.2.1/go.mod h1:hJw3o1OdXxsrSjjVksARp5W95eeEaEfptyVZyv6JUPA= -github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= -github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/posener/complete v1.1.1/go.mod h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndrE9hABlRI= -github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= -github.com/prometheus/client_golang v0.9.3-0.20190127221311-3c4408c8b829/go.mod h1:p2iRAGwDERtqlqzRXnrOVns+ignqQo//hLXqYxZYVNs= -github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo= -github.com/prometheus/client_golang v1.3.0/go.mod h1:hJaj2vgQTGQmVCsAACORcieXFeDPbaTKGT+JTgUa3og= -github.com/prometheus/client_golang v1.4.0/go.mod h1:e9GMxYsXl05ICDXkRhurwBS4Q3OK1iX/F2sw+iXX5zU= -github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M= -github.com/prometheus/client_golang v1.19.0 h1:ygXvpU1AoN1MhdzckN+PyD9QJOSD4x7kmXYlnfbA6JU= -github.com/prometheus/client_golang v1.19.0/go.mod h1:ZRM9uEAypZakd+q/x7+gmsvXdURP+DABIEIjnmDdp+k= -github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= -github.com/prometheus/client_model v0.0.0-20190115171406-56726106282f/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= -github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -github.com/prometheus/client_model v0.1.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -github.com/prometheus/client_model v0.2.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -github.com/prometheus/client_model v0.6.1 h1:ZKSh/rekM+n3CeS952MLRAdFwIKqeY8b62p8ais2e9E= -github.com/prometheus/client_model v0.6.1/go.mod h1:OrxVMOVHjw3lKMa8+x6HeMGkHMQyHDk9E3jmP2AmGiY= -github.com/prometheus/common v0.2.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= -github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= -github.com/prometheus/common v0.7.0/go.mod h1:DjGbpBbp5NYNiECxcL/VnbXCCaQpKd3tt26CguLLsqA= -github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8bs7vj7HSQ4= -github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo= -github.com/prometheus/common v0.15.0/go.mod h1:U+gB1OBLb1lF3O42bTCL+FK18tX9Oar16Clt/msog/s= -github.com/prometheus/common v0.52.2 h1:LW8Vk7BccEdONfrJBDffQGRtpSzi5CQaRZGtboOO2ck= -github.com/prometheus/common v0.52.2/go.mod h1:lrWtQx+iDfn2mbH5GUzlH9TSHyfZpHkSiG1W7y3sF2Q= -github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= -github.com/prometheus/procfs v0.0.0-20190117184657-bf6a532e95b1/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= -github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= -github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A= -github.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= -github.com/prometheus/procfs v0.3.0/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= -github.com/prometheus/procfs v0.13.0 h1:GqzLlQyfsPbaEHaQkO7tbDlriv/4o5Hudv6OXHGKX7o= -github.com/prometheus/procfs v0.13.0/go.mod h1:cd4PFCR54QLnGKPaKGA6l+cfuNXtht43ZKY6tow0Y1g= -github.com/rcrowley/go-metrics v0.0.0-20181016184325-3113b8401b8a/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= -github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 h1:N/ElC8H3+5XpJzTSTfLsJV/mx9Q9g7kxmchpfZyxgzM= -github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= -github.com/regen-network/protobuf v1.3.3-alpha.regen.1 h1:OHEc+q5iIAXpqiqFKeLpu5NwTIkVXUs48vFMwzqpqY4= -github.com/regen-network/protobuf v1.3.3-alpha.regen.1/go.mod h1:2DjTFR1HhMQhiWC5sZ4OhQ3+NtdbZ6oBDKQwq5Ou+FI= -github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec h1:W09IVJc94icq4NjY3clb7Lk8O1qJ8BdBEF8z0ibU0rE= -github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec/go.mod h1:qqbHyh8v60DhA7CoWK5oRCqLrMHRGoxYCSS9EjAz6Eo= -github.com/rivo/uniseg v0.4.3 h1:utMvzDsuh3suAEnhH0RdHmoPbU648o6CvXxTx4SBMOw= -github.com/rivo/uniseg v0.4.3/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88= -github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg= -github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= -github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= -github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs= -github.com/rogpeppe/go-internal v1.12.0 h1:exVL4IDcn6na9z1rAb56Vxr+CgyK3nn3O+epU5NdKM8= -github.com/rogpeppe/go-internal v1.12.0/go.mod h1:E+RYuTGaKKdloAfM02xzb0FW3Paa99yedzYV+kq4uf4= -github.com/rs/cors v1.7.0/go.mod h1:gFx+x8UowdsKA9AchylcLynDq+nNFfI8FkUZdN/jGCU= -github.com/rs/cors v1.8.3 h1:O+qNyWn7Z+F9M0ILBHgMVPuB1xTOucVd5gtaYyXBpRo= -github.com/rs/cors v1.8.3/go.mod h1:XyqrcTp5zjWr1wsJ8PIRZssZ8b/WMcMf71DJnit4EMU= -github.com/rs/xid v1.5.0/go.mod h1:trrq9SKmegXys3aeAKXMUTdJsYXVwGY3RLcfgqegfbg= -github.com/rs/zerolog v1.32.0 h1:keLypqrlIjaFsbmJOBdB/qvyF8KEtCWHwobLp5l/mQ0= -github.com/rs/zerolog v1.32.0/go.mod h1:/7mN4D5sKwJLZQ2b/znpjC3/GQWY/xaDXUM0kKWRHss= -github.com/russross/blackfriday v1.6.0 h1:KqfZb0pUVN2lYqZUYRddxF4OR8ZMURnJIG5Y3VRLtww= -github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= -github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk= -github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= -github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= -github.com/sagikazarmark/locafero v0.4.0 h1:HApY1R9zGo4DBgr7dqsTH/JJxLTTsOt7u6keLGt6kNQ= -github.com/sagikazarmark/locafero v0.4.0/go.mod h1:Pe1W6UlPYUk/+wc/6KFhbORCfqzgYEpgQ3O5fPuL3H4= -github.com/sagikazarmark/slog-shim v0.1.0 h1:diDBnUNK9N/354PgrxMywXnAwEr1QZcOr6gto+ugjYE= -github.com/sagikazarmark/slog-shim v0.1.0/go.mod h1:SrcSrq8aKtyuqEI1uvTDTK1arOWRIczQRv+GVI1AkeQ= -github.com/samuel/go-zookeeper v0.0.0-20190923202752-2cc03de413da/go.mod h1:gi+0XIa01GRL2eRQVjQkKGqKF3SF9vZR/HnPullcV2E= -github.com/sasha-s/go-deadlock v0.3.1 h1:sqv7fDNShgjcaxkO0JNcOAlr8B9+cV5Ey/OB71efZx0= -github.com/sasha-s/go-deadlock v0.3.1/go.mod h1:F73l+cr82YSh10GxyRI6qZiCgK64VaZjwesgfQ1/iLM= -github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc= -github.com/shirou/gopsutil v3.21.4-0.20210419000835-c7a38de76ee5+incompatible h1:Bn1aCHHRnjv4Bl16T8rcaFjYSrGrIZvpiGO6P3Q4GpU= -github.com/shirou/gopsutil v3.21.4-0.20210419000835-c7a38de76ee5+incompatible/go.mod h1:5b4v6he4MtMOwMlS0TUMTu2PcXUg8+E1lC7eC3UO/RA= -github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= -github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= -github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= -github.com/sirupsen/logrus v1.6.0/go.mod h1:7uNnSEd1DgxDLC74fIahvMZmmYsHGZGEOFrfsX/uA88= -github.com/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= -github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ= -github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= -github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= -github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= -github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM= -github.com/sony/gobreaker v0.4.1/go.mod h1:ZKptC7FHNvhBz7dN2LGjPVBz2sZJmc0/PkyDJOjmxWY= -github.com/sourcegraph/conc v0.3.0 h1:OQTbbt6P72L20UqAkXXuLOj79LfEanQ+YQFNpLA9ySo= -github.com/sourcegraph/conc v0.3.0/go.mod h1:Sdozi7LEKbFPqYX2/J+iBAM6HpqSLTASQIKqDmF7Mt0= -github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= -github.com/spaolacci/murmur3 v1.1.0 h1:7c1g84S4BPRrfL5Xrdp6fOJ206sU9y293DDHaoy0bLI= -github.com/spaolacci/murmur3 v1.1.0/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= -github.com/spf13/afero v1.11.0 h1:WJQKhtpdm3v2IzqG8VMqrr6Rf3UYpEF239Jy9wNepM8= -github.com/spf13/afero v1.11.0/go.mod h1:GH9Y3pIexgf1MTIWtNGyogA5MwRIDXGUr+hbWNoBjkY= -github.com/spf13/cast v1.6.0 h1:GEiTHELF+vaR5dhz3VqZfFSzZjYbgeKDpBxQVS4GYJ0= -github.com/spf13/cast v1.6.0/go.mod h1:ancEpBxwJDODSW/UG4rDrAqiKolqNNh2DX3mk86cAdo= -github.com/spf13/cobra v0.0.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= -github.com/spf13/cobra v1.8.1 h1:e5/vxKd/rZsfSJMUX1agtjeTDf+qv1/JdBF8gg5k9ZM= -github.com/spf13/cobra v1.8.1/go.mod h1:wHxEcudfqmLYa8iTfL+OuZPbBZkmvliBWKIezN3kD9Y= -github.com/spf13/pflag v1.0.1/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= -github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= -github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= -github.com/spf13/viper v1.19.0 h1:RWq5SEjt8o25SROyN3z2OrDB9l7RPd3lwTWU8EcEdcI= -github.com/spf13/viper v1.19.0/go.mod h1:GQUN9bilAbhU/jgc1bKs99f/suXKeUMct8Adx5+Ntkg= -github.com/status-im/keycard-go v0.2.0 h1:QDLFswOQu1r5jsycloeQh3bVU8n/NatHHaZobtDnDzA= -github.com/status-im/keycard-go v0.2.0/go.mod h1:wlp8ZLbsmrF6g6WjugPAx+IzoLrkdf9+mHxBEeo3Hbg= -github.com/streadway/amqp v0.0.0-20190404075320-75d898a42a94/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw= -github.com/streadway/amqp v0.0.0-20190827072141-edfb9018d271/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw= -github.com/streadway/handy v0.0.0-20190108123426-d5acb3125c2a/go.mod h1:qNTQ5P5JnDBl6z3cMAg/SywNDC5ABu5ApDIw6lUbRmI= -github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= -github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= -github.com/stretchr/objx v0.5.2 h1:xuMeJ0Sdp5ZMRXx/aWO6RZxdr3beISkG5/G/aIRr3pY= -github.com/stretchr/objx v0.5.2/go.mod h1:FRsXN1f5AsAjCGJKqEizvkpNtU+EGNCLh3NxZ/8L+MA= -github.com/stretchr/testify v1.1.5-0.20170601210322-f6abca593680/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= -github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= -github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= -github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= -github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= -github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/stretchr/testify v1.7.2/go.mod h1:R6va5+xMeoiuVRoj+gSkQ7d3FALtqAAGI1FQKckRals= -github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= -github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= -github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= -github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= -github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= -github.com/subosito/gotenv v1.6.0 h1:9NlTDc1FTs4qu0DDq7AEtTPNw6SVm7uBMsUCUjABIf8= -github.com/subosito/gotenv v1.6.0/go.mod h1:Dk4QP5c2W3ibzajGcXpNraDfq2IrhjMIvMSWPKKo0FU= -github.com/supranational/blst v0.3.11 h1:LyU6FolezeWAhvQk0k6O/d49jqgO52MSDDfYgbeoEm4= -github.com/supranational/blst v0.3.11/go.mod h1:jZJtfjgudtNl4en1tzwPIV3KjUnQUvG3/j+w+fVonLw= -github.com/syndtr/goleveldb v1.0.1-0.20220721030215-126854af5e6d h1:vfofYNRScrDdvS342BElfbETmL1Aiz3i2t0zfRj16Hs= -github.com/syndtr/goleveldb v1.0.1-0.20220721030215-126854af5e6d/go.mod h1:RRCYJbIwD5jmqPI9XoAFR0OcDxqUctll6zUj/+B4S48= -github.com/tecbot/gorocksdb v0.0.0-20191217155057-f0fad39f321c h1:g+WoO5jjkqGAzHWCjJB1zZfXPIAaDpzXIEJ0eS6B5Ok= -github.com/tecbot/gorocksdb v0.0.0-20191217155057-f0fad39f321c/go.mod h1:ahpPrc7HpcfEWDQRZEmnXMzHY03mLDYMCxeDzy46i+8= -github.com/tendermint/go-amino v0.16.0 h1:GyhmgQKvqF82e2oZeuMSp9JTN0N09emoSZlb2lyGa2E= -github.com/tendermint/go-amino v0.16.0/go.mod h1:TQU0M1i/ImAo+tYpZi73AU3V/dKeCoMC9Sphe2ZwGME= -github.com/tendermint/tendermint v0.38.0-dev h1:yX4zsEgTF9PxlLmhx9XAPTGH2E9FSlqSpHcY7sW7Vb8= -github.com/tendermint/tendermint v0.38.0-dev/go.mod h1:EHKmaqObmcGysoRr7krxXoxxhUDyYWbKvvRYJ9tCGWY= -github.com/tendermint/tm-db v0.6.6 h1:EzhaOfR0bdKyATqcd5PNeyeq8r+V4bRPHBfyFdD9kGM= -github.com/tendermint/tm-db v0.6.6/go.mod h1:wP8d49A85B7/erz/r4YbKssKw6ylsO/hKtFk7E1aWZI= -github.com/tidwall/btree v1.7.0 h1:L1fkJH/AuEh5zBnnBbmTwQ5Lt+bRJ5A8EWecslvo9iI= -github.com/tidwall/btree v1.7.0/go.mod h1:twD9XRA5jj9VUQGELzDO4HPQTNJsoWWfYEL+EUQ2cKY= -github.com/tidwall/gjson v1.17.1 h1:wlYEnwqAHgzmhNUFfw7Xalt2JzQvsMx2Se4PcoFCT/U= -github.com/tidwall/gjson v1.17.1/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= -github.com/tidwall/match v1.1.1 h1:+Ho715JplO36QYgwN9PGYNhgZvoUSc9X2c80KVTi+GA= -github.com/tidwall/match v1.1.1/go.mod h1:eRSPERbgtNPcGhD8UCthc6PmLEQXEWd3PRB5JTxsfmM= -github.com/tidwall/pretty v1.2.0 h1:RWIZEg2iJ8/g6fDDYzMpobmaoGh5OLl4AXtGUGPcqCs= -github.com/tidwall/pretty v1.2.0/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU= -github.com/tklauser/go-sysconf v0.3.12 h1:0QaGUFOdQaIVdPgfITYzaTegZvdCjmYO52cSFAEVmqU= -github.com/tklauser/go-sysconf v0.3.12/go.mod h1:Ho14jnntGE1fpdOqQEEaiKRpvIavV0hSfmBq8nJbHYI= -github.com/tklauser/numcpus v0.6.1 h1:ng9scYS7az0Bk4OZLvrNXNSAO2Pxr1XXRAPyjhIx+Fk= -github.com/tklauser/numcpus v0.6.1/go.mod h1:1XfjsgE2zo8GVw7POkMbHENHzVg3GzmoZ9fESEdAacY= -github.com/tmc/grpc-websocket-proxy v0.0.0-20170815181823-89b8d40f7ca8/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= -github.com/tv42/httpunix v0.0.0-20150427012821-b75d8614f926/go.mod h1:9ESjWnEqriFuLhtthL60Sar/7RFoluCcXsuvEwTV5KM= -github.com/tyler-smith/go-bip32 v1.0.0 h1:sDR9juArbUgX+bO/iblgZnMPeWY1KZMUC2AFUJdv5KE= -github.com/tyler-smith/go-bip32 v1.0.0/go.mod h1:onot+eHknzV4BVPwrzqY5OoVpyCvnwD7lMawL5aQupE= -github.com/tyler-smith/go-bip39 v1.1.0 h1:5eUemwrMargf3BSLRRCalXT93Ns6pQJIjYQN2nyfOP8= -github.com/tyler-smith/go-bip39 v1.1.0/go.mod h1:gUYDtqQw1JS3ZJ8UWVcGTGqqr6YIN3CWg+kkNaLt55U= -github.com/ugorji/go v1.1.7 h1:/68gy2h+1mWMrwZFeD1kQialdSzAb432dtpeJ42ovdo= -github.com/ugorji/go v1.1.7/go.mod h1:kZn38zHttfInRq0xu/PH0az30d+z6vm202qpg1oXVMw= -github.com/ugorji/go/codec v1.1.7/go.mod h1:Ax+UKWsSmolVDwsd+7N3ZtXu+yMGCf907BLYF3GoBXY= -github.com/ugorji/go/codec v1.2.11 h1:BMaWp1Bb6fHwEtbplGBGJ498wD+LKlNSl25MjdZY4dU= -github.com/ugorji/go/codec v1.2.11/go.mod h1:UNopzCgEMSXjBc6AOMqYvWC1ktqTAfzJZUZgYf6w6lg= -github.com/ulikunitz/xz v0.5.10/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14= -github.com/ulikunitz/xz v0.5.11 h1:kpFauv27b6ynzBNT/Xy+1k+fK4WswhN/6PN5WhFAGw8= -github.com/ulikunitz/xz v0.5.11/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14= -github.com/urfave/cli v1.20.0/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA= -github.com/urfave/cli v1.22.1 h1:+mkCCcOFKPnCmVYVcURKps1Xe+3zP90gSYGNfRkjoIY= -github.com/urfave/cli v1.22.1/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= -github.com/urfave/cli/v2 v2.25.7 h1:VAzn5oq403l5pHjc4OhD54+XGO9cdKVL/7lDjF+iKUs= -github.com/urfave/cli/v2 v2.25.7/go.mod h1:8qnjx1vcq5s2/wpsqoZFndg2CE5tNFyrTvS6SinrnYQ= -github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= -github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673 h1:bAn7/zixMGCfxrRTfdpNzjtPYqr8smhKouy9mxVdGPU= -github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673/go.mod h1:N3UwUGtsrSj3ccvlPHLoLsHnpR27oXr4ZE984MbSER8= -github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= -github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= -github.com/zondax/hid v0.9.2 h1:WCJFnEDMiqGF64nlZz28E9qLVZ0KSJ7xpc5DLEyma2U= -github.com/zondax/hid v0.9.2/go.mod h1:l5wttcP0jwtdLjqjMMWFVEE7d1zO0jvSPA9OPZxWpEM= -github.com/zondax/ledger-go v0.14.3 h1:wEpJt2CEcBJ428md/5MgSLsXLBos98sBOyxNmCjfUCw= -github.com/zondax/ledger-go v0.14.3/go.mod h1:IKKaoxupuB43g4NxeQmbLXv7T9AlQyie1UpHb342ycI= -go.etcd.io/bbolt v1.3.3/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= -go.etcd.io/bbolt v1.4.0-alpha.0.0.20240404170359-43604f3112c5 h1:qxen9oVGzDdIRP6ejyAJc760RwW4SnVDiTYTzwnXuxo= -go.etcd.io/bbolt v1.4.0-alpha.0.0.20240404170359-43604f3112c5/go.mod h1:eW0HG9/oHQhvRCvb1/pIXW4cOvtDqeQK+XSi3TnwaXY= -go.etcd.io/etcd v0.0.0-20191023171146-3cf2f69b5738/go.mod h1:dnLIgRNXwCJa5e+c6mIZCrds/GIG4ncV9HhK5PX7jPg= -go.opencensus.io v0.20.1/go.mod h1:6WKK9ahsWS3RSO+PY9ZHZUfv2irvY6gN279GOPZjmmk= -go.opencensus.io v0.20.2/go.mod h1:6WKK9ahsWS3RSO+PY9ZHZUfv2irvY6gN279GOPZjmmk= -go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= -go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= -go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= -go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= -go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= -go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk= -go.opencensus.io v0.23.0/go.mod h1:XItmlyltB5F7CS4xOC1DcqMoFqwtC6OG2xF7mCv7P7E= -go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0= -go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo= -go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.49.0 h1:4Pp6oUg3+e/6M4C0A/3kJ2VYa++dsWVTtGgLVj5xtHg= -go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.49.0/go.mod h1:Mjt1i1INqiaoZOMGR1RIUJN+i3ChKoFRqzrRQhlkbs0= -go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0 h1:jq9TW8u3so/bN+JPT166wjOI6/vQPF6Xe7nMNIltagk= -go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0/go.mod h1:p8pYQP+m5XfbZm9fxtSKAbM6oIllS7s2AfxrChvc7iw= -go.opentelemetry.io/otel v1.24.0 h1:0LAOdjNmQeSTzGBzduGe/rU4tZhMwL5rWgtp9Ku5Jfo= -go.opentelemetry.io/otel v1.24.0/go.mod h1:W7b9Ozg4nkF5tWI5zsXkaKKDjdVjpD4oAt9Qi/MArHo= -go.opentelemetry.io/otel/metric v1.24.0 h1:6EhoGWWK28x1fbpA4tYTOWBkPefTDQnb8WSGXlc88kI= -go.opentelemetry.io/otel/metric v1.24.0/go.mod h1:VYhLe1rFfxuTXLgj4CBiyz+9WYBA8pNGJgDcSFRKBco= -go.opentelemetry.io/otel/sdk v1.22.0 h1:6coWHw9xw7EfClIC/+O31R8IY3/+EiRFHevmHafB2Gw= -go.opentelemetry.io/otel/sdk v1.22.0/go.mod h1:iu7luyVGYovrRpe2fmj3CVKouQNdTOkxtLzPvPz1DOc= -go.opentelemetry.io/otel/trace v1.24.0 h1:CsKnnL4dUAr/0llH9FKuc698G04IrpWV0MQA/Y1YELI= -go.opentelemetry.io/otel/trace v1.24.0/go.mod h1:HPc3Xr/cOApsBI154IU0OI0HJexz+aw5uPdbs3UCjNU= -go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= -go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= -go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= -go.uber.org/atomic v1.5.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= -go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= -go.uber.org/goleak v1.1.10/go.mod h1:8a7PlsEVH3e/a/GLqe5IIrQx6GzcnRmZEufDUTk4A7A= -go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto= -go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE= -go.uber.org/mock v0.2.0 h1:TaP3xedm7JaAgScZO7tlvlKrqT0p7I6OsdGB5YNSMDU= -go.uber.org/mock v0.2.0/go.mod h1:J0y0rp9L3xiff1+ZBfKxlC1fz2+aO16tw0tsDOixfuM= -go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= -go.uber.org/multierr v1.3.0/go.mod h1:VgVr7evmIr6uPjLBxg28wmKNXyqE9akIJ5XnfpiKl+4= -go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU= -go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0= -go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= -go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee/go.mod h1:vJERXedbb3MVM5f9Ejo0C68/HhF8uaILCdgjnY+goOA= -go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= -go.uber.org/zap v1.13.0/go.mod h1:zwrFLgMcdUuIBviXEYEH1YKNaOBnKXsx2IPda5bBwHM= -go.uber.org/zap v1.18.1/go.mod h1:xg/QME4nWcxGxrpdeYfq7UvYrLh66cuVKdrbD1XF/NI= -go.uber.org/zap v1.27.0 h1:aJMhYGrd5QSmlpLMr2MftRKl7t8J8PTZPA732ud/XR8= -go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= -golang.org/x/crypto v0.0.0-20170613210332-850760c427c5/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= -golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= -golang.org/x/crypto v0.0.0-20181029021203-45a5f77698d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= -golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= -golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20190701094942-4def268fd1a4/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20191206172530-e9b2fee46413/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20200728195943-123391ffb6de/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= -golang.org/x/crypto v0.25.0 h1:ypSNr+bnYL2YhwoMt2zPxHFmbAN1KZs/njMG3hxUp30= -golang.org/x/crypto v0.25.0/go.mod h1:T+wALwcMOSE0kXgUAnPAHqTLW+XHgcELELW8VaDgm/M= -golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= -golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= -golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= -golang.org/x/exp v0.0.0-20190829153037-c13cbed26979/go.mod h1:86+5VVa7VpoJ4kLfm080zCjGlMRFzhUhsZKEZO7MGek= -golang.org/x/exp v0.0.0-20191030013958-a1ab85dbe136/go.mod h1:JXzH8nQsPlswgeRAPE3MuO9GYsAcnJvJ4vnMwN/5qkY= -golang.org/x/exp v0.0.0-20191129062945-2f5052295587/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= -golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= -golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= -golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM= -golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= -golang.org/x/exp v0.0.0-20200331195152-e8c3332aa8e5/go.mod h1:4M0jN8W1tt0AVLNr8HDosyJCDCDuyL9N9+3m7wDWgKw= -golang.org/x/exp v0.0.0-20240404231335-c0f41cb1a7a0 h1:985EYyeCOxTpcgOTJpflJUwOeEz0CQOdPt73OzpE9F8= -golang.org/x/exp v0.0.0-20240404231335-c0f41cb1a7a0/go.mod h1:/lliqkxwWAhPjf5oSOIJup2XcqJaw8RGS6k3TGEc7GI= -golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= -golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= -golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= -golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= -golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= -golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/lint v0.0.0-20190409202823-959b441ac422/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/lint v0.0.0-20190909230951-414d861bb4ac/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f/go.mod h1:5qLYkcX4OjUUV8bRuDixDT3tpyyb+LUpUlRWLxfhWrs= -golang.org/x/lint v0.0.0-20200130185559-910be7a94367/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= -golang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= -golang.org/x/lint v0.0.0-20201208152925-83fdc39ff7b5/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= -golang.org/x/lint v0.0.0-20210508222113-6edffad5e616/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= -golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE= -golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o= -golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc= -golang.org/x/mod v0.1.0/go.mod h1:0QHyrYULN0/3qlju5TqG8bIK38QM8yzMo5ekMj3DlcY= -golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= -golang.org/x/mod v0.1.1-0.20191107180719-034126e5016b/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= -golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.4.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= -golang.org/x/mod v0.19.0 h1:fEdghXQSo20giMthA7cd28ZC+jts4amQ3YMXiP5oMQ8= -golang.org/x/mod v0.19.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= -golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20181023162649-9b4f9f5ad519/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20181201002055-351d144fa1fc/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20181220203305-927f97764cc3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20190125091013-d26f9f9a57f3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190501004415-9ce7a6920f09/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190503192946-f4e77d36d62c/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= -golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20190628185345-da137c7871d7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20190813141303-74dc4d7220e7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200222125558-5a598a2470a0/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200301022130-244492dfa37a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200421231249-e086a090c8fd/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200501053045-e0ff5e5a1de5/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200506145744-7e3656a0809f/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200513185701-a91f0712d120/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200520004742-59133d7f0dd7/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200520182314-0ba52f642ac2/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= -golang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= -golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= -golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.0.0-20201031054903-ff519b6c9102/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.0.0-20201209123823-ac852fbbde11/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= -golang.org/x/net v0.0.0-20210119194325-5f4716e94777/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= -golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= -golang.org/x/net v0.0.0-20210316092652-d523dce5a7f4/go.mod h1:RBQZq4jEuRlivfhVLdyRGr576XBO4/greRjx4P4O3yc= -golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= -golang.org/x/net v0.0.0-20210428140749-89ef3d95e781/go.mod h1:OJAsFXCWl8Ukc7SiCT/9KSuxbyM7479/AVlXFRxuMCk= -golang.org/x/net v0.0.0-20210503060351-7fd8e65b6420/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20210805182204-aaa1db679c0d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= -golang.org/x/net v0.0.0-20220225172249-27dd8689420f/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= -golang.org/x/net v0.0.0-20220325170049-de3da57026de/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= -golang.org/x/net v0.0.0-20220412020605-290c469a71a5/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= -golang.org/x/net v0.0.0-20220425223048-2871e0cb64e4/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= -golang.org/x/net v0.0.0-20220607020251-c690dde0001d/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= -golang.org/x/net v0.0.0-20220617184016-355a448f1bc9/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= -golang.org/x/net v0.0.0-20220624214902-1bab6f366d9e/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= -golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= -golang.org/x/net v0.0.0-20220909164309-bea034e7d591/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= -golang.org/x/net v0.0.0-20221014081412-f15817d10f9b/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= -golang.org/x/net v0.1.0/go.mod h1:Cx3nUiGt4eDBEyega/BKRp+/AlGL8hYe7U9odMt2Cco= -golang.org/x/net v0.27.0 h1:5K3Njcw06/l2y9vpGCSdcxWOYHOUk3dVNGDXN+FvAys= -golang.org/x/net v0.27.0/go.mod h1:dDi0PyhWNoiUOrAS8uXv/vnScO4wnHQO4mj9fn/RytE= -golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= -golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= -golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= -golang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= -golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= -golang.org/x/oauth2 v0.0.0-20200902213428-5d25da1a8d43/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20201109201403-9fd604954f58/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20201208152858-08078c50e5b5/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210218202405-ba52d332ba99/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210220000619-9bb904979d93/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210313182246-cd4f82c27b84/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210514164344-f6687ab2804c/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210628180205-a41e5a781914/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210805134026-6f1e6394065a/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210819190943-2bc19b11175f/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20211104180415-d3ed0bb246c8/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20220223155221-ee480838109b/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc= -golang.org/x/oauth2 v0.0.0-20220309155454-6242fa91716a/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc= -golang.org/x/oauth2 v0.0.0-20220411215720-9780585627b5/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc= -golang.org/x/oauth2 v0.0.0-20220608161450-d0670ef3b1eb/go.mod h1:jaDAt6Dkxork7LmZnYtzbRWj0W47D86a3TGe0YHBvmE= -golang.org/x/oauth2 v0.0.0-20220622183110-fd043fe589d2/go.mod h1:jaDAt6Dkxork7LmZnYtzbRWj0W47D86a3TGe0YHBvmE= -golang.org/x/oauth2 v0.0.0-20220822191816-0ebed06d0094/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= -golang.org/x/oauth2 v0.0.0-20220909003341-f21342109be1/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= -golang.org/x/oauth2 v0.0.0-20221014153046-6fdb5e3db783/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= -golang.org/x/oauth2 v0.1.0/go.mod h1:G9FE4dLTsbXUu90h/Pf85g4w1D+SSAgR+q46nJZ8M4A= -golang.org/x/oauth2 v0.20.0 h1:4mQdhULixXKP1rwYBW0vAijoXnkTG0BLCDRzfe1idMo= -golang.org/x/oauth2 v0.20.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= -golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20220601150217-0de741cfad7f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20220929204114-8fcdb60fdcc0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.7.0 h1:YsImfSBoP9QPYL0xyKJPq0gcaJdG3rInoqxTWbfQu9M= -golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= -golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20181026203630-95b1ffbd15a5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20181107165924-66b7b1311ac8/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20181122145206-62eef0e2fa9b/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190130150945-aca44879d564/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190826190057-c7b8b68b1456/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190904154756-749cb33beabd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191220142924-d4481acd189f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200106162015-b016eb3dc98e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200113162924-86b910548bc1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200202164722-d101bd2416d5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200212091648-12a6c2dcc1e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200331124033-c3d80250170d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200420163511-1957bb5e6d1f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200501052902-10377860bb8e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200511232937-7e40ca221e25/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200515095857-1151b9dac4a9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200523222454-059865788121/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200615200032-f1bc736245b1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200625212154-ddb9806d33ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200803210538-64077c9b5642/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200905004654-be1d3432aa8f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20201201145000-ef89a241ccb3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210104204734-6f8348627aad/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210112080510-489259a85091/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210220050731-9a76102bfb43/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210305230114-8fe3ee5dd75b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210315160823-c6e025ad8005/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210320140829-1e4c9ba3b0c4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210514084401-e8d321eab015/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210603125802-9665404d3644/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210616094352-59db8d763f22/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210806184541-e5e7981a1069/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210809222454-d867a43fc93e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210819135213-f52c844e1c1c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210823070655-63515b42dcdf/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210908233432-aa78b53d3365/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20211025201205-69cdffdb9359/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20211124211545-fe61309f8881/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20211210111614-af8b64212486/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220128215802-99c3d69c2c27/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220209214540-3681064d5158/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220227234510-4e6760a101f9/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220310020820-b874c991c1a5/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220315194320-039c03cc5b86/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220328115105-d36c6a25d886/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220412211240-33da011f77ad/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220502124256-b6088ccd6cba/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220503163025-988cb79eb6c6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220610221304-9f5ed59c137d/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220615213510-4f61da869c0c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220624220833-87e55d714810/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220728004956-3c1f35247d10/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20221010170243-090e33056c14/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.11.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.22.0 h1:RI27ohtqKCnwULzJLqkv897zojh5/DwS/ENaMzUOaWI= -golang.org/x/sys v0.22.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= -golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= -golang.org/x/term v0.1.0/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= -golang.org/x/term v0.22.0 h1:BbsgPEJULsl2fV/AT3v15Mjva5yXKQDyKf+TbDz7QJk= -golang.org/x/term v0.22.0/go.mod h1:F3qCibpT5AMpCRfhfT53vVJwhLtIVHhB9XDjfFvnMI4= -golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= -golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= -golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= -golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= -golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= -golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= -golang.org/x/text v0.16.0 h1:a94ExnEXNtEwYLGJSIUxnWoxoRz/ZcCsV63ROupILh4= -golang.org/x/text v0.16.0/go.mod h1:GhwF1Be+LQoKShO3cGOHzqOgRrGaYc9AvblQOmPVHnI= -golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.5.0 h1:o7cqy6amK/52YcAKIPlM3a+Fpj35zvRj2TP+e1xFSfk= -golang.org/x/time v0.5.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= -golang.org/x/tools v0.0.0-20180828015842-6cd1fcedba52/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= -golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= -golang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= -golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= -golang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= -golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= -golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= -golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191029041327-9cc4af7d6b2c/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191029190741-b9c20aec41a5/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191108193012-7d206e10da11/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191113191852-77e3bb0ad9e7/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191115202509-3a792d9c32b2/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191125144606-a911d9008d1f/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191130070609-6e064ea0cf2d/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191216173652-a0e659d51361/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20191227053925-7b8e75db28f4/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200103221440-774c71fcf114/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200117161641-43d50277825c/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200122220014-bf1340f18c4a/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200204074204-1cc6d1ef6c74/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200207183749-b753a1ba74fa/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200212150539-ea181f53ac56/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200224181240-023911ca70b2/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200227222343-706bc42d1f0d/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200304193943-95d2e580d8eb/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= -golang.org/x/tools v0.0.0-20200312045724-11d5b4c81c7d/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= -golang.org/x/tools v0.0.0-20200331025713-a30bf2db82d4/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= -golang.org/x/tools v0.0.0-20200501065659-ab2804fb9c9d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200512131952-2bc93b1c0c88/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200515010526-7d3b6ebf133d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200618134242-20370b0cb4b2/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200729194436-6467de6f59a7/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= -golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= -golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= -golang.org/x/tools v0.0.0-20200904185747-39188db58858/go.mod h1:Cj7w3i3Rnn0Xh82ur9kSqwfTHTeVxaDqrfMjpcNT6bE= -golang.org/x/tools v0.0.0-20201110124207-079ba7bd75cd/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.0.0-20201201161351-ac6f37ff4c2a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.0.0-20201208233053-a543418bbed2/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.0.0-20201224043029-2b0845dc783e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.0.0-20210105154028-b0ab187a4818/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0= -golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= -golang.org/x/tools v0.1.2/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= -golang.org/x/tools v0.1.3/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= -golang.org/x/tools v0.1.4/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= -golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= -golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= -golang.org/x/tools v0.23.0 h1:SGsXPZ+2l4JsgaCKkx+FQ9YZ5XEtA1GZYuoDjenLjvg= -golang.org/x/tools v0.23.0/go.mod h1:pnu6ufv6vQkll6szChhK3C3L/ruaIv5eBeztNG8wtsI= -golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20220411194840-2f41105eb62f/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20220517211312-f3a8303e98df/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= -golang.org/x/xerrors v0.0.0-20220609144429-65e65417b02f/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= -golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= -golang.org/x/xerrors v0.0.0-20231012003039-104605ab7028 h1:+cNy6SZtPcJQH3LJVLOSmiC7MMxXNOb3PU/VUEz+EhU= -golang.org/x/xerrors v0.0.0-20231012003039-104605ab7028/go.mod h1:NDW/Ps6MPRej6fsCIbMTohpP40sJ/P/vI1MoTEGwX90= -google.golang.org/api v0.3.1/go.mod h1:6wY9I6uQWHQ8EM57III9mq/AjF+i8G65rmVagqKMtkk= -google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE= -google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M= -google.golang.org/api v0.8.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= -google.golang.org/api v0.9.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= -google.golang.org/api v0.13.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= -google.golang.org/api v0.14.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= -google.golang.org/api v0.15.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= -google.golang.org/api v0.17.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= -google.golang.org/api v0.18.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= -google.golang.org/api v0.19.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= -google.golang.org/api v0.20.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= -google.golang.org/api v0.22.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= -google.golang.org/api v0.24.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= -google.golang.org/api v0.28.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= -google.golang.org/api v0.29.0/go.mod h1:Lcubydp8VUV7KeIHD9z2Bys/sm/vGKnG1UHuDBSrHWM= -google.golang.org/api v0.30.0/go.mod h1:QGmEvQ87FHZNiUVJkT14jQNYJ4ZJjdRF23ZXz5138Fc= -google.golang.org/api v0.35.0/go.mod h1:/XrVsuzM0rZmrsbjJutiuftIzeuTQcEeaYcSk/mQ1dg= -google.golang.org/api v0.36.0/go.mod h1:+z5ficQTmoYpPn8LCUNVpK5I7hwkpjbcgqA7I34qYtE= -google.golang.org/api v0.40.0/go.mod h1:fYKFpnQN0DsDSKRVRcQSDQNtqWPfM9i+zNPxepjRCQ8= -google.golang.org/api v0.41.0/go.mod h1:RkxM5lITDfTzmyKFPt+wGrCJbVfniCr2ool8kTBzRTU= -google.golang.org/api v0.43.0/go.mod h1:nQsDGjRXMo4lvh5hP0TKqF244gqhGcr/YSIykhUk/94= -google.golang.org/api v0.47.0/go.mod h1:Wbvgpq1HddcWVtzsVLyfLp8lDg6AA241LmgIL59tHXo= -google.golang.org/api v0.48.0/go.mod h1:71Pr1vy+TAZRPkPs/xlCf5SsU8WjuAWv1Pfjbtukyy4= -google.golang.org/api v0.50.0/go.mod h1:4bNT5pAuq5ji4SRZm+5QIkjny9JAyVD/3gaSihNefaw= -google.golang.org/api v0.51.0/go.mod h1:t4HdrdoNgyN5cbEfm7Lum0lcLDLiise1F8qDKX00sOU= -google.golang.org/api v0.54.0/go.mod h1:7C4bFFOvVDGXjfDTAsgGwDgAxRDeQ4X8NvUedIt6z3k= -google.golang.org/api v0.55.0/go.mod h1:38yMfeP1kfjsl8isn0tliTjIb1rJXcQi4UXlbqivdVE= -google.golang.org/api v0.56.0/go.mod h1:38yMfeP1kfjsl8isn0tliTjIb1rJXcQi4UXlbqivdVE= -google.golang.org/api v0.57.0/go.mod h1:dVPlbZyBo2/OjBpmvNdpn2GRm6rPy75jyU7bmhdrMgI= -google.golang.org/api v0.61.0/go.mod h1:xQRti5UdCmoCEqFxcz93fTl338AVqDgyaDRuOZ3hg9I= -google.golang.org/api v0.63.0/go.mod h1:gs4ij2ffTRXwuzzgJl/56BdwJaA194ijkfn++9tDuPo= -google.golang.org/api v0.67.0/go.mod h1:ShHKP8E60yPsKNw/w8w+VYaj9H6buA5UqDp8dhbQZ6g= -google.golang.org/api v0.70.0/go.mod h1:Bs4ZM2HGifEvXwd50TtW70ovgJffJYw2oRCOFU/SkfA= -google.golang.org/api v0.71.0/go.mod h1:4PyU6e6JogV1f9eA4voyrTY2batOLdgZ5qZ5HOCc4j8= -google.golang.org/api v0.74.0/go.mod h1:ZpfMZOVRMywNyvJFeqL9HRWBgAuRfSjJFpe9QtRRyDs= -google.golang.org/api v0.75.0/go.mod h1:pU9QmyHLnzlpar1Mjt4IbapUCy8J+6HD6GeELN69ljA= -google.golang.org/api v0.77.0/go.mod h1:pU9QmyHLnzlpar1Mjt4IbapUCy8J+6HD6GeELN69ljA= -google.golang.org/api v0.78.0/go.mod h1:1Sg78yoMLOhlQTeF+ARBoytAcH1NNyyl390YMy6rKmw= -google.golang.org/api v0.80.0/go.mod h1:xY3nI94gbvBrE0J6NHXhxOmW97HG7Khjkku6AFB3Hyg= -google.golang.org/api v0.84.0/go.mod h1:NTsGnUFJMYROtiquksZHBWtHfeMC7iYthki7Eq3pa8o= -google.golang.org/api v0.85.0/go.mod h1:AqZf8Ep9uZ2pyTvgL+x0D3Zt0eoT9b5E8fmzfu6FO2g= -google.golang.org/api v0.90.0/go.mod h1:+Sem1dnrKlrXMR/X0bPnMWyluQe4RsNoYfmNLhOIkzw= -google.golang.org/api v0.93.0/go.mod h1:+Sem1dnrKlrXMR/X0bPnMWyluQe4RsNoYfmNLhOIkzw= -google.golang.org/api v0.95.0/go.mod h1:eADj+UBuxkh5zlrSntJghuNeg8HwQ1w5lTKkuqaETEI= -google.golang.org/api v0.96.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ13s= -google.golang.org/api v0.97.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ13s= -google.golang.org/api v0.98.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ13s= -google.golang.org/api v0.100.0/go.mod h1:ZE3Z2+ZOr87Rx7dqFsdRQkRBk36kDtp/h+QpHbB7a70= -google.golang.org/api v0.171.0 h1:w174hnBPqut76FzW5Qaupt7zY8Kql6fiVjgys4f58sU= -google.golang.org/api v0.171.0/go.mod h1:Hnq5AHm4OTMt2BUVjael2CWZFD6vksJdWCWiUAmjC9o= -google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= -google.golang.org/appengine v1.2.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= -google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= -google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= -google.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0= -google.golang.org/appengine v1.6.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= -google.golang.org/appengine v1.6.6/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= -google.golang.org/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= -google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= -google.golang.org/genproto v0.0.0-20180831171423-11092d34479b/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= -google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= -google.golang.org/genproto v0.0.0-20190418145605-e7d98fc518a7/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= -google.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= -google.golang.org/genproto v0.0.0-20190502173448-54afdca5d873/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= -google.golang.org/genproto v0.0.0-20190530194941-fb225487d101/go.mod h1:z3L6/3dTEVtUr6QSP8miRzeRqwQOioJ9I66odjN4I7s= -google.golang.org/genproto v0.0.0-20190801165951-fa694d86fc64/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= -google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= -google.golang.org/genproto v0.0.0-20190911173649-1774047e7e51/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8= -google.golang.org/genproto v0.0.0-20191108220845-16a3f7862a1a/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20191115194625-c23dd37a84c9/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20191216164720-4f79533eabd1/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20191230161307-f3c370f40bfb/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20200115191322-ca5a22157cba/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20200122232147-0452cf42e150/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20200204135345-fa8e72b47b90/go.mod h1:GmwEX6Z4W5gMy59cAlVYjN9JhxgbQH6Gn+gFDQe2lzA= -google.golang.org/genproto v0.0.0-20200212174721-66ed5ce911ce/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200224152610-e50cd9704f63/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200228133532-8c2c7df3a383/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200305110556-506484158171/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200312145019-da6875a35672/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200324203455-a04cca1dde73/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200331122359-1ee6d9798940/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200423170343-7949de9c1215/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200430143042-b979b6f78d84/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200511104702-f5ebc3bea380/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200513103714-09dca8ec2884/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200515170657-fc4c6c6a6587/go.mod h1:YsZOwe1myG/8QRHRsmBRE1LrgQY60beZKjly0O1fX9U= -google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= -google.golang.org/genproto v0.0.0-20200618031413-b414f8b61790/go.mod h1:jDfRM7FcilCzHH/e9qn6dsT145K34l5v+OpcnNgKAAA= -google.golang.org/genproto v0.0.0-20200729003335-053ba62fc06f/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20200804131852-c06518451d9c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20200904004341-0bd0a958aa1d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20201109203340-2640f1f9cdfb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20201201144952-b05cb90ed32e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20201210142538-e3217bee35cc/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20201214200347-8c77b98c765d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210126160654-44e461bb6506/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210222152913-aa3ee6e6a81c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210303154014-9728d6b83eeb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210310155132-4ce2db91004e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210319143718-93e7006c17a6/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210329143202-679c6ae281ee/go.mod h1:9lPAdzaEmUacj36I+k7YKbEc5CXzPIeORRgDAUOu28A= -google.golang.org/genproto v0.0.0-20210402141018-6c239bbf2bb1/go.mod h1:9lPAdzaEmUacj36I+k7YKbEc5CXzPIeORRgDAUOu28A= -google.golang.org/genproto v0.0.0-20210513213006-bf773b8c8384/go.mod h1:P3QM42oQyzQSnHPnZ/vqoCdDmzH28fzWByN9asMeM8A= -google.golang.org/genproto v0.0.0-20210602131652-f16073e35f0c/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= -google.golang.org/genproto v0.0.0-20210604141403-392c879c8b08/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= -google.golang.org/genproto v0.0.0-20210608205507-b6d2f5bf0d7d/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= -google.golang.org/genproto v0.0.0-20210624195500-8bfb893ecb84/go.mod h1:SzzZ/N+nwJDaO1kznhnlzqS8ocJICar6hYhVyhi++24= -google.golang.org/genproto v0.0.0-20210713002101-d411969a0d9a/go.mod h1:AxrInvYm1dci+enl5hChSFPOmmUF1+uAa/UsgNRWd7k= -google.golang.org/genproto v0.0.0-20210716133855-ce7ef5c701ea/go.mod h1:AxrInvYm1dci+enl5hChSFPOmmUF1+uAa/UsgNRWd7k= -google.golang.org/genproto v0.0.0-20210728212813-7823e685a01f/go.mod h1:ob2IJxKrgPT52GcgX759i1sleT07tiKowYBGbczaW48= -google.golang.org/genproto v0.0.0-20210805201207-89edb61ffb67/go.mod h1:ob2IJxKrgPT52GcgX759i1sleT07tiKowYBGbczaW48= -google.golang.org/genproto v0.0.0-20210813162853-db860fec028c/go.mod h1:cFeNkxwySK631ADgubI+/XFU/xp8FD5KIVV4rj8UC5w= -google.golang.org/genproto v0.0.0-20210821163610-241b8fcbd6c8/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= -google.golang.org/genproto v0.0.0-20210828152312-66f60bf46e71/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= -google.golang.org/genproto v0.0.0-20210831024726-fe130286e0e2/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= -google.golang.org/genproto v0.0.0-20210903162649-d08c68adba83/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= -google.golang.org/genproto v0.0.0-20210909211513-a8c4777a87af/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= -google.golang.org/genproto v0.0.0-20210924002016-3dee208752a0/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20211118181313-81c1377c94b1/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20211206160659-862468c7d6e0/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20211208223120-3a66f561d7aa/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20211221195035-429b39de9b1c/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20220126215142-9970aeb2e350/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20220207164111-0872dc986b00/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20220218161850-94dd64e39d7c/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI= -google.golang.org/genproto v0.0.0-20220222213610-43724f9ea8cf/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI= -google.golang.org/genproto v0.0.0-20220304144024-325a89244dc8/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI= -google.golang.org/genproto v0.0.0-20220310185008-1973136f34c6/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI= -google.golang.org/genproto v0.0.0-20220314164441-57ef72a4c106/go.mod h1:hAL49I2IFola2sVEjAn7MEwsja0xp51I0tlGAf9hz4E= -google.golang.org/genproto v0.0.0-20220324131243-acbaeb5b85eb/go.mod h1:hAL49I2IFola2sVEjAn7MEwsja0xp51I0tlGAf9hz4E= -google.golang.org/genproto v0.0.0-20220407144326-9054f6ed7bac/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= -google.golang.org/genproto v0.0.0-20220413183235-5e96e2839df9/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= -google.golang.org/genproto v0.0.0-20220414192740-2d67ff6cf2b4/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= -google.golang.org/genproto v0.0.0-20220421151946-72621c1f0bd3/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= -google.golang.org/genproto v0.0.0-20220429170224-98d788798c3e/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= -google.golang.org/genproto v0.0.0-20220502173005-c8bf987b8c21/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= -google.golang.org/genproto v0.0.0-20220505152158-f39f71e6c8f3/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= -google.golang.org/genproto v0.0.0-20220518221133-4f43b3371335/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= -google.golang.org/genproto v0.0.0-20220523171625-347a074981d8/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= -google.golang.org/genproto v0.0.0-20220608133413-ed9918b62aac/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= -google.golang.org/genproto v0.0.0-20220616135557-88e70c0c3a90/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= -google.golang.org/genproto v0.0.0-20220617124728-180714bec0ad/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= -google.golang.org/genproto v0.0.0-20220624142145-8cd45d7dbd1f/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= -google.golang.org/genproto v0.0.0-20220628213854-d9e0b6570c03/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= -google.golang.org/genproto v0.0.0-20220722212130-b98a9ff5e252/go.mod h1:GkXuJDJ6aQ7lnJcRF+SJVgFdQhypqgl3LB1C9vabdRE= -google.golang.org/genproto v0.0.0-20220801145646-83ce21fca29f/go.mod h1:iHe1svFLAZg9VWz891+QbRMwUv9O/1Ww+/mngYeThbc= -google.golang.org/genproto v0.0.0-20220815135757-37a418bb8959/go.mod h1:dbqgFATTzChvnt+ujMdZwITVAJHFtfyN1qUhDqEiIlk= -google.golang.org/genproto v0.0.0-20220817144833-d7fd3f11b9b1/go.mod h1:dbqgFATTzChvnt+ujMdZwITVAJHFtfyN1qUhDqEiIlk= -google.golang.org/genproto v0.0.0-20220822174746-9e6da59bd2fc/go.mod h1:dbqgFATTzChvnt+ujMdZwITVAJHFtfyN1qUhDqEiIlk= -google.golang.org/genproto v0.0.0-20220829144015-23454907ede3/go.mod h1:dbqgFATTzChvnt+ujMdZwITVAJHFtfyN1qUhDqEiIlk= -google.golang.org/genproto v0.0.0-20220829175752-36a9c930ecbf/go.mod h1:dbqgFATTzChvnt+ujMdZwITVAJHFtfyN1qUhDqEiIlk= -google.golang.org/genproto v0.0.0-20220913154956-18f8339a66a5/go.mod h1:0Nb8Qy+Sk5eDzHnzlStwW3itdNaWoZA5XeSG+R3JHSo= -google.golang.org/genproto v0.0.0-20220914142337-ca0e39ece12f/go.mod h1:0Nb8Qy+Sk5eDzHnzlStwW3itdNaWoZA5XeSG+R3JHSo= -google.golang.org/genproto v0.0.0-20220915135415-7fd63a7952de/go.mod h1:0Nb8Qy+Sk5eDzHnzlStwW3itdNaWoZA5XeSG+R3JHSo= -google.golang.org/genproto v0.0.0-20220916172020-2692e8806bfa/go.mod h1:0Nb8Qy+Sk5eDzHnzlStwW3itdNaWoZA5XeSG+R3JHSo= -google.golang.org/genproto v0.0.0-20220919141832-68c03719ef51/go.mod h1:0Nb8Qy+Sk5eDzHnzlStwW3itdNaWoZA5XeSG+R3JHSo= -google.golang.org/genproto v0.0.0-20220920201722-2b89144ce006/go.mod h1:ht8XFiar2npT/g4vkk7O0WYS1sHOHbdujxbEp7CJWbw= -google.golang.org/genproto v0.0.0-20220926165614-551eb538f295/go.mod h1:woMGP53BroOrRY3xTxlbr8Y3eB/nzAvvFM83q7kG2OI= -google.golang.org/genproto v0.0.0-20220926220553-6981cbe3cfce/go.mod h1:woMGP53BroOrRY3xTxlbr8Y3eB/nzAvvFM83q7kG2OI= -google.golang.org/genproto v0.0.0-20221010155953-15ba04fc1c0e/go.mod h1:3526vdqwhZAwq4wsRUaVG555sVgsNmIjRtO7t/JH29U= -google.golang.org/genproto v0.0.0-20221014173430-6e2ab493f96b/go.mod h1:1vXfmgAz9N9Jx0QA82PqRVauvCz1SGSz739p0f183jM= -google.golang.org/genproto v0.0.0-20221014213838-99cd37c6964a/go.mod h1:1vXfmgAz9N9Jx0QA82PqRVauvCz1SGSz739p0f183jM= -google.golang.org/genproto v0.0.0-20221025140454-527a21cfbd71/go.mod h1:9qHF0xnpdSfF6knlcsnpzUu5y+rpwgbvsyGAZPBMg4s= -google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de h1:F6qOa9AZTYJXOUEr4jDysRDLrm4PHePlge4v4TGAlxY= -google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de/go.mod h1:VUhTRKeHn9wwcdrk73nvdC9gF178Tzhmt/qyaFcPLSo= -google.golang.org/genproto/googleapis/api v0.0.0-20240528184218-531527333157 h1:7whR9kGa5LUwFtpLm2ArCEejtnxlGeLbAyjFY8sGNFw= -google.golang.org/genproto/googleapis/api v0.0.0-20240528184218-531527333157/go.mod h1:99sLkeliLXfdj2J75X3Ho+rrVCaJze0uwN7zDDkjPVU= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240709173604-40e1e62336c5 h1:SbSDUWW1PAO24TNpLdeheoYPd7kllICcLU52x6eD4kQ= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240709173604-40e1e62336c5/go.mod h1:Ue6ibwXGpU+dqIcODieyLOcgj7z8+IcskoNIgZxtrFY= -google.golang.org/grpc v1.17.0/go.mod h1:6QZJwpn2B+Zp71q/5VxRsJ6NXXVCE5NRUHRo+f3cWCs= -google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= -google.golang.org/grpc v1.20.0/go.mod h1:chYK+tFQF0nDUGJgXMSgLCQk3phJEuONr2DCgLDdAQM= -google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= -google.golang.org/grpc v1.21.0/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= -google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= -google.golang.org/grpc v1.22.1/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= -google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= -google.golang.org/grpc v1.23.1/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= -google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= -google.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= -google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= -google.golang.org/grpc v1.27.1/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= -google.golang.org/grpc v1.28.0/go.mod h1:rpkK4SK4GF4Ach/+MFLZUBavHOvF2JJB5uozKKal+60= -google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk= -google.golang.org/grpc v1.30.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= -google.golang.org/grpc v1.31.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= -google.golang.org/grpc v1.31.1/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= -google.golang.org/grpc v1.32.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= -google.golang.org/grpc v1.33.1/go.mod h1:fr5YgcSWrqhRRxogOsw7RzIpsmvOZ6IcH4kBYTpR3n0= -google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc= -google.golang.org/grpc v1.34.0/go.mod h1:WotjhfgOW/POjDeRt8vscBtXq+2VjORFy659qA51WJ8= -google.golang.org/grpc v1.35.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= -google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= -google.golang.org/grpc v1.36.1/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= -google.golang.org/grpc v1.37.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= -google.golang.org/grpc v1.37.1/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= -google.golang.org/grpc v1.38.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= -google.golang.org/grpc v1.39.0/go.mod h1:PImNr+rS9TWYb2O4/emRugxiyHZ5JyHW5F+RPnDzfrE= -google.golang.org/grpc v1.39.1/go.mod h1:PImNr+rS9TWYb2O4/emRugxiyHZ5JyHW5F+RPnDzfrE= -google.golang.org/grpc v1.40.0/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34= -google.golang.org/grpc v1.40.1/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34= -google.golang.org/grpc v1.44.0/go.mod h1:k+4IHHFw41K8+bbowsex27ge2rCb65oeWqe4jJ590SU= -google.golang.org/grpc v1.45.0/go.mod h1:lN7owxKUQEqMfSyQikvvk5tf/6zMPsrK+ONuO11+0rQ= -google.golang.org/grpc v1.46.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= -google.golang.org/grpc v1.46.2/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= -google.golang.org/grpc v1.47.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= -google.golang.org/grpc v1.48.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= -google.golang.org/grpc v1.49.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= -google.golang.org/grpc v1.50.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= -google.golang.org/grpc v1.50.1/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= -google.golang.org/grpc v1.65.0 h1:bs/cUb4lp1G5iImFFd3u5ixQzweKizoZJAwBNLR42lc= -google.golang.org/grpc v1.65.0/go.mod h1:WgYC2ypjlB0EiQi6wdKixMqukr6lBc0Vo+oOgjrM5ZQ= -google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw= -google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= -google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= -google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= -google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE= -google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo= -google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= -google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= -google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= -google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGjtUeSXeh4= -google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= -google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= -google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= -google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= -google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= -google.golang.org/protobuf v1.28.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= -google.golang.org/protobuf v1.34.2 h1:6xV6lTsCfpGD21XK49h7MhtcApnLqkfYgPcdHftf6hg= -google.golang.org/protobuf v1.34.2/go.mod h1:qYOHts0dSfpeUzUFpOMr/WGzszTmLH+DiWniOlNbLDw= -gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= -gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/check.v1 v1.0.0-20200902074654-038fdea0a05b/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= -gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= -gopkg.in/cheggaaa/pb.v1 v1.0.25/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qStrOgw= -gopkg.in/cheggaaa/pb.v1 v1.0.27/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qStrOgw= -gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= -gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= -gopkg.in/gcfg.v1 v1.2.3/go.mod h1:yesOnuUOFQAhST5vPY4nbZsb/huCgGGXlipJsBn0b3o= -gopkg.in/go-playground/assert.v1 v1.2.1 h1:xoYuJVE7KT85PYWrN730RguIQO0ePzVRfFMXadIrXTM= -gopkg.in/go-playground/assert.v1 v1.2.1/go.mod h1:9RXL0bg/zibRAgZUYszZSwO/z8Y/a8bDuhia5mkpMnE= -gopkg.in/ini.v1 v1.67.0 h1:Dgnx+6+nfE+IfzjUEISNeydPJh9AXNNsWbGP9KzCsOA= -gopkg.in/ini.v1 v1.67.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= -gopkg.in/natefinch/lumberjack.v2 v2.2.1 h1:bBRl1b0OH9s/DuPhuXpNl+VtCaJXFZ5/uEFST95x9zc= -gopkg.in/natefinch/lumberjack.v2 v2.2.1/go.mod h1:YD8tP3GAjkrDg1eZH7EGmyESg/lsYskCTPBJVb9jqSc= -gopkg.in/natefinch/npipe.v2 v2.0.0-20160621034901-c1b8fa8bdcce h1:+JknDZhAj8YMt7GC73Ei8pv4MzjDUNPHgQWJdtMAaDU= -gopkg.in/natefinch/npipe.v2 v2.0.0-20160621034901-c1b8fa8bdcce/go.mod h1:5AcXVHNjg+BDxry382+8OKon8SEWiKktQR07RKPsv1c= -gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo= -gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ= -gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= -gopkg.in/warnings.v0 v0.1.2/go.mod h1:jksf8JmL6Qr/oQM2OXTHunEvvTAsrWBLb6OOjuVWRNI= -gopkg.in/yaml.v2 v2.0.0-20170812160011-eb3733d160e7/go.mod h1:JAlM8MvJe8wmxCU4Bli9HhUf9+ttbYbLASfIpnQbh74= -gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.2.3/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.2.5/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= -gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= -gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= -gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -gotest.tools/v3 v3.5.1 h1:EENdUnS3pdur5nybKYIh2Vfgc8IUNBjxDPSjtiJcOzU= -gotest.tools/v3 v3.5.1/go.mod h1:isy3WKz7GK6uNw/sbHzfKBLvlvXwUyV06n6brMxxopU= -honnef.co/go/tools v0.0.0-20180728063816-88497007e858/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= -honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= -honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= -launchpad.net/gocheck v0.0.0-20140225173054-000000000087 h1:Izowp2XBH6Ya6rv+hqbceQyw/gSGoXfH/UPoTGduL54= -launchpad.net/gocheck v0.0.0-20140225173054-000000000087/go.mod h1:hj7XX3B/0A+80Vse0e+BUHsHMTEhd0O4cpUHr/e/BUM= -lukechampine.com/blake3 v1.2.1 h1:YuqqRuaqsGV71BV/nm9xlI0MKUv4QC54jQnBChWbGnI= -lukechampine.com/blake3 v1.2.1/go.mod h1:0OFRp7fBtAylGVCO40o87sbupkyIGgbpv1+M1k1LM6k= -modernc.org/cc/v4 v4.21.4 h1:3Be/Rdo1fpr8GrQ7IVw9OHtplU4gWbb+wNgeoBMmGLQ= -modernc.org/cc/v4 v4.21.4/go.mod h1:HM7VJTZbUCR3rV8EYBi9wxnJ0ZBRiGE5OeGXNA0IsLQ= -modernc.org/ccgo/v4 v4.19.2 h1:lwQZgvboKD0jBwdaeVCTouxhxAyN6iawF3STraAal8Y= -modernc.org/ccgo/v4 v4.19.2/go.mod h1:ysS3mxiMV38XGRTTcgo0DQTeTmAO4oCmJl1nX9VFI3s= -modernc.org/fileutil v1.3.0 h1:gQ5SIzK3H9kdfai/5x41oQiKValumqNTDXMvKo62HvE= -modernc.org/fileutil v1.3.0/go.mod h1:XatxS8fZi3pS8/hKG2GH/ArUogfxjpEKs3Ku3aK4JyQ= -modernc.org/gc/v2 v2.4.1 h1:9cNzOqPyMJBvrUipmynX0ZohMhcxPtMccYgGOJdOiBw= -modernc.org/gc/v2 v2.4.1/go.mod h1:wzN5dK1AzVGoH6XOzc3YZ+ey/jPgYHLuVckd62P0GYU= -modernc.org/gc/v3 v3.0.0-20240107210532-573471604cb6 h1:5D53IMaUuA5InSeMu9eJtlQXS2NxAhyWQvkKEgXZhHI= -modernc.org/gc/v3 v3.0.0-20240107210532-573471604cb6/go.mod h1:Qz0X07sNOR1jWYCrJMEnbW/X55x206Q7Vt4mz6/wHp4= -modernc.org/libc v1.55.3 h1:AzcW1mhlPNrRtjS5sS+eW2ISCgSOLLNyFzRh/V3Qj/U= -modernc.org/libc v1.55.3/go.mod h1:qFXepLhz+JjFThQ4kzwzOjA/y/artDeg+pcYnY+Q83w= -modernc.org/mathutil v1.6.0 h1:fRe9+AmYlaej+64JsEEhoWuAYBkOtQiMEU7n/XgfYi4= -modernc.org/mathutil v1.6.0/go.mod h1:Ui5Q9q1TR2gFm0AQRqQUaBWFLAhQpCwNcuhBOSedWPo= -modernc.org/memory v1.8.0 h1:IqGTL6eFMaDZZhEWwcREgeMXYwmW83LYW8cROZYkg+E= -modernc.org/memory v1.8.0/go.mod h1:XPZ936zp5OMKGWPqbD3JShgd/ZoQ7899TUuQqxY+peU= -modernc.org/opt v0.1.3 h1:3XOZf2yznlhC+ibLltsDGzABUGVx8J6pnFMS3E4dcq4= -modernc.org/opt v0.1.3/go.mod h1:WdSiB5evDcignE70guQKxYUl14mgWtbClRi5wmkkTX0= -modernc.org/sortutil v1.2.0 h1:jQiD3PfS2REGJNzNCMMaLSp/wdMNieTbKX920Cqdgqc= -modernc.org/sortutil v1.2.0/go.mod h1:TKU2s7kJMf1AE84OoiGppNHJwvB753OYfNl2WRb++Ss= -modernc.org/sqlite v1.31.1 h1:XVU0VyzxrYHlBhIs1DiEgSl0ZtdnPtbLVy8hSkzxGrs= -modernc.org/sqlite v1.31.1/go.mod h1:UqoylwmTb9F+IqXERT8bW9zzOWN8qwAIcLdzeBZs4hA= -modernc.org/strutil v1.2.0 h1:agBi9dp1I+eOnxXeiZawM8F4LawKv4NzGWSaLfyeNZA= -modernc.org/strutil v1.2.0/go.mod h1:/mdcBmfOibveCTBxUl5B5l6W+TTH1FXPLHZE6bTosX0= -modernc.org/token v1.1.0 h1:Xl7Ap9dKaEs5kLoOQeQmPWevfnk/DM5qcLcYlA8ys6Y= -modernc.org/token v1.1.0/go.mod h1:UGzOrNV1mAFSEB63lOFHIpNRUVMvYTc6yu1SMY/XTDM= -nhooyr.io/websocket v1.8.6/go.mod h1:B70DZP8IakI65RVQ51MsWP/8jndNma26DVA/nFSCgW0= -nhooyr.io/websocket v1.8.7 h1:usjR2uOr/zjjkVMy0lW+PPohFok7PCow5sDjLgX4P4g= -nhooyr.io/websocket v1.8.7/go.mod h1:B70DZP8IakI65RVQ51MsWP/8jndNma26DVA/nFSCgW0= -pgregory.net/rapid v1.1.0 h1:CMa0sjHSru3puNx+J0MIAuiiEV4N0qj8/cMWGBBCsjw= -pgregory.net/rapid v1.1.0/go.mod h1:PY5XlDGj0+V1FCq0o192FdRhpKHGTRIWBgqjDBTrq04= -rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= -rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0= -rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA= -rsc.io/tmplfunc v0.0.3 h1:53XFQh69AfOa8Tw0Jm7t+GV7KZhOi6jzsCzTtKbMvzU= -rsc.io/tmplfunc v0.0.3/go.mod h1:AG3sTPzElb1Io3Yg4voV9AGZJuleGAwaVRxL9M49PhA= -sigs.k8s.io/yaml v1.1.0/go.mod h1:UJmg0vDUVViEyp3mgSv9WPwZCDxu4rQW1olrI1uml+o= -sigs.k8s.io/yaml v1.4.0 h1:Mk1wCc2gy/F0THH0TAp1QYyJNzRm2KCLy3o5ASXVI5E= -sigs.k8s.io/yaml v1.4.0/go.mod h1:Ejl7/uTz7PSA4eKMyQCUTnhZYNmLIl+5c2lQPGR2BPY= -sourcegraph.com/sourcegraph/appdash v0.0.0-20190731080439-ebfcffb1b5c0/go.mod h1:hI742Nqp5OhwiqlzhgfbWU4mW4yO10fP+LoT9WOswdU= diff --git a/local-interchain/interchain/config.go b/local-interchain/interchain/config.go deleted file mode 100644 index 3c2fce20f..000000000 --- a/local-interchain/interchain/config.go +++ /dev/null @@ -1,232 +0,0 @@ -package interchain - -import ( - "encoding/json" - "fmt" - "io" - "log" - "net/http" - "os" - "path/filepath" - "strconv" - "strings" - "time" - - types "github.com/strangelove-ventures/interchaintest/local-interchain/interchain/types" - "github.com/strangelove-ventures/interchaintest/local-interchain/interchain/util" - "gopkg.in/yaml.v3" - - "github.com/strangelove-ventures/interchaintest/v9" - "github.com/strangelove-ventures/interchaintest/v9/chain/cosmos" - "github.com/strangelove-ventures/interchaintest/v9/ibc" - "github.com/strangelove-ventures/interchaintest/v9/testutil" -) - -const ChainDir = "chains" - -func LoadConfig(installDir, chainCfgFile string) (*types.Config, error) { - var config types.Config - - configFile := "base.json" - if chainCfgFile != "" { - configFile = chainCfgFile - } - - // A nested "chains" dir is required within the parent you specify. - chainsDir := filepath.Join(installDir, ChainDir) - cfgFilePath := filepath.Join(chainsDir, configFile) - - bz, err := os.ReadFile(cfgFilePath) - if err != nil { - return nil, err - } - - if strings.HasSuffix(chainCfgFile, ".json") { - if err = json.Unmarshal(bz, &config); err != nil { - return nil, fmt.Errorf("error unmarshalling json config: %w", err) - } - } else { - if err := yaml.Unmarshal(bz, &config); err != nil { - return nil, fmt.Errorf("error unmarshalling yaml config: %w", err) - } - } - - log.Println("Using directory:", installDir) - log.Println("Using chain config:", cfgFilePath) - - return setConfigDefaults(&config), nil -} - -func LoadConfigFromURL(url string) (*types.Config, error) { - resp, err := http.Get(url) - if err != nil { - log.Fatalln(err) - } - defer resp.Body.Close() - - body, err := io.ReadAll(resp.Body) - if err != nil { - log.Fatalln(err) - } - - var config types.Config - err = json.Unmarshal(body, &config) - if err != nil { - return &config, fmt.Errorf("error unmarshalling config: %w", err) - } - - return setConfigDefaults(&config), nil -} - -func setConfigDefaults(config *types.Config) *types.Config { - chains := config.Chains - - for i := range chains { - chain := chains[i] - chain.SetChainDefaults() - util.ReplaceStringValues(&chain, "%DENOM%", chain.Denom) - util.ReplaceStringValues(&chain, "%BIN%", chain.Binary) - util.ReplaceStringValues(&chain, "%CHAIN_ID%", chain.ChainID) - - chains[i] = chain - - if config.Chains[i].Debugging { - fmt.Printf("Loaded %v\n", config) - } - } - - return config -} - -// ConfigurationOverrides creates a map of config file overrides for filenames, their keys, and values. -func ConfigurationOverrides(cfg types.Chain) map[string]any { - var toml map[string]any - - switch cfg.ChainType { - case "cosmos": - toml = cosmosConfigOverride(cfg) - default: - toml = make(testutil.Toml, 0) - } - - for _, o := range cfg.ConfigFileOverrides { - for k, v := range o.Paths { - - // if o.File is empty, we only save the KV pair directly - if o.File == "" { - // "config_file_overrides": [ - // {"paths": {"--load-state": "state/avs-and-eigenlayer-deployed-anvil-state.json"}} - // ], - - toml[k] = v - continue - } - - // create file key if it does not exist - if _, ok := toml[o.File]; !ok { - toml[o.File] = make(testutil.Toml, 0) - } - - // if there is no path, save the KV directly without the header - if !strings.Contains(k, ".") { - toml[o.File].(testutil.Toml)[k] = v - continue - } - - // separate the path and key - path, key := strings.Split(k, ".")[0], strings.Split(k, ".")[1] - - // create path key if it does not exist - if _, ok := toml[o.File].(testutil.Toml)[path]; !ok { - toml[o.File].(testutil.Toml)[path] = testutil.Toml{} - } - - // save the new KV pair - toml[o.File].(testutil.Toml)[path].(testutil.Toml)[key] = v - } - } - - fmt.Println(cfg.ChainID, "Toml File", toml) - return toml -} - -func cosmosConfigOverride(cfg types.Chain) testutil.Toml { - blockTime := cfg.BlockTime - if _, err := time.ParseDuration(blockTime); err != nil { - panic(err) - } - - tomlCfg := testutil.Toml{ - "consensus": testutil.Toml{ - "timeout_commit": blockTime, - "timeout_propose": blockTime, - }, - } - - return testutil.Toml{"config/config.toml": tomlCfg} -} - -func CreateChainConfigs(cfg types.Chain) (ibc.ChainConfig, *interchaintest.ChainSpec) { - hostPorts := make(map[int]int, len(cfg.HostPortOverride)) - for k, v := range cfg.HostPortOverride { - internalPort, err := strconv.Atoi(k) - if err != nil { - panic(err) - } - externalPort, err := strconv.Atoi(v) - if err != nil { - panic(err) - } - - hostPorts[internalPort] = externalPort - } - - chainCfg := ibc.ChainConfig{ - Type: cfg.ChainType, - Name: cfg.Name, - ChainID: cfg.ChainID, - Bin: cfg.Binary, - Bech32Prefix: cfg.Bech32Prefix, - Denom: cfg.Denom, - CoinType: fmt.Sprintf("%d", cfg.CoinType), - GasPrices: cfg.GasPrices, - GasAdjustment: cfg.GasAdjustment, - TrustingPeriod: cfg.TrustingPeriod, - HostPortOverride: hostPorts, - - // TODO: Allow host mount in the future - NoHostMount: false, - ModifyGenesis: cosmos.ModifyGenesis(cfg.Genesis.Modify), - ConfigFileOverrides: ConfigurationOverrides(cfg), - EncodingConfig: nil, - - InterchainSecurityConfig: cfg.ICSVersionOverride, - AdditionalStartArgs: cfg.AdditionalStartArgs, - Env: cfg.Env, - } - - if cfg.DockerImage.Version == "" { - panic("DockerImage.Version is required in your config") - } - - if cfg.DockerImage.Repository != "" { - chainCfg.Images = []ibc.DockerImage{ - { - Repository: cfg.DockerImage.Repository, - Version: cfg.DockerImage.Version, - UIDGID: cfg.DockerImage.UIDGID, - }, - } - } - - chainSpecs := &interchaintest.ChainSpec{ - Name: cfg.Name, - Version: cfg.DockerImage.Version, - ChainName: cfg.ChainID, - ChainConfig: chainCfg, - NumValidators: &cfg.NumberVals, - NumFullNodes: &cfg.NumberNode, - } - - return chainCfg, chainSpecs -} diff --git a/local-interchain/interchain/faket.go b/local-interchain/interchain/faket.go deleted file mode 100644 index 964e1d9fa..000000000 --- a/local-interchain/interchain/faket.go +++ /dev/null @@ -1,60 +0,0 @@ -package interchain - -import ( - "fmt" - "testing" -) - -// This is a fake impl of testing.T so that ICtest is happy to use it for logging. - -type FakeI interface { - testing.T -} - -type FakeTesting struct { - FakeName string -} - -// impl all of testing.T for FakeTesting -func (t FakeTesting) Name() string { - return t.FakeName -} - -func (t FakeTesting) Cleanup(func()) { -} - -func (t FakeTesting) Skip(...any) { -} - -func (t FakeTesting) Parallel() { -} - -func (t FakeTesting) Failed() bool { - return false -} - -func (t FakeTesting) Skipped() bool { - return false -} - -func (t FakeTesting) Error(...any) { -} - -func (t FakeTesting) Errorf(format string, args ...any) { -} - -func (t FakeTesting) Fail() { -} - -func (t FakeTesting) FailNow() { -} - -func (t FakeTesting) Fatal(...any) { -} - -func (t FakeTesting) Helper() { -} - -func (t FakeTesting) Logf(format string, args ...any) { - fmt.Printf(format, args...) -} diff --git a/local-interchain/interchain/genesis.go b/local-interchain/interchain/genesis.go deleted file mode 100644 index 58f1d768a..000000000 --- a/local-interchain/interchain/genesis.go +++ /dev/null @@ -1,86 +0,0 @@ -package interchain - -import ( - "context" - "log" - "strings" - - sdk "github.com/cosmos/cosmos-sdk/types" - types "github.com/strangelove-ventures/interchaintest/local-interchain/interchain/types" - "github.com/strangelove-ventures/interchaintest/v9/chain/cosmos" - "github.com/strangelove-ventures/interchaintest/v9/ibc" -) - -func AddGenesisKeysToKeyring(ctx context.Context, config *types.Config, chains []ibc.Chain) { - for idx, chain := range config.Chains { - switch chains[idx].(type) { - case *cosmos.CosmosChain: - chainObj := chains[idx].(*cosmos.CosmosChain) - for _, acc := range chain.Genesis.Accounts { - if acc.Mnemonic != "" { - if err := chainObj.RecoverKey(ctx, acc.Name, acc.Mnemonic); err != nil { - panic(err) - } - } - } - default: - continue - } - } -} - -func PostStartupCommands(ctx context.Context, config *types.Config, chains []ibc.Chain) { - for idx, chain := range config.Chains { - switch chains[idx].(type) { - case *cosmos.CosmosChain: - chainObj := chains[idx].(*cosmos.CosmosChain) - - for _, cmd := range chain.Genesis.StartupCommands { - log.Println("Running startup command", chainObj.Config().ChainID, cmd) - - cmd = strings.ReplaceAll(cmd, "%HOME%", chainObj.Validators[0].HomeDir()) - cmd = strings.ReplaceAll(cmd, "%CHAIN_ID%", chainObj.Config().ChainID) - - stdout, stderr, err := chainObj.Exec(ctx, strings.Split(cmd, " "), []string{}) - - output := stdout - if len(output) == 0 { - output = stderr - } else if err != nil { - log.Println("Error running startup command", chainObj.Config().ChainID, cmd, err) - } - - log.Println("Startup command output", chainObj.Config().ChainID, cmd, string(output)) - } - } - } -} - -func SetupGenesisWallets(config *types.Config, chains []ibc.Chain) map[ibc.Chain][]ibc.WalletAmount { - // iterate all chains chain's configs & setup accounts - additionalWallets := make(map[ibc.Chain][]ibc.WalletAmount) - for idx, chain := range config.Chains { - switch chains[idx].(type) { - case *cosmos.CosmosChain: - chainObj := chains[idx].(*cosmos.CosmosChain) - for _, acc := range chain.Genesis.Accounts { - amount, err := sdk.ParseCoinsNormalized(acc.Amount) - if err != nil { - panic(err) - } - - for _, coin := range amount { - additionalWallets[chainObj] = append(additionalWallets[chainObj], ibc.WalletAmount{ - Address: acc.Address, - Amount: coin.Amount, - Denom: coin.Denom, - }) - } - } - // case *ethereum.EthereumChain: - default: - continue - } - } - return additionalWallets -} diff --git a/local-interchain/interchain/handlers/actions.go b/local-interchain/interchain/handlers/actions.go deleted file mode 100644 index d5aeab42a..000000000 --- a/local-interchain/interchain/handlers/actions.go +++ /dev/null @@ -1,284 +0,0 @@ -package handlers - -import ( - "context" - "encoding/json" - "fmt" - "net/http" - "strconv" - "strings" - - sdkmath "cosmossdk.io/math" - - "github.com/strangelove-ventures/interchaintest/local-interchain/interchain/util" - "github.com/strangelove-ventures/interchaintest/v9" - "github.com/strangelove-ventures/interchaintest/v9/chain/cosmos" - "github.com/strangelove-ventures/interchaintest/v9/dockerutil" - "github.com/strangelove-ventures/interchaintest/v9/ibc" -) - -type actions struct { - ctx context.Context - ic *interchaintest.Interchain - vals map[string][]*cosmos.ChainNode - cc map[string]*cosmos.CosmosChain - - relayer ibc.Relayer - eRep ibc.RelayerExecReporter - - authKey string -} - -type ActionHandler struct { - ChainId string `json:"chain_id"` - NodeIndex int `json:"node_index"` - Action string `json:"action"` - Cmd string `json:"cmd"` - AuthKey string `json:"auth_key,omitempty"` -} - -func NewActions( - ctx context.Context, ic *interchaintest.Interchain, - cosmosChains map[string]*cosmos.CosmosChain, vals map[string][]*cosmos.ChainNode, - relayer ibc.Relayer, eRep ibc.RelayerExecReporter, - authKey string, -) *actions { - return &actions{ - ctx: ctx, - ic: ic, - vals: vals, - cc: cosmosChains, - relayer: relayer, - eRep: eRep, - authKey: authKey, - } -} - -func (a *actions) PostActions(w http.ResponseWriter, r *http.Request) { - var ah ActionHandler - err := json.NewDecoder(r.Body).Decode(&ah) - if err != nil { - util.WriteError(w, fmt.Errorf("failed to decode json: %s", err)) - return - } - - if a.authKey != "" && ah.AuthKey != a.authKey { - util.WriteError(w, fmt.Errorf("invalid `auth_key`")) - return - } - - action := ah.Action - if action == "kill-all" { - dockerutil.KillAllInterchaintestContainers(a.ctx) - return - } - - chainId := ah.ChainId - if _, ok := a.vals[chainId]; !ok { - var chainIds []string - for k := range a.vals { - chainIds = append(chainIds, k) - } - - util.Write(w, []byte(fmt.Sprintf(`{"error":"chain_id '%s' not found. available chain ids: %v"}`, chainId, chainIds))) - return - } - - if len(a.vals[chainId]) <= ah.NodeIndex { - util.Write(w, []byte(fmt.Sprintf(`{"error":"node_index '%d' not found. nodes: %v"}`, ah.NodeIndex, len(a.vals[chainId])))) - return - } - - val := a.vals[chainId][ah.NodeIndex] - - ah.Cmd = strings.ReplaceAll(ah.Cmd, "%RPC%", fmt.Sprintf("tcp://%s:26657", val.HostName())) - ah.Cmd = strings.ReplaceAll(ah.Cmd, "%CHAIN_ID%", ah.ChainId) - ah.Cmd = strings.ReplaceAll(ah.Cmd, "%HOME%", val.HomeDir()) - - cmd := strings.Split(ah.Cmd, " ") - - // Output can only ever be 1 thing. So we check which is set, then se the output to the user. - var output []byte - var stdout, stderr []byte - - // parse out special commands if there are any. - cmdMap := make(map[string]string) - if strings.Contains(ah.Cmd, "=") { - for _, c := range strings.Split(ah.Cmd, ";") { - s := strings.Split(c, "=") - cmdMap[s[0]] = s[1] - } - } - - // Node / Docker Linux Actions - switch action { - case "q", "query": - stdout, stderr, err = val.ExecQuery(a.ctx, cmd...) - case "b", "bin", "binary": - stdout, stderr, err = val.ExecBin(a.ctx, cmd...) - case "e", "exec", "execute": - stdout, stderr, err = val.Exec(a.ctx, cmd, []string{}) - case "recover-key": - kn := cmdMap["keyname"] - if err := val.RecoverKey(a.ctx, kn, cmdMap["mnemonic"]); err != nil { - if !strings.Contains(err.Error(), "aborted") { - util.WriteError(w, fmt.Errorf("failed to recover key: %s", err)) - return - } - } - stdout = []byte(fmt.Sprintf(`{"recovered_key":"%s"}`, kn)) - case "overwrite-genesis-file": - if err := val.OverwriteGenesisFile(a.ctx, []byte(cmdMap["new_genesis"])); err != nil { - util.WriteError(w, fmt.Errorf("failed to override genesis file: %s", err)) - return - } - stdout = []byte(fmt.Sprintf(`{"overwrote_genesis_file":"%s"}`, val.ContainerID())) - case "add-full-nodes": - chain := a.cc[chainId] - - amt, err := strconv.Atoi(cmdMap["amount"]) - if err != nil { - util.WriteError(w, fmt.Errorf("failed to convert amount to int: %s", err)) - return - } - - if err := chain.AddFullNodes(a.ctx, nil, amt); err != nil { - util.WriteError(w, fmt.Errorf("failed to add full nodes: %w", err)) - return - } - - stdout = []byte(fmt.Sprintf(`{"added_full_node":"%s"}`, cmdMap["amount"])) - case "dump-contract-state": - stdout = dumpContractState(r, cmdMap, a, val) - case "faucet": - stdout = faucet(r, cmdMap, a.ctx, a, val) - } - - // Relayer Actions if the above is not used. - if len(stdout) == 0 && len(stderr) == 0 && err == nil { - switch action { - case "stop-relayer", "stop_relayer", "stopRelayer": - if err := a.relayerCheck(w, r); err != nil { - return - } - - err = a.relayer.StopRelayer(a.ctx, a.eRep) - - case "start-relayer", "start_relayer", "startRelayer": - if err := a.relayerCheck(w, r); err != nil { - return - } - - paths := strings.FieldsFunc(ah.Cmd, func(c rune) bool { - return c == ',' || c == ' ' - }) - err = a.relayer.StartRelayer(a.ctx, a.eRep, paths...) - - case "relayer", "relayer-exec", "relayer_exec", "relayerExec": - if err := a.relayerCheck(w, r); err != nil { - return - } - - if !strings.Contains(ah.Cmd, "--home") { - // does this ever change for any other relayer? - cmd = append(cmd, "--home", "/home/relayer") - } - - res := a.relayer.Exec(a.ctx, a.eRep, cmd, []string{}) - stdout = []byte(res.Stdout) - stderr = []byte(res.Stderr) - err = res.Err - - case "get_channels", "get-channels", "getChannels": - if err := a.relayerCheck(w, r); err != nil { - return - } - - res, err := a.relayer.GetChannels(a.ctx, a.eRep, chainId) - if err != nil { - util.WriteError(w, err) - return - } - - r, err := json.Marshal(res) - if err != nil { - util.WriteError(w, err) - return - } - stdout = r - } - } - - if len(stdout) > 0 { - output = stdout - } else if len(stderr) > 0 { - output = stderr - } else if err == nil { - output = []byte("{}") - } else { - output = []byte(fmt.Sprintf(`%s`, err)) - } - - // Send the response - util.Write(w, []byte(output)) -} - -func (a *actions) relayerCheck(w http.ResponseWriter, r *http.Request) error { - var err error = nil - - if a.relayer == nil { - util.Write(w, []byte(`{"error":"relayer not configured for this setup"}`)) - err = fmt.Errorf("relayer not configured for this setup") - } - - return err -} - -func dumpContractState(r *http.Request, cmdMap map[string]string, a *actions, val *cosmos.ChainNode) []byte { - contract, ok1 := cmdMap["contract"] - height, ok2 := cmdMap["height"] - if !ok1 || !ok2 { - return []byte(`{"error":"'contract' or 'height' not found in commands"}`) - } - - heightInt, err := strconv.ParseInt(height, 10, 64) - if err != nil { - return []byte(fmt.Sprintf(`{"error":"failed to convert height to int: %s"}`, height)) - } - - state, err := val.DumpContractState(a.ctx, contract, heightInt) - if err != nil { - return []byte(fmt.Sprintf(`{"error":"%s"}`, err)) - } - - jsonRes, err := json.Marshal(state.Models) - if err != nil { - return []byte(fmt.Sprintf(`{"error":"%s"}`, err)) - } - - return jsonRes -} - -func faucet(r *http.Request, cmdMap map[string]string, ctx context.Context, a *actions, val *cosmos.ChainNode) []byte { - amount, ok1 := cmdMap["amount"] - toAddr, ok2 := cmdMap["address"] - - if !ok1 || !ok2 { - return []byte(`{"error":"'amount' or 'address' not found in commands"}`) - } - - amt, ok := sdkmath.NewIntFromString(amount) - if !ok { - return []byte(fmt.Sprintf(`{"error":"failed to convert amount to int: %s"}`, amount)) - } - - if err := val.BankSend(ctx, "faucet", ibc.WalletAmount{ - Address: toAddr, - Amount: amt, - Denom: val.Chain.Config().Denom, - }); err != nil { - return []byte(fmt.Sprintf(`{"error":"%s"}`, err)) - } - - return []byte(fmt.Sprintf(`{"sent_funds":"%s"}`, amount)) -} diff --git a/local-interchain/interchain/handlers/chain_registry.go b/local-interchain/interchain/handlers/chain_registry.go deleted file mode 100644 index 652e5e85a..000000000 --- a/local-interchain/interchain/handlers/chain_registry.go +++ /dev/null @@ -1,33 +0,0 @@ -package handlers - -import ( - "net/http" - "os" -) - -// If the chain_registry.json file is found within the current running directory, show it as an endpoint. -// Used in: spawn - -type chainRegistry struct { - DataJSON []byte `json:"data_json"` -} - -// NewChainRegistry creates a new chainRegistry with the JSON from the file at location. -func NewChainRegistry(loc string) *chainRegistry { - dataJSON, err := os.ReadFile(loc) - if err != nil { - panic(err) - } - - return &chainRegistry{ - DataJSON: dataJSON, - } -} - -func (cr chainRegistry) GetChainRegistry(w http.ResponseWriter, r *http.Request) { - w.Header().Set("Content-Type", "application/json") - w.WriteHeader(http.StatusOK) - if _, err := w.Write(cr.DataJSON); err != nil { - http.Error(w, "failed to write response", http.StatusInternalServerError) - } -} diff --git a/local-interchain/interchain/handlers/container_log_stream.go b/local-interchain/interchain/handlers/container_log_stream.go deleted file mode 100644 index d16c14515..000000000 --- a/local-interchain/interchain/handlers/container_log_stream.go +++ /dev/null @@ -1,152 +0,0 @@ -package handlers - -import ( - "context" - "fmt" - "net/http" - "regexp" - "strconv" - "strings" - "unicode" - - dockertypes "github.com/docker/docker/api/types" - dockerclient "github.com/docker/docker/client" - "github.com/strangelove-ventures/interchaintest/v9/chain/cosmos" - "go.uber.org/zap" -) - -var removeColorRegex = regexp.MustCompile("\x1b\\[[0-9;]*m") - -type ContainerStream struct { - ctx context.Context - logger *zap.Logger - cli *dockerclient.Client - authKey string - testName string - - nameToID map[string]string -} - -func NewContainerSteam(ctx context.Context, logger *zap.Logger, cli *dockerclient.Client, authKey, testName string, vals map[string][]*cosmos.ChainNode) *ContainerStream { - nameToID := make(map[string]string) - for _, nodes := range vals { - for _, node := range nodes { - nameToID[node.Name()] = node.ContainerID() - } - } - - return &ContainerStream{ - ctx: ctx, - authKey: authKey, - cli: cli, - logger: logger, - testName: testName, - nameToID: nameToID, - } -} - -func (cs *ContainerStream) StreamContainer(w http.ResponseWriter, r *http.Request) { - if err := VerifyAuthKey(cs.authKey, r); err != nil { - http.Error(w, err.Error(), http.StatusUnauthorized) - return - } - - containerID := r.URL.Query().Get("id") - if containerID == "" { - output := "No container ID provided. Available containers:\n" - for name, id := range cs.nameToID { - output += fmt.Sprintf("- %s: %s\n", name, id) - } - - fmt.Fprint(w, output) - fmt.Fprint(w, "Provide a container ID with ?id=") - return - } - - // if container id is in the cs.nameToID map, use the mapped container ID - if id, ok := cs.nameToID[containerID]; ok { - containerID = id - } else { - fmt.Fprintf(w, "Container ID %s not found\n", containerID) - return - } - - // http://127.0.0.1:8080/container_logs?id=&colored=true - isColored := strings.HasPrefix(strings.ToLower(r.URL.Query().Get("colored")), "t") - tailLines := tailLinesParam(r.URL.Query().Get("lines")) - - rr, err := cs.cli.ContainerLogs(cs.ctx, containerID, dockertypes.ContainerLogsOptions{ - ShowStdout: true, - ShowStderr: true, - Follow: true, - Details: true, - Tail: strconv.FormatUint(tailLines, 10), - }) - if err != nil { - http.Error(w, "Unable to get container logs", http.StatusInternalServerError) - return - } - defer rr.Close() - - // Set headers to keep the connection open for SSE (Server-Sent Events) - w.Header().Set("Content-Type", "text/event-stream") - w.Header().Set("Cache-Control", "no-cache") - w.Header().Set("Connection", "keep-alive") - - // Flush ensures data is sent to the client immediately - flusher, ok := w.(http.Flusher) - if !ok { - http.Error(w, "Streaming unsupported", http.StatusInternalServerError) - return - } - - for { - buf := make([]byte, 8*1024) - n, err := rr.Read(buf) - if err != nil { - break - } - - text := string(buf[:n]) - if !isColored { - text, err = removeAnsiColorCodesFromText(string(buf[:n])) - if err != nil { - http.Error(w, "Unable to remove ANSI color codes", http.StatusInternalServerError) - return - } - } - - fmt.Fprint(w, cleanSpecialChars(text)) - flusher.Flush() - } -} - -func tailLinesParam(tailInput string) uint64 { - if tailInput == "" { - return defaultTailLines - } - - tailLines, err := strconv.ParseUint(tailInput, 10, 64) - if err != nil { - return defaultTailLines - } - - return tailLines -} - -func removeAnsiColorCodesFromText(text string) (string, error) { - return removeColorRegex.ReplaceAllString(text, ""), nil -} - -func cleanSpecialChars(text string) string { - return strings.Map(func(r rune) rune { - if r == '\n' { - return r - } - - if unicode.IsPrint(r) { - return r - } - return -1 - }, text) -} diff --git a/local-interchain/interchain/handlers/info.go b/local-interchain/interchain/handlers/info.go deleted file mode 100644 index 9f8d48131..000000000 --- a/local-interchain/interchain/handlers/info.go +++ /dev/null @@ -1,231 +0,0 @@ -package handlers - -import ( - "context" - "encoding/json" - "fmt" - "net/http" - "net/url" - "os" - "path/filepath" - "strconv" - - types "github.com/strangelove-ventures/interchaintest/local-interchain/interchain/types" - util "github.com/strangelove-ventures/interchaintest/local-interchain/interchain/util" - "github.com/strangelove-ventures/interchaintest/v9" - "github.com/strangelove-ventures/interchaintest/v9/chain/cosmos" - "github.com/strangelove-ventures/interchaintest/v9/ibc" -) - -type info struct { - Config *types.Config - InstallDir string - - // used to get information about state of the container - ctx context.Context - ic *interchaintest.Interchain - vals map[string][]*cosmos.ChainNode - relayer ibc.Relayer - eRep ibc.RelayerExecReporter - - cc map[string]*cosmos.CosmosChain - - chainId string -} - -func NewInfo( - cfg *types.Config, - installDir string, - ctx context.Context, - ic *interchaintest.Interchain, - cosmosChains map[string]*cosmos.CosmosChain, - vals map[string][]*cosmos.ChainNode, - relayer ibc.Relayer, - eRep ibc.RelayerExecReporter, -) *info { - return &info{ - Config: cfg, - InstallDir: installDir, - - ctx: ctx, - ic: ic, - vals: vals, - cc: cosmosChains, - relayer: relayer, - eRep: eRep, - } -} - -type GetInfo struct { - Logs types.MainLogs `json:"logs" yaml:"logs"` - Chains []types.Chain `json:"chains" yaml:"chains"` - Relay types.Relayer `json:"relayer" yaml:"relayer"` -} - -func (i *info) GetInfo(w http.ResponseWriter, r *http.Request) { - form := r.URL.Query() - - res, ok := form["request"] - if !ok { - get_logs(w, r, i) - return - } - - chainId, ok := form["chain_id"] - if !ok { - util.WriteError(w, fmt.Errorf("chain_id not found in query params")) - return - } - i.chainId = chainId[0] - - nodeIdx, ok := form["node_index"] - if !ok { - nodeIdx = []string{"0"} - } - - idx, err := strconv.Atoi(nodeIdx[0]) - if err != nil { - util.WriteError(w, fmt.Errorf("failed to convert node_index to int: %w", err)) - return - } - - if len(i.vals[i.chainId]) <= idx { - util.WriteError(w, fmt.Errorf("node_index '%d' not found. nodes: %v", idx, len(i.vals[i.chainId]))) - return - } - - val := i.vals[i.chainId][idx] - - switch res[0] { - case "logs": - get_logs(w, r, i) - case "config": - config(w, r, val) - case "name": - util.Write(w, []byte(val.Name())) - case "container_id": - util.Write(w, []byte(val.ContainerID())) - case "hostname": - util.Write(w, []byte(val.HostName())) - case "home_dir": - util.Write(w, []byte(val.HomeDir())) - case "is_above_sdk_47", "is_above_sdk_v47": - util.Write(w, []byte(strconv.FormatBool(val.IsAboveSDK47(i.ctx)))) - case "has_command": - hasCommand(w, r, form, i, val) - case "read_file": - readFile(w, r, form, i, val) - case "height": - height, _ := val.Height(i.ctx) - util.Write(w, []byte(strconv.Itoa(int(height)))) - case "build_information": - getBuildInfo(w, r, i, val) - case "genesis_file_content": - v, _ := val.GenesisFileContent(i.ctx) - util.Write(w, v) - case "peer": - util.Write(w, getPeer(i.ctx, val)) - default: - util.WriteError(w, fmt.Errorf("invalid get param: %s. does not exist", res[0])) - } -} - -func config(w http.ResponseWriter, r *http.Request, val *cosmos.ChainNode) { - cfg := val.Chain.Config() - jsonRes, err := MarshalIBCChainConfig(cfg) - if err != nil { - util.WriteError(w, fmt.Errorf("failed to marshal config: %w", err)) - return - } - - util.Write(w, []byte(jsonRes)) -} - -func hasCommand(w http.ResponseWriter, r *http.Request, form url.Values, i *info, val *cosmos.ChainNode) { - cmd, ok := form["command"] - if !ok { - util.WriteError(w, fmt.Errorf("command not found in query params")) - return - } - - util.Write(w, []byte(strconv.FormatBool(val.HasCommand(i.ctx, cmd[0])))) -} - -func readFile(w http.ResponseWriter, r *http.Request, form url.Values, i *info, val *cosmos.ChainNode) { - relPath, ok := form["relative_path"] - if !ok { - util.WriteError(w, fmt.Errorf("relPath not found in query params")) - return - } - - bz, err := val.ReadFile(i.ctx, relPath[0]) - if err != nil { - util.WriteError(w, err) - return - } - - util.Write(w, bz) -} - -func getBuildInfo(w http.ResponseWriter, r *http.Request, i *info, val *cosmos.ChainNode) { - bi := val.GetBuildInformation(i.ctx) - jsonRes, err := json.MarshalIndent(bi, "", " ") - if err != nil { - util.WriteError(w, err) - return - } - util.Write(w, []byte(jsonRes)) -} - -func get_logs(w http.ResponseWriter, r *http.Request, i *info) { - fp := filepath.Join(i.InstallDir, "configs", "logs.json") - - bz, err := os.ReadFile(fp) - if err != nil { - util.WriteError(w, err) - return - } - - var logs types.MainLogs - if err := json.Unmarshal(bz, &logs); err != nil { - util.WriteError(w, err) - return - } - - // hide mnemonics from query - chains := i.Config.Chains - for idx, chain := range chains { - updatedAccounts := []types.GenesisAccount{} - - for _, acc := range chain.Genesis.Accounts { - acc.Mnemonic = "hidden" - updatedAccounts = append(updatedAccounts, acc) - } - - chain.Genesis.Accounts = updatedAccounts - chains[idx] = chain - } - - info := GetInfo{ - Logs: logs, - Chains: chains, - Relay: i.Config.Relayer, - } - - jsonRes, err := json.MarshalIndent(info, "", " ") - if err != nil { - util.WriteError(w, err) - return - } - - util.Write(w, jsonRes) -} - -func getPeer(ctx context.Context, val *cosmos.ChainNode) []byte { - peer, err := val.NodeID(ctx) - if err != nil { - return []byte(fmt.Sprintf(`{"error":"%s"}`, err)) - } - - return []byte(peer + "@" + val.Chain.GetHostPeerAddress()) -} diff --git a/local-interchain/interchain/handlers/log_stream.go b/local-interchain/interchain/handlers/log_stream.go deleted file mode 100644 index 9279a31bb..000000000 --- a/local-interchain/interchain/handlers/log_stream.go +++ /dev/null @@ -1,164 +0,0 @@ -package handlers - -import ( - "bufio" - "bytes" - "fmt" - "io" - "log" - "net/http" - "os" - "strconv" - "time" - - "go.uber.org/zap" -) - -const defaultTailLines = 50 - -type LogStream struct { - fName string - authKey string - logger *zap.Logger -} - -func NewLogSteam(logger *zap.Logger, file string, authKey string) *LogStream { - return &LogStream{ - fName: file, - authKey: authKey, - logger: logger, - } -} - -func (ls *LogStream) StreamLogs(w http.ResponseWriter, r *http.Request) { - if err := VerifyAuthKey(ls.authKey, r); err != nil { - http.Error(w, err.Error(), http.StatusUnauthorized) - return - } - - // Set headers to keep the connection open for SSE (Server-Sent Events) - w.Header().Set("Content-Type", "text/event-stream") - w.Header().Set("Cache-Control", "no-cache") - w.Header().Set("Connection", "keep-alive") - - // Flush ensures data is sent to the client immediately - flusher, ok := w.(http.Flusher) - if !ok { - http.Error(w, "Streaming unsupported", http.StatusInternalServerError) - return - } - - // Open the log file - file, err := os.Open(ls.fName) - if err != nil { - http.Error(w, "Unable to open log file", http.StatusInternalServerError) - return - } - defer file.Close() - - // Seek to the end of the file to read only new log entries - file.Seek(0, io.SeekEnd) - - // Read new lines from the log file - reader := bufio.NewReader(file) - - for { - select { - // In case client closes the connection, break out of loop - case <-r.Context().Done(): - return - default: - // Try to read a line - line, err := reader.ReadString('\n') - if err == nil { - // Send the log line to the client - fmt.Fprintf(w, "data: %s\n\n", line) - flusher.Flush() // Send to client immediately - } else { - // If no new log is available, wait for a short period before retrying - time.Sleep(100 * time.Millisecond) - } - } - } -} - -func (ls *LogStream) TailLogs(w http.ResponseWriter, r *http.Request) { - if err := VerifyAuthKey(ls.authKey, r); err != nil { - http.Error(w, err.Error(), http.StatusUnauthorized) - return - } - - var linesToTail uint64 = defaultTailLines - tailInput := r.URL.Query().Get("lines") - if tailInput != "" { - tailLines, err := strconv.ParseUint(tailInput, 10, 64) - if err != nil { - http.Error(w, "Invalid lines input", http.StatusBadRequest) - return - } - linesToTail = tailLines - } - - logs := TailFile(ls.logger, ls.fName, linesToTail) - for _, log := range logs { - fmt.Fprintf(w, "%s\n", log) - } -} - -func TailFile(logger *zap.Logger, logFile string, lines uint64) []string { - // read the last n lines of a file - file, err := os.Open(logFile) - if err != nil { - log.Fatal(err) - } - defer file.Close() - - totalLines, err := lineCounter(file) - if err != nil { - log.Fatal(err) - } - - if lines > uint64(totalLines) { - lines = uint64(totalLines) - } - - file.Seek(0, io.SeekStart) - reader := bufio.NewReader(file) - - var logs []string - for i := 0; uint64(i) < totalLines-lines; i++ { - _, _, err := reader.ReadLine() - if err != nil { - logger.Fatal("Error reading log file", zap.Error(err)) - } - } - - for { - line, _, err := reader.ReadLine() - if err == io.EOF { - break - } - logs = append(logs, string(line)) - } - - return logs -} - -func lineCounter(r io.Reader) (uint64, error) { - buf := make([]byte, 32*1024) - var count uint64 = 0 - lineSep := []byte{'\n'} - - for { - c, err := r.Read(buf) - count += uint64(bytes.Count(buf[:c], lineSep)) - - switch { - case err == io.EOF: - return count, nil - - case err != nil: - return count, err - } - } -} diff --git a/local-interchain/interchain/handlers/types.go b/local-interchain/interchain/handlers/types.go deleted file mode 100644 index a2e4af7c7..000000000 --- a/local-interchain/interchain/handlers/types.go +++ /dev/null @@ -1,57 +0,0 @@ -package handlers - -import ( - "encoding/json" - "fmt" - "net/http" - - "github.com/strangelove-ventures/interchaintest/v9/ibc" -) - -func VerifyAuthKey(expected string, r *http.Request) error { - if expected == "" { - return nil - } - - if r.URL.Query().Get("auth_key") == expected { - return nil - } - - return fmt.Errorf("unauthorized, incorrect or no ?auth_key= provided") -} - -type IbcChainConfigAlias struct { - Type string `json:"type" yaml:"type"` - Name string `json:"name" yaml:"name"` - ChainID string `json:"chain_id" yaml:"chain_id"` - Bin string `json:"bin" yaml:"bin"` - Bech32Prefix string `json:"bech32_prefix" yaml:"bech32_prefix"` - Denom string `json:"denom" yaml:"denom"` - CoinType string `json:"coin_type" yaml:"coin_type"` - GasPrices string `json:"gas_prices" yaml:"gas_prices"` - GasAdjustment float64 `json:"gas_adjustment" yaml:"gas_adjustment"` - TrustingPeriod string `json:"trusting_period" yaml:"trusting_period"` -} - -func (c *IbcChainConfigAlias) Marshal() ([]byte, error) { - return json.Marshal(c) -} - -func MarshalIBCChainConfig(cfg ibc.ChainConfig) ([]byte, error) { - jsonRes, err := json.MarshalIndent(IbcChainConfigAlias{ - Type: cfg.Type, - Name: cfg.Name, - ChainID: cfg.ChainID, - Bin: cfg.Bin, - Bech32Prefix: cfg.Bech32Prefix, - Denom: cfg.Denom, - CoinType: cfg.CoinType, - GasPrices: cfg.GasPrices, - GasAdjustment: cfg.GasAdjustment, - TrustingPeriod: cfg.TrustingPeriod, - }, "", " ") - if err != nil { - return nil, err - } - return jsonRes, nil -} diff --git a/local-interchain/interchain/handlers/uploader.go b/local-interchain/interchain/handlers/uploader.go deleted file mode 100644 index 60c303f0b..000000000 --- a/local-interchain/interchain/handlers/uploader.go +++ /dev/null @@ -1,97 +0,0 @@ -package handlers - -import ( - "context" - "encoding/json" - "fmt" - "net/http" - "os" - "path/filepath" - - "github.com/strangelove-ventures/interchaintest/local-interchain/interchain/util" - "github.com/strangelove-ventures/interchaintest/v9/chain/cosmos" -) - -type upload struct { - ctx context.Context - vals map[string][]*cosmos.ChainNode - - authKey string -} - -type Uploader struct { - ChainId string `json:"chain_id"` - NodeIndex int `json:"node_index"` - FilePath string `json:"file_path"` - - // Upload-Type: cosmwasm only - KeyName string `json:"key_name,omitempty"` - AuthKey string `json:"auth_key,omitempty"` -} - -func NewUploader(ctx context.Context, vals map[string][]*cosmos.ChainNode, authKey string) *upload { - return &upload{ - ctx: ctx, - vals: vals, - authKey: authKey, - } -} - -func (u *upload) PostUpload(w http.ResponseWriter, r *http.Request) { - var upload Uploader - err := json.NewDecoder(r.Body).Decode(&upload) - if err != nil { - util.WriteError(w, err) - return - } - - if u.authKey != "" && u.authKey != upload.AuthKey { - util.WriteError(w, fmt.Errorf("invalid `auth_key`")) - return - } - - srcPath := upload.FilePath - if _, err := os.Stat(srcPath); os.IsNotExist(err) { - util.WriteError(w, fmt.Errorf("file %s does not exist on the source machine", srcPath)) - return - } - - chainId := upload.ChainId - if _, ok := u.vals[chainId]; !ok { - util.Write(w, []byte(fmt.Sprintf(`{"error":"chain_id %s not found"}`, chainId))) - return - } - - nodeIdx := upload.NodeIndex - if len(u.vals[chainId]) <= nodeIdx { - util.Write(w, []byte(fmt.Sprintf(`{"error":"node_index %d not found"}`, nodeIdx))) - return - } - - val := u.vals[chainId][nodeIdx] - - headerType := r.Header.Get("Upload-Type") - switch headerType { - case "cosmwasm": - // Upload & Store the contract on chain. - codeId, err := val.StoreContract(u.ctx, upload.KeyName, srcPath) - if err != nil { - util.WriteError(w, err) - return - } - - util.Write(w, []byte(fmt.Sprintf(`{"code_id":%s}`, codeId))) - return - default: - // Upload the file to the docker volume (val[0]). - _, file := filepath.Split(srcPath) - if err := val.CopyFile(u.ctx, srcPath, file); err != nil { - util.WriteError(w, fmt.Errorf(`{"error":"writing contract file to docker volume: %w"}`, err)) - return - } - - home := val.HomeDir() - fileLoc := filepath.Join(home, file) - util.Write(w, []byte(fmt.Sprintf(`{"success":"file uploaded to %s","location":"%s"}`, chainId, fileLoc))) - } -} diff --git a/local-interchain/interchain/ibc.go b/local-interchain/interchain/ibc.go deleted file mode 100644 index ac8e39162..000000000 --- a/local-interchain/interchain/ibc.go +++ /dev/null @@ -1,75 +0,0 @@ -package interchain - -import ( - "context" - "fmt" - - types "github.com/strangelove-ventures/interchaintest/local-interchain/interchain/types" - "github.com/strangelove-ventures/interchaintest/v9" - "github.com/strangelove-ventures/interchaintest/v9/ibc" -) - -func VerifyIBCPaths(ibcpaths map[string][]int) error { - for k, v := range ibcpaths { - if len(v) == 1 { - return fmt.Errorf("ibc path '%s' has only 1 chain", k) - } - if len(v) > 2 { - return fmt.Errorf("ibc path '%s' has more than 2 chains", k) - } - } - return nil -} - -// TODO: Allow for a single chain to IBC between multiple chains -func LinkIBCPaths(ibcpaths map[string][]int, chains []ibc.Chain, ic *interchaintest.Interchain, r ibc.Relayer) { - for path, c := range ibcpaths { - chain1 := chains[c[0]] - chain2 := chains[c[1]] - - interLink := interchaintest.InterchainLink{ - Chain1: chain1, - Chain2: chain2, - Path: path, - Relayer: r, - } - - ic = ic.AddLink(interLink) - } -} - -// TODO: Get all channels a chain is connected too. Map it to the said chain_id. Then output to Logs. -func GetChannelConnections(ctx context.Context, ibcpaths map[string][]int, chains []ibc.Chain, ic *interchaintest.Interchain, r ibc.Relayer, eRep ibc.RelayerExecReporter) []types.IBCChannel { - if len(ibcpaths) == 0 { - return []types.IBCChannel{} - } - - channels := []types.IBCChannel{} - - for _, c := range ibcpaths { - chain1 := chains[c[0]] - chain2 := chains[c[1]] - - channel1, err := ibc.GetTransferChannel(ctx, r, eRep, chain1.Config().ChainID, chain2.Config().ChainID) - if err != nil { - panic(err) - } - - channels = append(channels, types.IBCChannel{ - ChainID: chain1.Config().ChainID, - Channel: channel1, - }) - - // this a duplicate? - channel2, err := ibc.GetTransferChannel(ctx, r, eRep, chain2.Config().ChainID, chain1.Config().ChainID) - if err != nil { - panic(err) - } - channels = append(channels, types.IBCChannel{ - ChainID: chain2.Config().ChainID, - Channel: channel2, - }) - } - - return channels -} diff --git a/local-interchain/interchain/logs.go b/local-interchain/interchain/logs.go deleted file mode 100644 index 04787571b..000000000 --- a/local-interchain/interchain/logs.go +++ /dev/null @@ -1,92 +0,0 @@ -package interchain - -import ( - "encoding/json" - "os" - "path/filepath" - "time" - - types "github.com/strangelove-ventures/interchaintest/local-interchain/interchain/types" - "github.com/strangelove-ventures/interchaintest/v9/chain/cosmos" - "github.com/strangelove-ventures/interchaintest/v9/chain/ethereum/foundry" - "github.com/strangelove-ventures/interchaintest/v9/ibc" - "go.uber.org/zap" - "go.uber.org/zap/zapcore" -) - -func WriteRunningChains(configsDir string, bz []byte) { - path := filepath.Join(configsDir, "configs") - if _, err := os.Stat(path); os.IsNotExist(err) { - if err := os.MkdirAll(path, os.ModePerm); err != nil { - panic(err) - } - } - - file := filepath.Join(path, "logs.json") - _ = os.WriteFile(file, bz, 0o644) -} - -func DumpChainsInfoToLogs(configDir string, config *types.Config, chains []ibc.Chain, connections []types.IBCChannel) { - mainLogs := types.MainLogs{ - StartTime: uint64(time.Now().Unix()), - Chains: []types.LogOutput{}, - Channels: connections, - } - - // Iterate chain config & get the ibc chain's to save data to logs. - for idx, chain := range config.Chains { - switch chains[idx].(type) { - case *cosmos.CosmosChain: - chainObj := chains[idx].(*cosmos.CosmosChain) - - ibcPaths := chain.IBCPaths - if ibcPaths == nil { - ibcPaths = []string{} - } - - log := types.LogOutput{ - ChainID: chainObj.Config().ChainID, - ChainName: chainObj.Config().Name, - RPCAddress: chainObj.GetHostRPCAddress(), - RESTAddress: chainObj.GetHostAPIAddress(), - GRPCAddress: chainObj.GetHostGRPCAddress(), - P2PAddress: chainObj.GetHostPeerAddress(), - IBCPath: ibcPaths, - } - - mainLogs.Chains = append(mainLogs.Chains, log) - case *foundry.AnvilChain: - chainObj := chains[idx].(*foundry.AnvilChain) - - log := types.LogOutput{ - ChainID: chainObj.Config().ChainID, - ChainName: chainObj.Config().Name, - RPCAddress: chainObj.GetHostRPCAddress(), - } - - mainLogs.Chains = append(mainLogs.Chains, log) - } - } - - bz, _ := json.MarshalIndent(mainLogs, "", " ") - WriteRunningChains(configDir, []byte(bz)) -} - -// == Zap Logger == -func InitLogger(logFile *os.File) (*zap.Logger, error) { - // Production logger that saves logs to file and console. - pe := zap.NewProductionEncoderConfig() - pe.EncodeTime = zapcore.TimeEncoderOfLayout(time.TimeOnly) - - fileEncoder := zapcore.NewJSONEncoder(pe) - consoleEncoder := zapcore.NewConsoleEncoder(pe) - - level := zap.InfoLevel - - core := zapcore.NewTee( - zapcore.NewCore(fileEncoder, zapcore.AddSync(logFile), level), - zapcore.NewCore(consoleEncoder, zapcore.AddSync(os.Stdout), level), - ) - - return zap.New(core), nil -} diff --git a/local-interchain/interchain/router/router.go b/local-interchain/interchain/router/router.go deleted file mode 100644 index 1de100e17..000000000 --- a/local-interchain/interchain/router/router.go +++ /dev/null @@ -1,126 +0,0 @@ -package router - -import ( - "context" - "encoding/json" - "log" - "net/http" - "os" - "path/filepath" - - "github.com/docker/docker/client" - "github.com/gorilla/mux" - ictypes "github.com/strangelove-ventures/interchaintest/local-interchain/interchain/types" - "github.com/strangelove-ventures/interchaintest/local-interchain/interchain/util" - "github.com/strangelove-ventures/interchaintest/v9" - "github.com/strangelove-ventures/interchaintest/v9/chain/cosmos" - "github.com/strangelove-ventures/interchaintest/v9/ibc" - "go.uber.org/zap" - - "github.com/strangelove-ventures/interchaintest/local-interchain/interchain/handlers" -) - -type Route struct { - Path string `json:"path" yaml:"path"` - Methods []string `json:"methods" yaml:"methods"` -} - -type RouterConfig struct { - ibc.RelayerExecReporter - - Config *ictypes.Config - CosmosChains map[string]*cosmos.CosmosChain - Vals map[string][]*cosmos.ChainNode - Relayer ibc.Relayer - AuthKey string - InstallDir string - LogFile string - TestName string - Logger *zap.Logger - DockerClient *client.Client -} - -func NewRouter( - ctx context.Context, - ic *interchaintest.Interchain, - rc *RouterConfig, -) *mux.Router { - r := mux.NewRouter() - - infoH := handlers.NewInfo(rc.Config, rc.InstallDir, ctx, ic, rc.CosmosChains, rc.Vals, rc.Relayer, rc.RelayerExecReporter) - r.HandleFunc("/info", infoH.GetInfo).Methods(http.MethodGet) - - // interaction logs - logStream := handlers.NewLogSteam(rc.Logger, rc.LogFile, rc.AuthKey) - r.HandleFunc("/logs", logStream.StreamLogs).Methods(http.MethodGet) - r.HandleFunc("/logs_tail", logStream.TailLogs).Methods(http.MethodGet) // ?lines= - - containerStream := handlers.NewContainerSteam(ctx, rc.Logger, rc.DockerClient, rc.AuthKey, rc.TestName, rc.Vals) - r.HandleFunc("/container_logs", containerStream.StreamContainer).Methods(http.MethodGet) // ?container=&colored=true&lines=10000 - - wd, err := os.Getwd() - if err != nil { - panic(err) - } - - chainRegistryFile := filepath.Join(wd, "chain_registry.json") - if _, err := os.Stat(chainRegistryFile); err == nil { - crH := handlers.NewChainRegistry(chainRegistryFile) - r.HandleFunc("/chain_registry", crH.GetChainRegistry).Methods(http.MethodGet) - } else { - log.Printf("chain_registry.json not found in %s, not exposing endpoint.", wd) - } - - chainRegistryAssetsFile := filepath.Join(wd, "chain_registry_assets.json") - if _, err := os.Stat(chainRegistryAssetsFile); err == nil { - crH := handlers.NewChainRegistry(chainRegistryAssetsFile) - r.HandleFunc("/chain_registry_assets", crH.GetChainRegistry).Methods(http.MethodGet) - } else { - log.Printf("chain_registry_assets.json not found in %s, not exposing endpoint.", wd) - } - - actionsH := handlers.NewActions(ctx, ic, rc.CosmosChains, rc.Vals, rc.Relayer, rc.RelayerExecReporter, rc.AuthKey) - r.HandleFunc("/", actionsH.PostActions).Methods(http.MethodPost) - - uploaderH := handlers.NewUploader(ctx, rc.Vals, rc.AuthKey) - r.HandleFunc("/upload", uploaderH.PostUpload).Methods(http.MethodPost) - - availableRoutes := getAllMethods(*r) - r.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { - jsonRes, err := json.MarshalIndent(availableRoutes, "", " ") - if err != nil { - util.WriteError(w, err) - return - } - util.Write(w, jsonRes) - }).Methods(http.MethodGet) - - return r -} - -func getAllMethods(r mux.Router) []Route { - endpoints := make([]Route, 0) - - err := r.Walk(func(route *mux.Route, router *mux.Router, ancestors []*mux.Route) error { - tpl, err1 := route.GetPathTemplate() - met, err2 := route.GetMethods() - if err1 != nil { - return err1 - } - if err2 != nil { - return err2 - } - - // fmt.Println(tpl, met) - endpoints = append(endpoints, Route{ - Path: tpl, - Methods: met, - }) - return nil - }) - if err != nil { - panic(err) - } - - return endpoints -} diff --git a/local-interchain/interchain/start.go b/local-interchain/interchain/start.go deleted file mode 100644 index a3a54a04e..000000000 --- a/local-interchain/interchain/start.go +++ /dev/null @@ -1,341 +0,0 @@ -package interchain - -import ( - "context" - "fmt" - "math" - "net/http" - "os" - "os/signal" - "path" - "strings" - "sync" - "syscall" - "time" - - "github.com/google/uuid" - "github.com/gorilla/handlers" - "github.com/strangelove-ventures/interchaintest/local-interchain/interchain/router" - "github.com/strangelove-ventures/interchaintest/local-interchain/interchain/types" - "github.com/strangelove-ventures/interchaintest/v9" - "github.com/strangelove-ventures/interchaintest/v9/chain/cosmos" - "github.com/strangelove-ventures/interchaintest/v9/dockerutil" - "github.com/strangelove-ventures/interchaintest/v9/ibc" - interchaintestrelayer "github.com/strangelove-ventures/interchaintest/v9/relayer" - "github.com/strangelove-ventures/interchaintest/v9/testreporter" - "github.com/strangelove-ventures/interchaintest/v9/testutil" - "go.uber.org/zap" -) - -func StartChain(installDir, chainCfgFile string, ac *types.AppStartConfig) { - ctx, cancel := context.WithCancel(context.Background()) - defer cancel() - - var relayer ibc.Relayer - var eRep *testreporter.RelayerExecReporter - - vals := make(map[string][]*cosmos.ChainNode) - ic := interchaintest.NewInterchain() - defer ic.Close() - - // Cleanup servers on ctrl+c signal - c := make(chan os.Signal, 1) - signal.Notify(c, os.Interrupt, syscall.SIGTERM) - wg := sync.WaitGroup{} - wg.Add(1) - go func() { - defer wg.Done() - select { - case <-c: - fmt.Println("\nReceived signal to stop local-ic...") - killContainer(ctx) - case <-ctx.Done(): - killContainer(ctx) - } - }() - - // very unique file to ensure if multiple start at the same time. - logFile, err := interchaintest.CreateLogFile(fmt.Sprintf("%d-%s.json", time.Now().Unix(), uuid.New())) - if err != nil { - panic(err) - } - defer func() { - if err := logFile.Close(); err != nil { - fmt.Println("Error closing log file: ", err) - } - - if err := os.Remove(logFile.Name()); err != nil { - fmt.Println("Error deleting log file: ", err) - } - }() - - // Logger for ICTest functions only. - logger, err := InitLogger(logFile) - if err != nil { - panic(err) - } - logger.Debug("Log file created", zap.String("file", logFile.Name())) - - config := ac.Cfg - - config.Relayer = ac.Relayer - - WriteRunningChains(installDir, []byte("{}")) - - // ibc-path-name -> index of []cosmos.CosmosChain - ibcpaths := make(map[string][]int) - // providerChainId -> []consumerChainIds - icsPair := make(map[string][]string) - - chainSpecs := []*interchaintest.ChainSpec{} - - for idx, cfg := range config.Chains { - _, chainSpec := CreateChainConfigs(cfg) - chainSpecs = append(chainSpecs, chainSpec) - - if len(cfg.IBCPaths) > 0 { - for _, path := range cfg.IBCPaths { - ibcpaths[path] = append(ibcpaths[path], idx) - } - } - - if cfg.ICSConsumerLink != "" { - icsPair[cfg.ICSConsumerLink] = append(icsPair[cfg.ICSConsumerLink], cfg.ChainID) - } - } - - if err := VerifyIBCPaths(ibcpaths); err != nil { - logger.Fatal("VerifyIBCPaths", zap.Error(err)) - } - - // Create chain factory for all the chains - cf := interchaintest.NewBuiltinChainFactory(logger, chainSpecs) - - testName := GetTestName(chainCfgFile) - - chains, err := cf.Chains(testName) - if err != nil { - logger.Fatal("ChainFactory chains", zap.Error(err)) - } - - for _, chain := range chains { - ic = ic.AddChain(chain) - } - ic.AdditionalGenesisWallets = SetupGenesisWallets(config, chains) - - fakeT := FakeTesting{ - FakeName: testName, - } - - // Base setup - - rep := testreporter.NewReporter(logFile) - eRep = rep.RelayerExecReporter(&fakeT) - - client, network := interchaintest.DockerSetup(fakeT) - - // setup a relayer if we have IBC paths to use. - if len(ibcpaths) > 0 || len(icsPair) > 0 { - rlyCfg := config.Relayer - - relayerType, relayerName := ibc.CosmosRly, "relay" - rf := interchaintest.NewBuiltinRelayerFactory( - relayerType, - logger, - interchaintestrelayer.CustomDockerImage( - rlyCfg.DockerImage.Repository, - rlyCfg.DockerImage.Version, - rlyCfg.DockerImage.UIDGID, - ), - interchaintestrelayer.StartupFlags(rlyCfg.StartupFlags...), - ) - - // This also just needs the name. - relayer = rf.Build(fakeT, client, network) - ic = ic.AddRelayer(relayer, relayerName) - - // Add links between chains - LinkIBCPaths(ibcpaths, chains, ic, relayer) - } - - // Add Interchain Security chain pairs together - icsProviderPaths := make(map[string]ibc.Chain) - if len(icsPair) > 0 { - for provider, consumers := range icsPair { - var p ibc.Chain - - allConsumers := []ibc.Chain{} - for _, consumer := range consumers { - for _, chain := range chains { - if chain.Config().ChainID == provider { - p = chain - } - if chain.Config().ChainID == consumer { - allConsumers = append(allConsumers, chain) - } - } - } - - if p == nil { - logger.Fatal("provider not found in chains on Start", zap.String("provider", provider)) - } - - for _, c := range allConsumers { - pathName := fmt.Sprintf("%s-%s", p.Config().ChainID, c.Config().ChainID) - - logger.Info("Adding ICS pair", zap.String("provider", p.Config().ChainID), zap.String("consumer", c.Config().ChainID), zap.String("path", pathName)) - - if _, ok := icsProviderPaths[pathName]; ok { - logger.Fatal("pathName already exists in icsProviderPaths. Update the consumers ChainID to be unique", zap.String("pathName", pathName)) - } - - icsProviderPaths[pathName] = p - - ic = ic.AddProviderConsumerLink(interchaintest.ProviderConsumerLink{ - Provider: p, - Consumer: c, - Relayer: relayer, - Path: pathName, - }) - } - } - } - - // Build all chains & begin. - err = ic.Build(ctx, eRep, interchaintest.InterchainBuildOptions{ - TestName: testName, - Client: client, - NetworkID: network, - SkipPathCreation: false, - }) - if err != nil { - logger.Fatal("Interchain Build", zap.Error(err)) - } - - if relayer != nil && len(ibcpaths) > 0 { - paths := make([]string, 0, len(ibcpaths)) - for k := range ibcpaths { - paths = append(paths, k) - } - - if err := relayer.StartRelayer(ctx, eRep, paths...); err != nil { - logger.Fatal("Relayer StartRelayer", zap.Error(err)) - } - - defer func() { - if err := relayer.StopRelayer(ctx, eRep); err != nil { - logger.Error("Relayer StopRelayer", zap.Error(err)) - } - }() - } - - for _, chain := range chains { - if cosmosChain, ok := chain.(*cosmos.CosmosChain); ok { - chainID := cosmosChain.Config().ChainID - vals[chainID] = cosmosChain.Validators - } - } - - // ICS provider setup - if len(icsProviderPaths) > 0 { - logger.Info("ICS provider setup", zap.Any("icsProviderPaths", icsProviderPaths)) - - for ibcPath, chain := range icsProviderPaths { - if provider, ok := chain.(*cosmos.CosmosChain); ok { - if err := provider.FinishICSProviderSetup(ctx, relayer, eRep, ibcPath); err != nil { - logger.Error("FinishICSProviderSetup", zap.Error(err)) - } - } - } - } - - // Starts a non blocking REST server to take action on the chain. - go func() { - cosmosChains := map[string]*cosmos.CosmosChain{} - for _, chain := range chains { - if cosmosChain, ok := chain.(*cosmos.CosmosChain); ok { - cosmosChains[cosmosChain.Config().ChainID] = cosmosChain - } - } - - r := router.NewRouter(ctx, ic, &router.RouterConfig{ - Logger: logger, - RelayerExecReporter: eRep, - Config: config, - CosmosChains: cosmosChains, - DockerClient: client, - Vals: vals, - Relayer: relayer, - AuthKey: ac.AuthKey, - InstallDir: installDir, - LogFile: logFile.Name(), - TestName: testName, - }) - - config.Server = types.RestServer{ - Host: ac.Address, - Port: fmt.Sprintf("%d", ac.Port), - } - - if config.Server.Host == "" { - config.Server.Host = "127.0.0.1" - } - if config.Server.Port == "" { - config.Server.Port = "8080" - } - - serverAddr := fmt.Sprintf("%s:%s", config.Server.Host, config.Server.Port) - - // Where ORIGIN_ALLOWED is like `scheme://dns[:port]`, or `*` (insecure) - corsHandler := handlers.CORS( - handlers.AllowedOrigins([]string{"*"}), - handlers.AllowedHeaders([]string{"Content-Type", "Authorization", "Accept"}), - handlers.AllowedMethods([]string{"GET", "HEAD", "POST", "PUT", "OPTIONS", "DELETE"}), - handlers.AllowCredentials(), - handlers.ExposedHeaders([]string{"*"}), - ) - - if err := http.ListenAndServe(serverAddr, corsHandler(r)); err != nil { - logger.Error("HTTP ListenAndServe", zap.Error(err)) - } - }() - - AddGenesisKeysToKeyring(ctx, config, chains) - - // run commands for each server after startup. Iterate chain configs - PostStartupCommands(ctx, config, chains) - - connections := GetChannelConnections(ctx, ibcpaths, chains, ic, relayer, eRep) - - // Save to logs.json file for runtime chain information. - DumpChainsInfoToLogs(installDir, config, chains, connections) - - logger.Info("Local-IC API is running", zap.String("url", fmt.Sprintf("http://%s:%s", config.Server.Host, config.Server.Port))) - - if err = testutil.WaitForBlocks(ctx, math.MaxInt, chains[0]); err != nil { - // when the network is stopped / killed (ctrl + c), ignore error - if !strings.Contains(err.Error(), "post failed:") { - fmt.Println("WaitForBlocks StartChain: ", err) - } - } - - wg.Wait() -} - -func GetTestName(chainCfgFile string) string { - name := chainCfgFile - fExt := path.Ext(name) - if fExt != "" { - name = strings.ReplaceAll(chainCfgFile, fExt, "") - } - - return name + "ic" -} - -func killContainer(ctx context.Context) { - removed := dockerutil.KillAllInterchaintestContainers(ctx) - for _, r := range removed { - fmt.Println(" - ", r) - } - os.Exit(1) -} diff --git a/local-interchain/interchain/types/chain_builder.go b/local-interchain/interchain/types/chain_builder.go deleted file mode 100644 index 89485130c..000000000 --- a/local-interchain/interchain/types/chain_builder.go +++ /dev/null @@ -1,203 +0,0 @@ -package types - -import ( - "encoding/json" - "fmt" - "os" - "path/filepath" - - "github.com/strangelove-ventures/interchaintest/v9/chain/cosmos" - "github.com/strangelove-ventures/interchaintest/v9/ibc" - "gopkg.in/yaml.v3" -) - -// NewChainBuilder creates a new Chain. -func NewChainBuilder(name, chainID, binary, denom, bech32 string) *Chain { - return &Chain{ - Name: name, - ChainID: chainID, - Binary: binary, - Denom: denom, - - TrustingPeriod: "336h", - Bech32Prefix: bech32, - ChainType: "cosmos", - CoinType: 118, - GasAdjustment: 2.0, - NumberVals: 1, - NumberNode: 0, - GasPrices: fmt.Sprintf("0.0%s", denom), - Debugging: false, - Genesis: Genesis{ - Accounts: []GenesisAccount{}, - Modify: []cosmos.GenesisKV{}, - StartupCommands: []string{}, - }, - } -} - -func (c *Chain) SetDenom(denom string) *Chain { - c.Denom = denom - return c -} - -func (c *Chain) SetDockerImage(dockerImage ibc.DockerImage) *Chain { - c.DockerImage = dockerImage - return c -} - -func (c *Chain) SetHostPortOverride(hostPortOverride map[string]string) *Chain { - c.HostPortOverride = hostPortOverride - return c -} - -func (c *Chain) SetGasPrices(gasPrices string) *Chain { - c.GasPrices = gasPrices - return c -} - -func (c *Chain) SetGasAdjustment(gasAdjustment float64) *Chain { - c.GasAdjustment = gasAdjustment - return c -} - -func (c *Chain) SetValidators(numberVals int) *Chain { - c.NumberVals = numberVals - return c -} - -func (c *Chain) SetNodes(numberNode int) *Chain { - c.NumberNode = numberNode - return c -} - -func (c *Chain) SetChainType(chainType string) *Chain { - c.ChainType = chainType - return c -} - -func (c *Chain) SetDebugging(debugging bool) *Chain { - c.Debugging = debugging - return c -} - -func (c *Chain) SetBlockTime(blockTime string) *Chain { - c.BlockTime = blockTime - return c -} - -func (c *Chain) SetTrustingPeriod(trustingPeriod string) *Chain { - c.TrustingPeriod = trustingPeriod - return c -} - -func (c *Chain) SetICSConsumerLink(icsConsumerLink string) *Chain { - c.ICSConsumerLink = icsConsumerLink - return c -} - -// SetIBCPaths hardcodes the set IBC paths array for the chain. -func (c *Chain) SetIBCPaths(ibcPaths []string) *Chain { - c.IBCPaths = ibcPaths - return c -} - -// SetChainsIBCLink appends the new IBC path to both chains -func (c *Chain) SetAppendedIBCPathLink(counterParty *Chain) *Chain { - ibcPath := fmt.Sprintf("%s_%s", c.ChainID, counterParty.ChainID) - c.IBCPaths = append(c.IBCPaths, ibcPath) - counterParty.IBCPaths = append(counterParty.IBCPaths, ibcPath) - return c -} - -func (c *Chain) SetGenesis(genesis Genesis) *Chain { - c.Genesis = genesis - return c -} - -func (c *Chain) SetDefaultSDKv47Genesis(numRandAcc int) *Chain { - c.Genesis = Genesis{ - Modify: []cosmos.GenesisKV{ - cosmos.NewGenesisKV("app_state.gov.params.voting_period", "3s"), - cosmos.NewGenesisKV("app_state.gov.params.max_deposit_period", "10s"), - cosmos.NewGenesisKV("app_state.gov.params.min_deposit.0.denom", c.Denom), - cosmos.NewGenesisKV("app_state.gov.params.min_deposit.0.amount", "1"), - }, - Accounts: append( - []GenesisAccount{ - NewGenesisAccount("acc0", c.Bech32Prefix, "25000000000%DENOM%", c.CoinType, - "decorate bright ozone fork gallery riot bus exhaust worth way bone indoor calm squirrel merry zero scheme cotton until shop any excess stage laundry", - ), - NewGenesisAccount("acc1", c.Bech32Prefix, "24000000000%DENOM%", c.CoinType, - "wealth flavor believe regret funny network recall kiss grape useless pepper cram hint member few certain unveil rather brick bargain curious require crowd raise", - ), - }, - GenerateRandomAccounts(numRandAcc, c.Bech32Prefix, c.CoinType)..., - ), - } - return c -} - -func (c *Chain) SetStartupCommands(cmds ...string) *Chain { - c.Genesis.StartupCommands = cmds - return c -} - -func (c *Chain) SetConfigFileOverrides(configFileOverrides []ConfigFileOverrides) *Chain { - c.ConfigFileOverrides = configFileOverrides - return c -} - -func (c *Chain) SetBech32Prefix(bech32Prefix string) *Chain { - c.Bech32Prefix = bech32Prefix - c.SetRandomAccounts(5) - return c -} - -func (c *Chain) SetCoinType(num int) *Chain { - c.CoinType = num - c.SetRandomAccounts(5) - return c -} - -func (c *Chain) SetRandomAccounts(num int) *Chain { - c.Genesis.Accounts = GenerateRandomAccounts(num, c.Bech32Prefix, c.CoinType) - return c -} - -func (c *Chain) SaveJSON(filePath string) error { - config := new(ChainsConfig) - config.Chains = append(config.Chains, *c) - - if err := os.MkdirAll(filepath.Dir(filePath), os.ModePerm); err != nil { - return err - } - - bz, err := json.MarshalIndent(config, "", " ") - if err != nil { - return err - } - - return os.WriteFile(filePath, bz, 0o777) -} - -func (c *Chain) SaveYAML(filePath string) error { - config := new(ChainsConfig) - config.Chains = append(config.Chains, *c) - - bz, err := yaml.Marshal(config) - if err != nil { - return err - } - - return os.WriteFile(filePath, bz, 0o777) -} - -func BaseHostPortOverride() map[string]string { - return map[string]string{ - "26656": "26656", - "26657": "26657", - "1317": "1317", - "9090": "9090", - } -} diff --git a/local-interchain/interchain/types/chains.go b/local-interchain/interchain/types/chains.go deleted file mode 100644 index 0d037b495..000000000 --- a/local-interchain/interchain/types/chains.go +++ /dev/null @@ -1,74 +0,0 @@ -package types - -import ( - "github.com/strangelove-ventures/interchaintest/v9/ibc" - "github.com/strangelove-ventures/interchaintest/v9/testutil" -) - -func ChainCosmosHub(chainID string) *Chain { - chain := NewChainBuilder("gaia", chainID, "gaiad", "uatom", "cosmos").SetDebugging(true) - chain.SetBech32Prefix("cosmos") - chain.SetBlockTime("500ms") - chain.SetDockerImage(ibc.DockerImage{ - Version: "v16.0.0", - }) - chain.SetDefaultSDKv47Genesis(5) - return chain -} - -func ChainEthereum() *Chain { - eth := NewChainBuilder("ethereum", "31337", "anvil", "wei", "0x").SetDebugging(true) - eth.SetChainType("ethereum"). - SetCoinType(60). - SetBech32Prefix("0x"). - SetGasPrices("0"). - SetTrustingPeriod("0"). - SetGasAdjustment(0). - SetDockerImage(ibc.DockerImage{ - Repository: "ghcr.io/foundry-rs/foundry", - Version: "latest", - }). - SetHostPortOverride(map[string]string{ - "8545": "8545", - }). - SetGenesis(Genesis{}). - SetConfigFileOverrides([]ConfigFileOverrides{ - { - Paths: testutil.Toml{ - "--load-state": "../../chains/state/avs-and-eigenlayer-deployed-anvil-state.json", - }, - }, - }) - return eth -} - -func ChainJuno(chainID string) *Chain { - chain := NewChainBuilder("juno", chainID, "junod", "ujuno", "juno").SetDebugging(true) - chain.SetBlockTime("500ms") - chain.SetDockerImage(ibc.DockerImage{ - Version: "v21.0.0", - }) - chain.SetDefaultSDKv47Genesis(5) - chain.SetStartupCommands("%BIN% keys add example-key-after --keyring-backend test --home %HOME%") - return chain -} - -func ChainStargaze() *Chain { - chain := NewChainBuilder("stargaze", "localstars-1", "starsd", "ustars", "stars").SetDebugging(true) - chain.SetBlockTime("500ms") - chain.SetDockerImage(ibc.DockerImage{ - Version: "v13.0.0", - }) - chain.SetDefaultSDKv47Genesis(5) - return chain -} - -func ChainOsmosis() *Chain { - chain := NewChainBuilder("osmosis", "localosmo-1", "osmosisd", "uosmo", "osmo").SetDebugging(true) - chain.SetBlockTime("500ms") - chain.SetDockerImage(ibc.DockerImage{ - Version: "v25.0.0", - }) - chain.SetDefaultSDKv47Genesis(5) - return chain -} diff --git a/local-interchain/interchain/types/chains_test.go b/local-interchain/interchain/types/chains_test.go deleted file mode 100644 index 7c820a2e3..000000000 --- a/local-interchain/interchain/types/chains_test.go +++ /dev/null @@ -1,37 +0,0 @@ -package types - -import ( - "testing" - - "github.com/stretchr/testify/require" -) - -func TestChainsGeneration(t *testing.T) { - t.Run("single chain runs", func(t *testing.T) { - require.NoError(t, ChainEthereum().SaveJSON("chains/gen-ethereum.json")) - require.NoError(t, ChainStargaze().SaveJSON("chains/gen-stargaze.json")) - require.NoError(t, ChainCosmosHub("localcosmos-1").SaveJSON("chains/gen-cosmoshub.json")) - require.NoError(t, ChainOsmosis().SaveJSON("chains/gen-osmosis.json")) - require.NoError(t, ChainJuno("localjuno-1").SaveYAML("chains/gen-juno.yml")) - }) - - t.Run("2 IBC connected chains", func(t *testing.T) { - j1, j2 := ChainJuno("localjuno-1"), ChainJuno("localjuno-2") - j1.SetAppendedIBCPathLink(j2) - - require.NoError(t, NewChainsConfig(j1, j2).SaveJSON("chains/gen-juno-ibc.json")) - }) - - t.Run("4 way IBC setup", func(t *testing.T) { - hub := ChainCosmosHub("localhub-1") - hub2 := ChainCosmosHub("localhub-2") - juno1 := ChainJuno("localjuno-1") - osmo1 := ChainOsmosis() - - hub.SetAppendedIBCPathLink(hub2).SetAppendedIBCPathLink(juno1) - hub2.SetAppendedIBCPathLink(juno1) - osmo1.SetAppendedIBCPathLink(hub).SetAppendedIBCPathLink(juno1) - - require.NoError(t, NewChainsConfig(hub, hub2, juno1, osmo1).SaveJSON("chains/gen-4-ibc.json")) - }) -} diff --git a/local-interchain/interchain/types/genesis.go b/local-interchain/interchain/types/genesis.go deleted file mode 100644 index bf33bbe86..000000000 --- a/local-interchain/interchain/types/genesis.go +++ /dev/null @@ -1,93 +0,0 @@ -package types - -import ( - "fmt" - - addresscodec "github.com/cosmos/cosmos-sdk/codec/address" - "github.com/cosmos/cosmos-sdk/crypto/hd" - "github.com/cosmos/cosmos-sdk/crypto/keyring" - sdk "github.com/cosmos/cosmos-sdk/types" - moduletestutil "github.com/cosmos/cosmos-sdk/types/module/testutil" - "github.com/cosmos/go-bip39" - "github.com/strangelove-ventures/interchaintest/v9/chain/cosmos" -) - -type GenesisAccount struct { - Name string `json:"name"` - Amount string `json:"amount"` - Address string `json:"address"` - Mnemonic string `json:"mnemonic"` -} - -type Genesis struct { - // Only apart of my fork for now. - Modify []cosmos.GenesisKV `json:"modify,omitempty" yaml:"modify,omitempty"` // 'key' & 'val' in the config. - - Accounts []GenesisAccount `json:"accounts,omitempty" yaml:"accounts,omitempty"` - - // A list of commands which run after chains are good to go. - StartupCommands []string `json:"startup_commands,omitempty" yaml:"startup_commands,omitempty"` -} - -func NewGenesisAccount(name, bech32, coins string, coinType int, mnemonic string) GenesisAccount { - if coins == "" { - coins = "100000%DENOM%" - } - - if mnemonic == "" { - entropy, _ := bip39.NewEntropy(256) - mnemonic, _ = bip39.NewMnemonic(entropy) - } - - return GenesisAccount{ - Name: name, - Amount: coins, - Address: MnemonicToAddress(mnemonic, bech32, uint32(coinType)), - Mnemonic: mnemonic, - } -} - -func GenerateRandomAccounts(num int, prefix string, coinType int) []GenesisAccount { - accounts := []GenesisAccount{} - - for i := 0; i < num; i++ { - entropy, _ := bip39.NewEntropy(256) - mnemonic, _ := bip39.NewMnemonic(entropy) - - addr := MnemonicToAddress(mnemonic, prefix, uint32(coinType)) - - accounts = append(accounts, GenesisAccount{ - Name: fmt.Sprintf("user%d", i), - Amount: "100000%DENOM%", - Address: addr, - Mnemonic: mnemonic, - }) - - } - - return accounts -} - -func MnemonicToAddress(mnemonic, prefix string, coinType uint32) string { - e := moduletestutil.MakeTestEncodingConfig() - - kr := keyring.NewInMemory(e.Codec) - - bip44Path := fmt.Sprintf("m/%d'/%d'/0'/0/0", sdk.Purpose, coinType) - r, err := kr.NewAccount("tempkey", mnemonic, "", bip44Path, hd.Secp256k1) - if err != nil { - panic(err) - } - - bz, err := r.GetAddress() - if err != nil { - panic(err) - } - - bech32Addr, err := addresscodec.NewBech32Codec(prefix).BytesToString(bz) - if err != nil { - panic(err) - } - - return bech32Addr -} diff --git a/local-interchain/interchain/types/types.go b/local-interchain/interchain/types/types.go deleted file mode 100644 index 9fb3353f7..000000000 --- a/local-interchain/interchain/types/types.go +++ /dev/null @@ -1,189 +0,0 @@ -package types - -import ( - "encoding/json" - "fmt" - "os" - "path/filepath" - - "github.com/go-playground/validator" - "github.com/strangelove-ventures/interchaintest/v9/chain/cosmos" - "github.com/strangelove-ventures/interchaintest/v9/ibc" - "github.com/strangelove-ventures/interchaintest/v9/testutil" - "gopkg.in/yaml.v3" -) - -type Config struct { - Chains []Chain `json:"chains" yaml:"chains"` - Relayer Relayer `json:"relayer" yaml:"relayer"` - Server RestServer `json:"server" yaml:"server"` -} - -type AppStartConfig struct { - Address string - Port uint16 - Cfg *Config - Relayer Relayer - AuthKey string // optional password for API interaction -} - -type RestServer struct { - Host string `json:"host" yaml:"host"` - Port string `json:"port" yaml:"port"` -} - -type Relayer struct { - DockerImage ibc.DockerImage `json:"docker_image" yaml:"docker_image"` - StartupFlags []string `json:"startup_flags" yaml:"startup_flags"` -} - -type IBCChannel struct { - ChainID string `json:"chain_id" yaml:"chain_id"` - Channel *ibc.ChannelOutput `json:"channel" yaml:"channel"` -} - -// ConfigFileOverrides overrides app toml configuration files. -type ConfigFileOverrides struct { - File string `json:"file,omitempty" yaml:"file,omitempty"` - Paths testutil.Toml `json:"paths" yaml:"paths"` -} - -type Chain struct { - Name string `json:"name" yaml:"name" validate:"min=1"` - ChainID string `json:"chain_id" yaml:"chain_id" validate:"min=3"` - DockerImage ibc.DockerImage `json:"docker_image" yaml:"docker_image" validate:"url"` - GasPrices string `json:"gas_prices" yaml:"gas_prices"` - GasAdjustment float64 `json:"gas_adjustment" yaml:"gas_adjustment"` - Genesis Genesis `json:"genesis,omitempty" yaml:"genesis,omitempty"` - ConfigFileOverrides []ConfigFileOverrides `json:"config_file_overrides,omitempty" yaml:"config_file_overrides,omitempty"` - IBCPaths []string `json:"ibc_paths,omitempty" yaml:"ibc_paths,omitempty"` - NumberVals int `json:"number_vals" yaml:"number_vals" validate:"gte=1"` - NumberNode int `json:"number_node" yaml:"number_node"` - ChainType string `json:"chain_type" yaml:"chain_type" validate:"min=1"` - CoinType int `json:"coin_type" yaml:"coin_type" validate:"gt=0"` - Binary string `json:"binary" yaml:"binary" validate:"min=1"` - Bech32Prefix string `json:"bech32_prefix" yaml:"bech32_prefix" validate:"min=1"` - Denom string `json:"denom" yaml:"denom" validate:"min=1"` - TrustingPeriod string `json:"trusting_period" yaml:"trusting_period"` - Debugging bool `json:"debugging" yaml:"debugging"` - BlockTime string `json:"block_time,omitempty" yaml:"block_time,omitempty"` - HostPortOverride map[string]string `json:"host_port_override,omitempty" yaml:"host_port_override,omitempty"` - ICSConsumerLink string `json:"ics_consumer_link,omitempty" yaml:"ics_consumer_link,omitempty"` - ICSVersionOverride ibc.ICSConfig `json:"ics_version_override,omitempty" yaml:"ics_version_override,omitempty"` - AdditionalStartArgs []string `json:"additional_start_args,omitempty" yaml:"additional_start_args,omitempty"` - Env []string `json:"env,omitempty" yaml:"env,omitempty"` -} - -func (chain *Chain) Validate() error { - validate := validator.New() - return validate.Struct(chain) -} - -func (chain *Chain) SetChainDefaults() { - if chain.ChainType == "" { - chain.ChainType = "cosmos" - } - - if chain.CoinType == 0 { - chain.CoinType = 118 - } - - if chain.DockerImage.UIDGID == "" { - chain.DockerImage.UIDGID = "1025:1025" - } - - if chain.NumberVals == 0 { - chain.NumberVals = 1 - } - - if chain.TrustingPeriod == "" { - chain.TrustingPeriod = "112h" - } - - if chain.BlockTime == "" { - chain.BlockTime = "2s" - } - - if chain.IBCPaths == nil { - chain.IBCPaths = []string{} - } - - // Genesis - if chain.Genesis.StartupCommands == nil { - chain.Genesis.StartupCommands = []string{} - } - if chain.Genesis.Accounts == nil { - chain.Genesis.Accounts = []GenesisAccount{} - } - if chain.Genesis.Modify == nil { - chain.Genesis.Modify = []cosmos.GenesisKV{} - } - - if chain.Binary == "" { - panic("'binary' is required in your config for " + chain.ChainID) - } - if chain.Denom == "" { - panic("'denom' is required in your config for " + chain.ChainID) - } - if chain.Bech32Prefix == "" { - panic("'bech32_prefix' is required in your config for " + chain.ChainID) - } -} - -// ChainsConfig is the chain configuration for the file. -type ChainsConfig struct { - Chains []Chain `json:"chains" yaml:"chains"` -} - -func NewChainsConfig(chains ...*Chain) ChainsConfig { - updatedChains := make([]Chain, len(chains)) - for i, chain := range chains { - updatedChains[i] = *chain - } - - return ChainsConfig{ - Chains: updatedChains, - } -} - -// SaveJSON saves the chains config to a file. -func (cfg ChainsConfig) SaveJSON(file string) error { - if err := os.MkdirAll(filepath.Dir(file), 0o777); err != nil { - return fmt.Errorf("failed to create directory: %w", err) - } - - bz, err := json.MarshalIndent(cfg, "", " ") - if err != nil { - return fmt.Errorf("failed to marshal chains config: %w", err) - } - - return os.WriteFile(file, bz, 0o777) -} - -// SaveYAML saves the chains config to a file. -func (cfg ChainsConfig) SaveYAML(file string) error { - bz, err := yaml.Marshal(cfg) - if err != nil { - return fmt.Errorf("failed to marshal chains config: %w", err) - } - - return os.WriteFile(file, bz, 0o777) -} - -// MainLogs is the main runtime log file of the application. -type MainLogs struct { - StartTime uint64 `json:"start_time" yaml:"start_time"` - Chains []LogOutput `json:"chains" yaml:"chains"` - Channels []IBCChannel `json:"ibc_channels" yaml:"ibc_channels"` -} - -// LogOutput is a subsection of the chains information for the parent logs. -type LogOutput struct { - ChainID string `json:"chain_id" yaml:"chain_id"` - ChainName string `json:"chain_name" yaml:"chain_name"` - RPCAddress string `json:"rpc_address" yaml:"rpc_address"` - RESTAddress string `json:"rest_address" yaml:"rest_address"` - GRPCAddress string `json:"grpc_address" yaml:"grpc_address"` - P2PAddress string `json:"p2p_address" yaml:"p2p_address"` - IBCPath []string `json:"ibc_paths" yaml:"ibc_paths"` -} diff --git a/local-interchain/interchain/util/http_writer.go b/local-interchain/interchain/util/http_writer.go deleted file mode 100644 index 1c978a90d..000000000 --- a/local-interchain/interchain/util/http_writer.go +++ /dev/null @@ -1,16 +0,0 @@ -package util - -import ( - "log" - "net/http" -) - -func Write(w http.ResponseWriter, bz []byte) { - if _, err := w.Write(bz); err != nil { - log.Default().Println(err) - } -} - -func WriteError(w http.ResponseWriter, err error) { - Write(w, []byte(`{"error": "`+err.Error()+`"}`)) -} diff --git a/local-interchain/interchain/util/replace.go b/local-interchain/interchain/util/replace.go deleted file mode 100644 index 12f24a85e..000000000 --- a/local-interchain/interchain/util/replace.go +++ /dev/null @@ -1,40 +0,0 @@ -package util - -import ( - "reflect" - "strings" -) - -// Replaces all string values within a complex struct. -func ReplaceStringValues(data interface{}, oldStr, replacement string) { - replaceStringFields(reflect.ValueOf(data), oldStr, replacement) -} - -func replaceStringFields(value reflect.Value, oldStr, replacement string) { - switch value.Kind() { - case reflect.Ptr: - if value.IsNil() { - return - } - replaceStringFields(value.Elem(), oldStr, replacement) - case reflect.Struct: - for i := 0; i < value.NumField(); i++ { - field := value.Field(i) - replaceStringFields(field, oldStr, replacement) - } - case reflect.Slice, reflect.Array: - for i := 0; i < value.Len(); i++ { - replaceStringFields(value.Index(i), oldStr, replacement) - } - case reflect.String: - currentStr := value.String() - if strings.Contains(currentStr, oldStr) { - updatedStr := strings.Replace(currentStr, oldStr, replacement, -1) - value.SetString(updatedStr) - } - case reflect.Map: - for _, key := range value.MapKeys() { - replaceStringFields(value.MapIndex(key), oldStr, replacement) - } - } -} diff --git a/local-interchain/python/README.md b/local-interchain/python/README.md deleted file mode 100644 index 879124c87..000000000 --- a/local-interchain/python/README.md +++ /dev/null @@ -1,16 +0,0 @@ -# Python - -The python local-interchain interaction client / driver. - -## Running - -```bash -cd python - -# or setup your own virtualenv -pip install -r requirements.txt --break-system-packages - -local-ic start juno_ibc - -python3 api_test.py -``` \ No newline at end of file diff --git a/local-interchain/python/api_test.py b/local-interchain/python/api_test.py deleted file mode 100644 index 807ec3841..000000000 --- a/local-interchain/python/api_test.py +++ /dev/null @@ -1,122 +0,0 @@ -# flake8: noqa -""" -This test the rest server to ensures it functions properly. - -local-ic start base -""" - -import time - -from helpers.testing import poll_for_start -from helpers.transactions import RequestBuilder -from util_base import API_URL - -chain_id = "localjuno-1" -sleep_seconds = 3 - - -rb = RequestBuilder(API_URL, chain_id, sleep_seconds, log_output=True) - - -def main(): - poll_for_start(API_URL, waitSeconds=300) - - bin_test() - tx_test() - - -# Test to ensure the base layer works and returns data properly -def bin_test(): - res = rb.binary("keys list --keyring-backend=test --output=json") - assert len(res) > 0 - - res = rb.binary( - "tx decode ClMKUQobL2Nvc21vcy5nb3YudjFiZXRhMS5Nc2dWb3RlEjIIpwISK2p1bm8xZGM3a2MyZzVrZ2wycmdmZHllZGZ6MDl1YTlwZWo1eDNsODc3ZzcYARJmClAKRgofL2Nvc21vcy5jcnlwdG8uc2VjcDI1NmsxLlB1YktleRIjCiECxjGMmYp4MlxxfFWi9x4u+jOleJVde3Cru+HnxAVUJmgSBAoCCH8YNBISCgwKBXVqdW5vEgMyMDQQofwEGkDPE4dCQ4zUh6LIB9wqNXDBx+nMKtg0tEGiIYEH8xlw4H8dDQQStgAe6xFO7I/oYVSWwa2d9qUjs9qyB8r+V0Gy", - ignore_pause=True, - ) - print(res) - assert res == { - "body": { - "messages": [ - { - "@type": "/cosmos.gov.v1beta1.MsgVote", - "proposal_id": "295", - "voter": "juno1dc7kc2g5kgl2rgfdyedfz09ua9pej5x3l877g7", - "option": "VOTE_OPTION_YES", - } - ], - "memo": "", - "timeout_height": "0", - "extension_options": [], - "non_critical_extension_options": [], - }, - "auth_info": { - "signer_infos": [ - { - "public_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AsYxjJmKeDJccXxVovceLvozpXiVXXtwq7vh58QFVCZo", - }, - "mode_info": {"single": {"mode": "SIGN_MODE_LEGACY_AMINO_JSON"}}, - "sequence": "52", - } - ], - "fee": { - "amount": [{"denom": "ujuno", "amount": "204"}], - "gas_limit": "81441", - "payer": "", - "granter": "", - }, - "tip": None, - }, - "signatures": [ - "zxOHQkOM1IeiyAfcKjVwwcfpzCrYNLRBoiGBB/MZcOB/HQ0EErYAHusRTuyP6GFUlsGtnfalI7PasgfK/ldBsg==" - ], - } - - rb.binary("config keyring-backend test") - assert rb.binary("config") == { - "chain-id": "", - "keyring-backend": "test", - "output": "text", - "node": "tcp://localhost:26657", - "broadcast-mode": "sync", - "gas": "", - "gas-prices": "", - "gas-adjustment": "", - "fees": "", - "fee-granter": "", - "fee-payer": "", - "note": "", - } - - assert len(rb.binary("keys list --output=json")) > 0 - - # this query returns a dict with supply as the key, validate it is there - assert "supply" in rb.query("bank total") - - d = rb.query( - "bank balances juno10r39fueph9fq7a6lgswu4zdsg8t3gxlq670lt0 --output=json" - ) - assert len(d["balances"]) == 0 - - -# Test to ensure Transactions and getting that data returns properly -def tx_test(): - res = rb.binary( - "tx bank send acc0 juno10r39fueph9fq7a6lgswu4zdsg8t3gxlq670lt0 500ujuno --fees 5000ujuno --node %RPC% --chain-id=%CHAIN_ID% --yes --output json --keyring-backend=test" - ) - assert res["code"] == 0 - - tx_data = rb.query_tx(res) - print(tx_data) - - bal = rb.query( - "bank balances juno10r39fueph9fq7a6lgswu4zdsg8t3gxlq670lt0 --output=json" - ) - print(bal) - assert len(bal["balances"]) > 0 - - -if __name__ == "__main__": - main() diff --git a/local-interchain/python/daodao.py b/local-interchain/python/daodao.py deleted file mode 100644 index b89d83046..000000000 --- a/local-interchain/python/daodao.py +++ /dev/null @@ -1,100 +0,0 @@ -""" -Steps: -- Download contracts from the repo based off release version -- Ensure ictest is started for a chain -- Upload to JUNO (store) and init -- Connect together or what ever' -- Profit -""" - -import os - -from helpers import CosmWasm -from helpers.testing import poll_for_start -from helpers.transactions import RequestBuilder -from util_base import API_URL - -KEY_NAME = "acc0" -chain_id = "localjuno-1" - - -def main(): - poll_for_start(API_URL, waitSeconds=300) - - rb = RequestBuilder(API_URL, chain_id) - rb.binary("config keyring-backend test") - - absolute_path = os.path.abspath(__file__) - parent_dir = os.path.dirname(os.path.dirname(absolute_path)) - contracts_dir = os.path.join(parent_dir, "contracts") - - CosmWasm.download_mainnet_daodao_contracts() - - # == Create contract object & upload == - dao_proposal_single = CosmWasm(API_URL, chain_id).store_contract( - KEY_NAME, os.path.join(contracts_dir, "dao_proposal_single.wasm") - ) - - dao_voting_native_staked = CosmWasm(API_URL, chain_id).store_contract( - KEY_NAME, os.path.join(contracts_dir, "dao_voting_native_staked.wasm") - ) - - dao_core = CosmWasm(API_URL, chain_id).store_contract( - KEY_NAME, - os.path.join(contracts_dir, "dao_core.wasm"), - ) - - # https://github.com/DA0-DA0/dao-contracts/blob/main/scripts/create-v2-dao-native-voting.sh - module_msg = { - "allow_revoting": False, - "max_voting_period": {"time": 604800}, - "close_proposal_on_execution_failure": True, - "pre_propose_info": {"anyone_may_propose": {}}, - "only_members_execute": True, - "threshold": { - "threshold_quorum": { - "quorum": {"percent": "0.20"}, - "threshold": {"majority": {}}, - } - }, - } - encoded_prop_msg = CosmWasm.base64_encode_msg(module_msg) - - voting_msg = '{"owner":{"core_module":{}},"denom":"ujuno"}' - encoded_voting_msg = CosmWasm.base64_encode_msg(voting_msg) - - cw_core_init_msg = CosmWasm.remove_msg_spaces( - { - "admin": "juno1efd63aw40lxf3n4mhf7dzhjkr453axurv2zdzk", - "automatically_add_cw20s": True, - "automatically_add_cw721s": True, - "description": "V2_DAO", - "name": "V2_DAO", - "proposal_modules_instantiate_info": [ - { - "admin": {"core_module": {}}, - "code_id": dao_proposal_single.code_id, - "label": "v2_dao", - "msg": f"{encoded_prop_msg}", - } - ], - "voting_module_instantiate_info": { - "admin": {"core_module": {}}, - "code_id": dao_voting_native_staked.code_id, - "label": "test_v2_dao-cw-native-voting", - "msg": f"{encoded_voting_msg}", - }, - } - ).decode("utf-8") - - dao_core.instantiate_contract( - account_key=KEY_NAME, - code_id=dao_core.code_id, - msg=cw_core_init_msg, - label="dao_core", - ) - print(f"{dao_core.address=}") - - -if __name__ == "__main__": - main() diff --git a/local-interchain/python/helpers/__init__.py b/local-interchain/python/helpers/__init__.py deleted file mode 100644 index feedd8bc1..000000000 --- a/local-interchain/python/helpers/__init__.py +++ /dev/null @@ -1,4 +0,0 @@ -# flake8: noqa F401 - -from .cosmwasm import CosmWasm -from .transactions import * diff --git a/local-interchain/python/helpers/cosmwasm.py b/local-interchain/python/helpers/cosmwasm.py deleted file mode 100644 index 44fe83d09..000000000 --- a/local-interchain/python/helpers/cosmwasm.py +++ /dev/null @@ -1,294 +0,0 @@ -# flake8: noqa - -import json -import os -from base64 import b64decode, b64encode - -from httpx import get, post - -from helpers.file_cache import Cache -from helpers.transactions import RequestBuilder, get_transaction_response - -fp = os.path.realpath(__file__) -root_dir = os.path.dirname(os.path.dirname(os.path.dirname(fp))) -contracts_storage_dir = os.path.join(root_dir, "contracts") - - -def upload_contract(rb: RequestBuilder, key_name: str, abs_path: str) -> dict: - print(f"[upload_file] ({rb.chain_id}) {abs_path}") - - payload = { - "chain_id": rb.chain_id, - "key_name": key_name, - "file_path": abs_path, - } - - url = rb.api - if url.endswith("/"): - url += "upload" - else: - url += "/upload" - - # Setting "Upload-Type": "cosmwasm" uploads the file and stores it on the chain. - res = post( - url, - json=payload, - headers={"Content-Type": "application/json", "Upload-Type": "cosmwasm"}, - timeout=120, - ) - - if res.status_code != 200: - return {"error": res.text} - - return json.loads(res.text.replace("\n", "")) - - -class CosmWasm: - def __init__(self, api: str, chain_id: str, addr_override: str = ""): - self.api = api # http://127.0.0.1:8080 - self.chain_id = chain_id - - self.code_id: int = -1 - self.address = addr_override - - self.rb = RequestBuilder(self.api, self.chain_id) - - self.default_flag_set = "--home=%HOME% --node=%RPC% --chain-id=%CHAIN_ID% --yes --output=json --keyring-backend=test --gas=auto --gas-adjustment=2.0" - - # the last obtained Tx hash - self.tx_hash = "" - - def get_latest_tx_hash(self) -> str: - return self.tx_hash - - def store_contract(self, key_name: str, abs_path: str) -> "CosmWasm": - ictest_chain_start = Cache.get_chain_start_time_from_logs() - if ictest_chain_start == -1: - ictest_chain_start = 0 - Cache.reset_contracts_cache_json() - - contracts = Cache.get_cache_or_default({}, ictest_chain_start) - sha1 = Cache.get_file_hash(abs_path, self.chain_id) - if sha1 in contracts["file_cache"]: - self.code_id = contracts["file_cache"][sha1] - sub_file_path = abs_path.split("/")[-1] - print(f"[Cache] CodeID={self.code_id} for {sub_file_path}") - return self - - res = upload_contract(self.rb, key_name, abs_path) - if "error" in res: - raise Exception(res["error"]) - - self.code_id = Cache.update_cache(contracts, res["code_id"], sha1) - return self - - def instantiate_contract( - self, - account_key: str, - code_id: int | str, - msg: str | dict, - label: str, - admin: str | None = None, - flags: str = "", - ) -> "CosmWasm": - # not sure if we want this logic or not... - if len(self.address) > 0: - raise Exception("Contract address already set") - - if admin is None and "--no-admin" not in flags: - flags += "--no-admin" - - if isinstance(msg, dict): - msg = json.dumps(msg, separators=(",", ":")) - - cmd = f"""tx wasm instantiate {code_id} {msg} --label={label} --from={account_key} {self.default_flag_set} {flags}""" - res = self.rb.binary(cmd) - - tx_res = get_transaction_response(res) - - # issue, such as signature verification or lack of fees etc - if tx_res.RawLog and len(tx_res.RawLog) > 5: - print(tx_res.RawLog) - - if len(tx_res.TxHash) == 0: - print("Tx execute error", res) - - contract_addr = CosmWasm.get_contract_address(self.rb, tx_res.TxHash) - print(f"[instantiate_contract] {label} {contract_addr}") - - self.tx_hash = tx_res.TxHash - self.address = contract_addr - return self - - def execute_contract( - self, - account_key: str, - msg: str | dict, - flags: str = "", - ) -> "CosmWasm": - if isinstance(msg, dict): - msg = json.dumps(msg, separators=(",", ":")) - - # TODO: self.default_flag_set fails here for some reason... - cmd = f"tx wasm execute {self.address} {msg} --from={account_key} --keyring-backend=test --home=%HOME% --node=%RPC% --chain-id=%CHAIN_ID% --yes --gas=auto --gas-adjustment=2.0" - print("[execute_contract]", cmd) - res = self.rb.binary(cmd) - print(res) - - tx_res = get_transaction_response(res) - - if tx_res.RawLog and len(tx_res.RawLog) > 5: - print(tx_res.RawLog) - - self.tx_hash = tx_res.TxHash - - return self - - def query_contract(self, msg: str | dict) -> dict: - if isinstance(msg, dict): - msg = json.dumps(msg, separators=(",", ":")) - - cmd = f"query wasm contract-state smart {self.address} {msg}" - res = self.rb.query(cmd) - return res - - @staticmethod - def base64_encode_msg(msg: str | dict): - if isinstance(msg, str): - msg = dict(json.loads(msg)) - - return b64encode(CosmWasm.remove_msg_spaces(msg)).decode("utf-8") - - @staticmethod - def remove_msg_spaces(msg: dict): - return json.dumps(msg, separators=(",", ":")).encode("utf-8") - - @staticmethod - def get_contract_address(rb: RequestBuilder, tx_hash: str) -> str: - res_json = rb.query(f"tx {tx_hash} --output=json") - - try: - code = int(res_json["code"]) - except: - code = -1 - - if code != 0: - raw = res_json["raw_log"] - return raw - - contract_addr = "" - for event in res_json["logs"][0]["events"]: - for attr in event["attributes"]: - if attr["key"] == "_contract_address": - contract_addr = attr["value"] - break - - return contract_addr - - @staticmethod - def download_base_contracts(): - files = [ - "https://github.com/CosmWasm/cw-plus/releases/latest/download/cw20_base.wasm", - "https://github.com/CosmWasm/cw-plus/releases/latest/download/cw4_group.wasm", - "https://github.com/CosmWasm/cw-nfts/releases/latest/download/cw721_base.wasm", - ] - - for url in files: - name = url.split("/")[-1] - file_path = os.path.join(contracts_storage_dir, name) - - if os.path.exists(file_path): - continue - - print(f"Downloading {name} to {file_path}") - res = get(url, follow_redirects=True) - with open(file_path, "wb") as f: - f.write(res.content) - - @staticmethod - def download_mainnet_daodao_contracts(): - # From https://github.com/DA0-DA0/dao-contracts/releases - # v2.1.0 # noqa - files = """cw20_base.wasm 2443 - cw20_stake.wasm 2444 - cw20_stake_external_rewards.wasm 2445 - cw20_stake_reward_distributor.wasm 2446 - cw4_group.wasm 2447 - cw721_base.wasm 2448 - cw_admin_factory.wasm 2449 - cw_fund_distributor.wasm 2450 - cw_payroll_factory.wasm 2451 - cw_token_swap.wasm 2452 - cw_vesting.wasm 2453 - dao_core.wasm 2454 - dao_migrator.wasm 2455 - dao_pre_propose_approval_single.wasm 2456 - dao_pre_propose_approver.wasm 2457 - dao_pre_propose_multiple.wasm 2458 - dao_pre_propose_single.wasm 2459 - dao_proposal_condorcet.wasm 2460 - dao_proposal_multiple.wasm 2461 - dao_proposal_single.wasm 2462 - dao_voting_cw20_staked.wasm 2463 - dao_voting_cw4.wasm 2464 - dao_voting_cw721_staked.wasm 2465 - dao_voting_native_staked.wasm 2466""" - - for contract_file in files.split("\n"): - name, code_id = contract_file.strip().split(" ") - - file_path = os.path.join(contracts_storage_dir, name) - if os.path.exists(file_path): - continue - - print(f"Downloading {name}") - response = get( - f"https://api.juno.strange.love/cosmwasm/wasm/v1/code/{code_id}", - headers={ - "accept": "application/json", - }, - timeout=60, - ) - resp = response.json() - - binary = b64decode(resp["data"]) - with open(file_path, "wb") as f: - f.write(binary) - - -if __name__ == "__main__": - CosmWasm.download_base_contracts() - - cw = CosmWasm(api="http://127.0.0.1:8080", chain_id="localjuno-1") - - cw.store_contract("acc0", os.path.join(contracts_storage_dir, "cw721_base.wasm")) - - cw.instantiate_contract( - "acc0", - cw.code_id, - { - "name": "name", - "symbol": "NFT", - # account in base.json genesis (acc0) # noqa - "minter": "juno1hj5fveer5cjtn4wd6wstzugjfdxzl0xps73ftl", - }, - label="contract", - flags="", - ) - print(cw.tx_hash) - print(cw.address) - - cw.execute_contract( - "acc0", - { - "mint": { - "token_id": "1", - "owner": "juno1hj5fveer5cjtn4wd6wstzugjfdxzl0xps73ftl", - "token_uri": "https://reece.sh", - } - }, - flags="--output=json", - ) - - print(cw.query_contract({"contract_info": {}})) - print(cw.query_contract({"all_nft_info": {"token_id": "1"}})) diff --git a/local-interchain/python/helpers/example_req.bash b/local-interchain/python/helpers/example_req.bash deleted file mode 100644 index c523e2a68..000000000 --- a/local-interchain/python/helpers/example_req.bash +++ /dev/null @@ -1,52 +0,0 @@ - -MAKE_REQUEST() { - curl http://127.0.0.1:8080/ --include --header "Content-Type: application/json" -X $1 --data "$2" -} - -MAKE_GET() { - curl http://127.0.0.1:8080/info --include --header "Content-Type: application/json" -X GET --data "$1" -} - -# Example with Auth -# MAKE_REQUEST POST '{"chain_id":"localjuno-1","action":"q","cmd":"bank balances juno10r39fueph9fq7a6lgswu4zdsg8t3gxlq670lt0","auth_key":"mySecretKeyExample"}' - -MAKE_REQUEST POST '{"chain_id":"localjuno-1","action":"q","cmd":"bank total"}' - -## ---- test interacting with multiple nodes (0 and 1) -- -MAKE_REQUEST POST '{"chain_id":"localjuno-1","node_index":0, "action":"bin","cmd":"keys add testKey1 --keyring-backend=test"}' -MAKE_REQUEST POST '{"chain_id":"localjuno-1", "action":"bin","cmd":"keys list --keyring-backend=test"}' # default is 0 - -MAKE_REQUEST POST '{"chain_id":"localjuno-1","node_index":1, "action":"bin","cmd":"keys add testKey1 --keyring-backend=test"}' -MAKE_REQUEST POST '{"chain_id":"localjuno-1","node_index":1, "action":"bin","cmd":"keys list --keyring-backend=test"}' - -MAKE_REQUEST POST '{"chain_id":"localjuno-1","node_index":999, "action":"bin","cmd":"keys list --keyring-backend=test"}' # fails -## ---- - -MAKE_REQUEST POST '{"chain_id":"localjuno-1","action":"get_channels"}' - -MAKE_REQUEST POST '{"chain_id":"localjuno-1","action":"relayer-exec","cmd":"rly q channels localjuno-1"}' - -MAKE_REQUEST POST '{"chain_id":"localjuno-1","action":"relayer-exec","cmd":"rly keys list localjuno-1"}' - -MAKE_REQUEST POST '{"chain_id":"localjuno-1","action":"relayer-exec","cmd":"rly keys add localjuno-1 testkey"}' - - -MAKE_REQUEST POST '{"chain_id":"localjuno-1","action":"relayer-exec","cmd":"rly paths list"}' -MAKE_REQUEST POST '{"chain_id":"localjuno-1","action":"relayer-exec","cmd":"rly transact flush juno-ibc-1 channel-1"}' - -# wasm contract relaying. -MAKE_REQUEST POST '{"chain_id":"localjuno-1","action":"relayer-exec","cmd":"rly transact channel juno-ibc-1 --src-port transfer --dst-port transfer --order unordered --version ics20-1"}' - -MAKE_REQUEST POST '{"chain_id":"localjuno-1","action":"stop"}' -MAKE_REQUEST POST '{"chain_id":"localjuno-1","action":"start","cmd":"juno-ibc-1"}' - -MAKE_REQUEST POST '{"action":"kill-all"}' - - -MAKE_REQUEST POST '{"chain_id":"localjuno-1","action":"q","cmd":"bank balances juno10r39fueph9fq7a6lgswu4zdsg8t3gxlq670lt0"}' -MAKE_REQUEST POST '{"chain_id":"localjuno-1","action":"faucet","cmd":"amount=100;address=juno10r39fueph9fq7a6lgswu4zdsg8t3gxlq670lt0"}' - -# Get requests from info -curl -G -d "chain_id=localjuno-1" -d "request=peer" http://127.0.0.1:8080/info -curl -G -d "chain_id=localjuno-1" -d "request=height" http://127.0.0.1:8080/info -curl -G -d "chain_id=localjuno-1" -d "request=genesis_file_content" http://127.0.0.1:8080/info \ No newline at end of file diff --git a/local-interchain/python/helpers/file_cache.py b/local-interchain/python/helpers/file_cache.py deleted file mode 100644 index ee5be5f50..000000000 --- a/local-interchain/python/helpers/file_cache.py +++ /dev/null @@ -1,87 +0,0 @@ -# flakes8: noqa E501 -import hashlib -import json -import os - -fp = os.path.realpath(__file__) -root_dir = os.path.dirname(os.path.dirname(os.path.dirname(fp))) -contracts_storage_dir = os.path.join(root_dir, "contracts") - -contracts_json_path = os.path.join(root_dir, "configs", "contracts.json") -logs_path = os.path.join(root_dir, "configs", "logs.json") - - -class Cache: - @staticmethod - def reset_contracts_cache_json(): - if not os.path.exists(contracts_json_path): - os.makedirs(os.path.dirname(contracts_json_path), exist_ok=True) - with open(contracts_json_path, "w") as f: - f.write(json.dumps({"start_time": 0, "file_cache": {}})) - - @staticmethod - def get_chain_start_time_from_logs() -> int: - with open(logs_path, "r") as f: - logs = dict(json.load(f)) - - res = logs.get("start_time", -1) - if isinstance(res, str): - res = res.replace("\n", "") - - return int(res) - - @staticmethod - def get_cache_or_default(contracts: dict, ictest_chain_start: int) -> dict: - cache_time: str | int = 0 - if os.path.exists(contracts_json_path): - os.makedirs(os.path.dirname(contracts_json_path), exist_ok=True) - with open(contracts_json_path, "r") as f: - c = dict(json.load(f)) - cache_time = c.get("start_time", 0) - if isinstance(cache_time, str): - cache_time = cache_time.replace("\n", "") - - if cache_time == 0 or cache_time != ictest_chain_start: - # reset cache, and set cache time to current interchain_test time - contracts["start_time"] = ictest_chain_start - contracts["file_cache"] = {} - - # write to file - with open(contracts_json_path, "w") as f: - json.dump(contracts, f, indent=4) - - with open(contracts_json_path, "r") as f: - contracts = json.load(f) - - return contracts - - @staticmethod - def update_cache(contracts: dict, code_id: str | int, sha_hash: str) -> int: - contracts["file_cache"][sha_hash] = int(code_id) - with open(contracts_json_path, "w") as f: - json.dump(contracts, f, indent=4) - return int(code_id) - - @staticmethod - def get_file_hash(rel_file_path: str, chain_id: str) -> str: - buffer = 65536 - sha1 = hashlib.sha1(usedforsecurity=False) - - file_path = os.path.join(contracts_storage_dir, rel_file_path) - - if not os.path.exists(file_path): - raise FileNotFoundError(f"File not found: {file_path}") - - sha1.update(chain_id.replace("-", "").encode("utf-8")) - with open(file_path, "rb") as f: - while True: - bz = f.read(buffer) - if not bz: - break - sha1.update(bz) - - return sha1.hexdigest() - - -# We always run this to start. -Cache.reset_contracts_cache_json() diff --git a/local-interchain/python/helpers/relayer.py b/local-interchain/python/helpers/relayer.py deleted file mode 100644 index d24d825bd..000000000 --- a/local-interchain/python/helpers/relayer.py +++ /dev/null @@ -1,74 +0,0 @@ -import json - -import httpx - - -class Relayer: - def __init__(self, api: str, chain_id: str, log_output: bool = False): - self.api = api - self.chain_id = chain_id - self.log_output = log_output - - def execute(self, cmd: str, return_text: bool = False) -> dict: - if self.api == "": - raise Exception("send_request URL is empty") - - payload = { - "chain_id": self.chain_id, - "action": "relayer-exec", - "cmd": cmd, - } - - if self.log_output: - print("[relayer]", payload["cmd"]) - - res = httpx.post( - self.api, - json=payload, - headers={"Content-Type": "application/json"}, - timeout=120, - ) - - if return_text: - return {"text": res.text} - - try: - # Is there ever a case this does not work? - return json.loads(res.text) - except Exception: - return {"parse_error": res.text} - - def create_wasm_connection( - self, path: str, src: str, dst: str, order: str, version: str - ): - if not src.startswith("wasm."): - src = f"wasm.{src}" - - if not dst.startswith("wasm."): - dst = f"wasm.{dst}" - - self.execute( - f"rly tx channel {path} --src-port {src} --dst-port {dst} --order {order} --version {version}" - ) - - def flush(self, path: str, channel: str, log_output: bool = False) -> dict: - res = self.execute( - f"rly transact flush {path} {channel}", - ) - if log_output: - print(res) - - return res - - def get_channels(self) -> dict: - payload = { - "chain_id": self.chain_id, - "action": "get_channels", - } - - res = httpx.post( - self.api, - json=payload, - headers={"Content-Type": "application/json"}, - ) - return json.loads(res.text) diff --git a/local-interchain/python/helpers/testing.py b/local-interchain/python/helpers/testing.py deleted file mode 100644 index 3cd52987c..000000000 --- a/local-interchain/python/helpers/testing.py +++ /dev/null @@ -1,17 +0,0 @@ -import time - -import httpx - - -def poll_for_start(API_URL: str, waitSeconds=300): - for i in range(waitSeconds + 1): - try: - httpx.get(API_URL) - return - except Exception: - if i % 5 == 0: - print(f"waiting for server to start (iter:{i}) ({API_URL})") - - time.sleep(1) - - raise Exception("Local-IC REST API Server did not start") diff --git a/local-interchain/python/helpers/transactions.py b/local-interchain/python/helpers/transactions.py deleted file mode 100644 index 1be3e0c0f..000000000 --- a/local-interchain/python/helpers/transactions.py +++ /dev/null @@ -1,178 +0,0 @@ -import json -from dataclasses import dataclass -from enum import Enum -from time import sleep - -from httpx import post - - -def get_tx_hash(res: str | dict) -> str: - # String is a JSON blob, but was input as a string - if isinstance(res, str): - try: - res = json.loads(res) - except Exception: - pass - - tx_hash = "" - if isinstance(res, dict): - tx_hash = res["txhash"] - else: - tx_hash = res - - return tx_hash - - -class RequestType(Enum): - BIN = "bin" - QUERY = "query" - EXEC = "exec" - - -@dataclass(frozen=True) -class RequestBase: - URL: str - chain_id: str - request_type: RequestType - - -# TODO: type handler this better with a dataclass -@dataclass -class TransactionResponse: - TxHash: str = "" - RawLog: str | None = "" - - -@dataclass -class ActionHandler: - chain_id: str = "" - action: str = "" - cmd: str = "" - - def __init__(self, chain_id: str, action: str, cmd: str): - self.chain_id = chain_id - self.action = action - self.cmd = cmd - - def to_json(self) -> dict: - return { - "chain_id": self.chain_id, - "action": self.action, - "cmd": self.cmd, - } - - -class RequestBuilder: - # sleep_sec only applies if the request cmd starts with 'tx' - def __init__( - self, api: str, chain_id: str, sleep_sec: int = 6, log_output: bool = False - ): - self.api = api - self.chain_id = chain_id - self.log = log_output - self.sleep_sec = sleep_sec - - if self.api == "": - raise Exception("RequestBuilder api is empty") - - if self.chain_id == "": - raise Exception("RequestBuilder chain_id is empty") - - def binary(self, cmd: str, ignore_pause=False, log_output: bool = False) -> dict: - rb = RequestBase(self.api, self.chain_id, RequestType.BIN) - return send_request( - rb, - self.sleep_sec, - cmd, - ignore_pause, - log_output=(log_output if log_output else self.log), - ) - - def query(self, cmd: str, log_output: bool = False) -> dict: - if cmd.lower().startswith("query "): - cmd = cmd[6:] - elif cmd.lower().startswith("q "): - cmd = cmd[2:] - - rb = RequestBase(self.api, self.chain_id, RequestType.QUERY) - return send_request( - rb, 0, cmd, log_output=(log_output if log_output else self.log) - ) - - # What / when is response? - def query_tx(self, response: str | dict, log_output: bool = False) -> dict: - tx_hash = get_tx_hash(response) - if len(tx_hash) == 0: - return {"error": "tx_hash is empty"} - - res = self.query( - f"tx {tx_hash} --output json", - log_output=(log_output if log_output else self.log), - ) - return {"tx": res} - - -def send_request( - base: RequestBase, - sleep_sec: int, - cmd: str = "", - ignore_pause: bool = False, - return_text: bool = False, - log_output: bool = False, -) -> dict: - if base.request_type == RequestType.QUERY: - if cmd.lower().startswith("query "): - cmd = cmd[6:] - elif cmd.lower().startswith("q "): - cmd = cmd[2:] - - payload = ActionHandler(base.chain_id, base.request_type.value, cmd).to_json() - - if log_output: - print("[send_request data]", payload) - - res = post( - base.URL, - json=payload, - headers={"Content-Type": "application/json"}, - ) - - if cmd.startswith("tx") and not ignore_pause: - sleep(sleep_sec) - - if log_output: - if res.text != "{}": - print("[send_request resp]", res.text) - - # This is messy, clean up - if return_text: - return {"text": res.text} - - try: - # Is there ever a case this does not work? - return json.loads(res.text) - except Exception: - return {"parse_error": res.text} - - -def get_transaction_response(send_req_res: str | dict) -> TransactionResponse: - txr = TransactionResponse() - - if isinstance(send_req_res, str): - try: - json.loads(send_req_res) - except Exception: - txr.RawLog = send_req_res - return txr - - txr.TxHash = json.loads(send_req_res)["txhash"] - - if isinstance(send_req_res, dict): - thash = send_req_res.get("txhash") - txr.TxHash = thash if thash is not None else "" - txr.RawLog = send_req_res.get("raw_log") - - if txr.TxHash is None: - raise Exception("No txHash found", send_req_res) - - return txr diff --git a/local-interchain/python/ibc_contract.py b/local-interchain/python/ibc_contract.py deleted file mode 100644 index 604a39fce..000000000 --- a/local-interchain/python/ibc_contract.py +++ /dev/null @@ -1,134 +0,0 @@ -# flake8: noqa -# -# Shows how to relay between contracts - -""". - -pip install httpx - -Steps: -- Compile https://github.com/0xekez/cw-ibc-example -- Copy to ./contracts/cw_ibc_example.wasm - -- local-ic start ibc_juno - -- Init both contracts -- Create a channel/connection between both (counter-1 version) -- Execute on a contract -- -> sends a packet to the other contract and inc the counter -- Query the counter to ensure it increased. -""" - -import os -from typing import Collection - -from helpers.cosmwasm import CosmWasm -from helpers.relayer import Relayer -from helpers.testing import poll_for_start -from helpers.transactions import RequestBuilder -from util_base import API_URL - -WASM_FILE_NAME = "cw_ibc_example.wasm" - -KEY_NAME = "acc0" -KEY_NAME2 = "second0" - -chain_id = "localjuno-1" -chain_id2 = "localjuno-2" - - -def setup_env(rbs: Collection[RequestBuilder]): - for rb in rbs: - rb.binary("config keyring-backend test") - rb.binary("config output json") - - -def main(): - absolute_path = os.path.abspath(__file__) - parent_dir = os.path.dirname(os.path.dirname(absolute_path)) - contracts_dir = os.path.join(parent_dir, "contracts") - - relayer = Relayer(API_URL, chain_id) - - poll_for_start(API_URL, waitSeconds=300) - - if True: - print("⚙️ Setting env configuration") - setup_env( - [ - RequestBuilder(api=API_URL, chain_id=chain_id, log_output=True), - RequestBuilder(api=API_URL, chain_id=chain_id2, log_output=True), - ] - ) - - print("\n📝 Storing Contracts") - contract_1 = CosmWasm(API_URL, chain_id) - contract_2 = CosmWasm(API_URL, chain_id2) - - contract_1.store_contract(KEY_NAME, os.path.join(contracts_dir, WASM_FILE_NAME)) - contract_2.store_contract( - KEY_NAME2, os.path.join(contracts_dir, WASM_FILE_NAME) - ) - - print("\n🪞 Instantiate Contracts on both chains") - contract_1.instantiate_contract( - account_key=KEY_NAME, - code_id=contract_1.code_id, - msg="{}", - label="contractA", - flags="", - ) - contract_2.instantiate_contract( - account_key=KEY_NAME2, - code_id=contract_1.code_id, - msg="{}", - label="contractB", - flags="", - ) - - print("\n📤 Create Contract Connection") - relayer.create_wasm_connection( - path="juno-ibc-1", - src=contract_1.address, - dst=contract_2.address, - order="unordered", - version="counter-1", - ) - else: - # If we already uploaded the contracts and instantiated them - # we can just skip the above steps. - contract_1 = CosmWasm( - API_URL, - chain_id, - addr_override="juno14hj2tavq8fpesdwxxcu44rty3hh90vhujrvcmstl4zr3txmfvw9skjuwg8", - ) - contract_2 = CosmWasm( - API_URL, - chain_id2, - addr_override="juno14hj2tavq8fpesdwxxcu44rty3hh90vhujrvcmstl4zr3txmfvw9skjuwg8", - ) - - print("\n📖 Checking Channels") - print(relayer.get_channels()) - - # 'Increment {}' execute on chain b, check chainA after. - print("\n⚔️ Execute increment") - contract_2.execute_contract( - account_key=KEY_NAME2, msg={"increment": {"channel": "channel-1"}} - ) - - print("\n📨 Flush Packets...") - relayer.flush("juno-ibc-1", "channel-1", log_output=True) - - # Ensure the Tx count increased += 1 - if True: - print("\n❓ Query Count") - contract1_res = contract_1.query_contract( - {"get_count": {"channel": "channel-1"}} - ) - print(f"{contract1_res=}") - assert contract1_res["data"]["count"] == 1 - - -if __name__ == "__main__": - main() diff --git a/local-interchain/python/requirements.txt b/local-interchain/python/requirements.txt deleted file mode 100644 index 79228389f..000000000 --- a/local-interchain/python/requirements.txt +++ /dev/null @@ -1 +0,0 @@ -httpx \ No newline at end of file diff --git a/local-interchain/python/util_base.py b/local-interchain/python/util_base.py deleted file mode 100644 index 0567f1d44..000000000 --- a/local-interchain/python/util_base.py +++ /dev/null @@ -1,40 +0,0 @@ -import argparse -import json -import os - -current_dir = os.path.dirname(os.path.realpath(__file__)) -parent_dir = os.path.dirname(current_dir) - -contracts_path = os.path.join(parent_dir, "contracts") - -contracts_json_path = os.path.join(parent_dir, "configs", "contracts.json") - - -# create contracts folder if not already -if not os.path.exists(contracts_path): - os.makedirs(contracts_path, exist_ok=True) - -HOST = "127.0.0.1" -PORT = 8080 - -# == Setup global parsers == -parser = argparse.ArgumentParser( - prog="api_test.py", - description="Test the rest server to ensure it functions properly.", -) - -parser.add_argument( - "--api-address", - type=str, - default=HOST, - help="The host/address to use for the rest server.", -) -parser.add_argument( - "--api-port", - type=int, - default=PORT, - help="The port to use for the rest server.", -) -args = parser.parse_args() - -API_URL = f"http://{args.api_address}:{args.api_port}" diff --git a/local-interchain/rust/.gitignore b/local-interchain/rust/.gitignore deleted file mode 100644 index 1de565933..000000000 --- a/local-interchain/rust/.gitignore +++ /dev/null @@ -1 +0,0 @@ -target \ No newline at end of file diff --git a/local-interchain/rust/Cargo.lock b/local-interchain/rust/Cargo.lock deleted file mode 100644 index ab653ffea..000000000 --- a/local-interchain/rust/Cargo.lock +++ /dev/null @@ -1,1756 +0,0 @@ -# This file is automatically @generated by Cargo. -# It is not intended for manual editing. -version = 3 - -[[package]] -name = "addr2line" -version = "0.22.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e4503c46a5c0c7844e948c9a4d6acd9f50cccb4de1c48eb9e291ea17470c678" -dependencies = [ - "gimli", -] - -[[package]] -name = "adler" -version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" - -[[package]] -name = "ahash" -version = "0.7.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "891477e0c6a8957309ee5c45a6368af3ae14bb510732d2684ffa19af310920f9" -dependencies = [ - "getrandom", - "once_cell", - "version_check", -] - -[[package]] -name = "autocfg" -version = "1.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" - -[[package]] -name = "backtrace" -version = "0.3.73" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5cc23269a4f8976d0a4d2e7109211a419fe30e8d88d677cd60b6bc79c5732e0a" -dependencies = [ - "addr2line", - "cc", - "cfg-if", - "libc", - "miniz_oxide", - "object", - "rustc-demangle", -] - -[[package]] -name = "base16ct" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c7f02d4ea65f2c1853089ffd8d2787bdbc63de2f0d29dedbcf8ccdfa0ccd4cf" - -[[package]] -name = "base64" -version = "0.21.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567" - -[[package]] -name = "base64ct" -version = "1.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c3c1a368f70d6cf7302d78f8f7093da241fb8e8807c05cc9e51a125895a6d5b" - -[[package]] -name = "bech32" -version = "0.9.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d86b93f97252c47b41663388e6d155714a9d0c398b99f1005cbc5f978b29f445" - -[[package]] -name = "bitflags" -version = "1.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" - -[[package]] -name = "bitflags" -version = "2.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de" - -[[package]] -name = "block-buffer" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4152116fd6e9dadb291ae18fc1ec3575ed6d84c29642d97890f4b4a3417297e4" -dependencies = [ - "generic-array", -] - -[[package]] -name = "block-buffer" -version = "0.10.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" -dependencies = [ - "generic-array", -] - -[[package]] -name = "bnum" -version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56953345e39537a3e18bdaeba4cb0c58a78c1f61f361dc0fa7c5c7340ae87c5f" - -[[package]] -name = "bumpalo" -version = "3.16.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c" - -[[package]] -name = "byteorder" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" - -[[package]] -name = "bytes" -version = "1.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8318a53db07bb3f8dca91a600466bdb3f2eaadeedfdbcf02e1accbad9271ba50" - -[[package]] -name = "cc" -version = "1.1.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "504bdec147f2cc13c8b57ed9401fd8a147cc66b67ad5cb241394244f2c947549" - -[[package]] -name = "cfg-if" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" - -[[package]] -name = "const-oid" -version = "0.9.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8" - -[[package]] -name = "core-foundation" -version = "0.9.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f" -dependencies = [ - "core-foundation-sys", - "libc", -] - -[[package]] -name = "core-foundation-sys" -version = "0.8.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06ea2b9bc92be3c2baa9334a323ebca2d6f074ff852cd1d7b11064035cd3868f" - -[[package]] -name = "cosmwasm-crypto" -version = "1.5.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd50718a2b6830ce9eb5d465de5a018a12e71729d66b70807ce97e6dd14f931d" -dependencies = [ - "digest 0.10.7", - "ecdsa", - "ed25519-zebra", - "k256", - "rand_core 0.6.4", - "thiserror", -] - -[[package]] -name = "cosmwasm-derive" -version = "1.5.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "242e98e7a231c122e08f300d9db3262d1007b51758a8732cd6210b3e9faa4f3a" -dependencies = [ - "syn 1.0.109", -] - -[[package]] -name = "cosmwasm-std" -version = "1.5.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78c1556156fdf892a55cced6115968b961eaaadd6f724a2c2cb7d1e168e32dd3" -dependencies = [ - "base64", - "bech32", - "bnum", - "cosmwasm-crypto", - "cosmwasm-derive", - "derivative", - "forward_ref", - "hex", - "schemars", - "serde", - "serde-json-wasm", - "sha2 0.10.8", - "static_assertions", - "thiserror", -] - -[[package]] -name = "cpufeatures" -version = "0.2.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53fe5e26ff1b7aef8bca9c6080520cfb8d9333c7568e1829cef191a9723e5504" -dependencies = [ - "libc", -] - -[[package]] -name = "crypto-bigint" -version = "0.5.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0dc92fb57ca44df6db8059111ab3af99a63d5d0f8375d9972e319a379c6bab76" -dependencies = [ - "generic-array", - "rand_core 0.6.4", - "subtle", - "zeroize", -] - -[[package]] -name = "crypto-common" -version = "0.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" -dependencies = [ - "generic-array", - "typenum", -] - -[[package]] -name = "curve25519-dalek" -version = "3.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b9fdf9972b2bd6af2d913799d9ebc165ea4d2e65878e329d9c6b372c4491b61" -dependencies = [ - "byteorder", - "digest 0.9.0", - "rand_core 0.5.1", - "subtle", - "zeroize", -] - -[[package]] -name = "der" -version = "0.7.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f55bf8e7b65898637379c1b74eb1551107c8294ed26d855ceb9fd1a09cfc9bc0" -dependencies = [ - "const-oid", - "zeroize", -] - -[[package]] -name = "derivative" -version = "2.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fcc3dd5e9e9c0b295d6e1e4d811fb6f157d5ffd784b8d202fc62eac8035a770b" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "digest" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3dd60d1080a57a05ab032377049e0591415d2b31afd7028356dbf3cc6dcb066" -dependencies = [ - "generic-array", -] - -[[package]] -name = "digest" -version = "0.10.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" -dependencies = [ - "block-buffer 0.10.4", - "const-oid", - "crypto-common", - "subtle", -] - -[[package]] -name = "dyn-clone" -version = "1.0.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d6ef0072f8a535281e4876be788938b528e9a1d43900b82c2569af7da799125" - -[[package]] -name = "ecdsa" -version = "0.16.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee27f32b5c5292967d2d4a9d7f1e0b0aed2c15daded5a60300e4abb9d8020bca" -dependencies = [ - "der", - "digest 0.10.7", - "elliptic-curve", - "rfc6979", - "signature", - "spki", -] - -[[package]] -name = "ed25519-zebra" -version = "3.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c24f403d068ad0b359e577a77f92392118be3f3c927538f2bb544a5ecd828c6" -dependencies = [ - "curve25519-dalek", - "hashbrown 0.12.3", - "hex", - "rand_core 0.6.4", - "serde", - "sha2 0.9.9", - "zeroize", -] - -[[package]] -name = "elliptic-curve" -version = "0.13.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5e6043086bf7973472e0c7dff2142ea0b680d30e18d9cc40f267efbf222bd47" -dependencies = [ - "base16ct", - "crypto-bigint", - "digest 0.10.7", - "ff", - "generic-array", - "group", - "pkcs8", - "rand_core 0.6.4", - "sec1", - "subtle", - "zeroize", -] - -[[package]] -name = "encoding_rs" -version = "0.8.34" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b45de904aa0b010bce2ab45264d0631681847fa7b6f2eaa7dab7619943bc4f59" -dependencies = [ - "cfg-if", -] - -[[package]] -name = "equivalent" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" - -[[package]] -name = "errno" -version = "0.3.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "534c5cf6194dfab3db3242765c03bbe257cf92f22b38f6bc0c58d59108a820ba" -dependencies = [ - "libc", - "windows-sys 0.52.0", -] - -[[package]] -name = "fastrand" -version = "2.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9fc0510504f03c51ada170672ac806f1f105a88aa97a5281117e1ddc3368e51a" - -[[package]] -name = "ff" -version = "0.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ded41244b729663b1e574f1b4fb731469f69f79c17667b5d776b16cda0479449" -dependencies = [ - "rand_core 0.6.4", - "subtle", -] - -[[package]] -name = "fnv" -version = "1.0.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" - -[[package]] -name = "foreign-types" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" -dependencies = [ - "foreign-types-shared", -] - -[[package]] -name = "foreign-types-shared" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" - -[[package]] -name = "form_urlencoded" -version = "1.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456" -dependencies = [ - "percent-encoding", -] - -[[package]] -name = "forward_ref" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8cbd1169bd7b4a0a20d92b9af7a7e0422888bd38a6f5ec29c1fd8c1558a272e" - -[[package]] -name = "futures-channel" -version = "0.3.30" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eac8f7d7865dcb88bd4373ab671c8cf4508703796caa2b1985a9ca867b3fcb78" -dependencies = [ - "futures-core", -] - -[[package]] -name = "futures-core" -version = "0.3.30" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dfc6580bb841c5a68e9ef15c77ccc837b40a7504914d52e47b8b0e9bbda25a1d" - -[[package]] -name = "futures-io" -version = "0.3.30" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a44623e20b9681a318efdd71c299b6b222ed6f231972bfe2f224ebad6311f0c1" - -[[package]] -name = "futures-sink" -version = "0.3.30" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9fb8e00e87438d937621c1c6269e53f536c14d3fbd6a042bb24879e57d474fb5" - -[[package]] -name = "futures-task" -version = "0.3.30" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38d84fa142264698cdce1a9f9172cf383a0c82de1bddcf3092901442c4097004" - -[[package]] -name = "futures-util" -version = "0.3.30" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d6401deb83407ab3da39eba7e33987a73c3df0c82b4bb5813ee871c19c41d48" -dependencies = [ - "futures-core", - "futures-io", - "futures-task", - "memchr", - "pin-project-lite", - "pin-utils", - "slab", -] - -[[package]] -name = "generic-array" -version = "0.14.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" -dependencies = [ - "typenum", - "version_check", - "zeroize", -] - -[[package]] -name = "getrandom" -version = "0.2.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7" -dependencies = [ - "cfg-if", - "libc", - "wasi", -] - -[[package]] -name = "gimli" -version = "0.29.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "40ecd4077b5ae9fd2e9e169b102c6c330d0605168eb0e8bf79952b256dbefffd" - -[[package]] -name = "group" -version = "0.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0f9ef7462f7c099f518d754361858f86d8a07af53ba9af0fe635bbccb151a63" -dependencies = [ - "ff", - "rand_core 0.6.4", - "subtle", -] - -[[package]] -name = "h2" -version = "0.3.26" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81fe527a889e1532da5c525686d96d4c2e74cdd345badf8dfef9f6b39dd5f5e8" -dependencies = [ - "bytes", - "fnv", - "futures-core", - "futures-sink", - "futures-util", - "http", - "indexmap", - "slab", - "tokio", - "tokio-util", - "tracing", -] - -[[package]] -name = "hashbrown" -version = "0.12.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" -dependencies = [ - "ahash", -] - -[[package]] -name = "hashbrown" -version = "0.14.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" - -[[package]] -name = "hermit-abi" -version = "0.3.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024" - -[[package]] -name = "hex" -version = "0.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" - -[[package]] -name = "hmac" -version = "0.12.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" -dependencies = [ - "digest 0.10.7", -] - -[[package]] -name = "http" -version = "0.2.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "601cbb57e577e2f5ef5be8e7b83f0f63994f25aa94d673e54a92d5c516d101f1" -dependencies = [ - "bytes", - "fnv", - "itoa", -] - -[[package]] -name = "http-body" -version = "0.4.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ceab25649e9960c0311ea418d17bee82c0dcec1bd053b5f9a66e265a693bed2" -dependencies = [ - "bytes", - "http", - "pin-project-lite", -] - -[[package]] -name = "httparse" -version = "1.9.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fcc0b4a115bf80b728eb8ea024ad5bd707b615bfed49e0665b6e0f86fd082d9" - -[[package]] -name = "httpdate" -version = "1.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" - -[[package]] -name = "hyper" -version = "0.14.30" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a152ddd61dfaec7273fe8419ab357f33aee0d914c5f4efbf0d96fa749eea5ec9" -dependencies = [ - "bytes", - "futures-channel", - "futures-core", - "futures-util", - "h2", - "http", - "http-body", - "httparse", - "httpdate", - "itoa", - "pin-project-lite", - "socket2", - "tokio", - "tower-service", - "tracing", - "want", -] - -[[package]] -name = "hyper-tls" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d6183ddfa99b85da61a140bea0efc93fdf56ceaa041b37d553518030827f9905" -dependencies = [ - "bytes", - "hyper", - "native-tls", - "tokio", - "tokio-native-tls", -] - -[[package]] -name = "idna" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "634d9b1461af396cad843f47fdba5597a4f9e6ddd4bfb6ff5d85028c25cb12f6" -dependencies = [ - "unicode-bidi", - "unicode-normalization", -] - -[[package]] -name = "indexmap" -version = "2.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "de3fc2e30ba82dd1b3911c8de1ffc143c74a914a14e99514d7637e3099df5ea0" -dependencies = [ - "equivalent", - "hashbrown 0.14.5", -] - -[[package]] -name = "ipnet" -version = "2.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f518f335dce6725a761382244631d86cf0ccb2863413590b31338feb467f9c3" - -[[package]] -name = "itoa" -version = "1.0.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b" - -[[package]] -name = "js-sys" -version = "0.3.69" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "29c15563dc2726973df627357ce0c9ddddbea194836909d655df6a75d2cf296d" -dependencies = [ - "wasm-bindgen", -] - -[[package]] -name = "k256" -version = "0.13.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cadb76004ed8e97623117f3df85b17aaa6626ab0b0831e6573f104df16cd1bcc" -dependencies = [ - "cfg-if", - "ecdsa", - "elliptic-curve", - "once_cell", - "sha2 0.10.8", - "signature", -] - -[[package]] -name = "libc" -version = "0.2.155" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97b3888a4aecf77e811145cadf6eef5901f4782c53886191b2f693f24761847c" - -[[package]] -name = "linux-raw-sys" -version = "0.4.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89" - -[[package]] -name = "localic-bin" -version = "0.0.1" -dependencies = [ - "cosmwasm-std", - "localic-std", - "reqwest", - "serde_json", - "thiserror", - "tokio", -] - -[[package]] -name = "localic-std" -version = "0.0.1" -dependencies = [ - "cosmwasm-std", - "reqwest", - "serde_json", - "thiserror", - "tokio", -] - -[[package]] -name = "lock_api" -version = "0.4.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07af8b9cdd281b7915f413fa73f29ebd5d55d0d3f0155584dade1ff18cea1b17" -dependencies = [ - "autocfg", - "scopeguard", -] - -[[package]] -name = "log" -version = "0.4.22" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24" - -[[package]] -name = "memchr" -version = "2.7.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" - -[[package]] -name = "mime" -version = "0.3.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" - -[[package]] -name = "miniz_oxide" -version = "0.7.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8a240ddb74feaf34a79a7add65a741f3167852fba007066dcac1ca548d89c08" -dependencies = [ - "adler", -] - -[[package]] -name = "mio" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4569e456d394deccd22ce1c1913e6ea0e54519f577285001215d33557431afe4" -dependencies = [ - "hermit-abi", - "libc", - "wasi", - "windows-sys 0.52.0", -] - -[[package]] -name = "native-tls" -version = "0.2.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8614eb2c83d59d1c8cc974dd3f920198647674a0a035e1af1fa58707e317466" -dependencies = [ - "libc", - "log", - "openssl", - "openssl-probe", - "openssl-sys", - "schannel", - "security-framework", - "security-framework-sys", - "tempfile", -] - -[[package]] -name = "object" -version = "0.36.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "27b64972346851a39438c60b341ebc01bba47464ae329e55cf343eb93964efd9" -dependencies = [ - "memchr", -] - -[[package]] -name = "once_cell" -version = "1.19.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" - -[[package]] -name = "opaque-debug" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c08d65885ee38876c4f86fa503fb49d7b507c2b62552df7c70b2fce627e06381" - -[[package]] -name = "openssl" -version = "0.10.66" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9529f4786b70a3e8c61e11179af17ab6188ad8d0ded78c5529441ed39d4bd9c1" -dependencies = [ - "bitflags 2.6.0", - "cfg-if", - "foreign-types", - "libc", - "once_cell", - "openssl-macros", - "openssl-sys", -] - -[[package]] -name = "openssl-macros" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.72", -] - -[[package]] -name = "openssl-probe" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" - -[[package]] -name = "openssl-sys" -version = "0.9.103" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f9e8deee91df40a943c71b917e5874b951d32a802526c85721ce3b776c929d6" -dependencies = [ - "cc", - "libc", - "pkg-config", - "vcpkg", -] - -[[package]] -name = "parking_lot" -version = "0.12.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1bf18183cf54e8d6059647fc3063646a1801cf30896933ec2311622cc4b9a27" -dependencies = [ - "lock_api", - "parking_lot_core", -] - -[[package]] -name = "parking_lot_core" -version = "0.9.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8" -dependencies = [ - "cfg-if", - "libc", - "redox_syscall", - "smallvec", - "windows-targets 0.52.6", -] - -[[package]] -name = "percent-encoding" -version = "2.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" - -[[package]] -name = "pin-project-lite" -version = "0.2.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bda66fc9667c18cb2758a2ac84d1167245054bcf85d5d1aaa6923f45801bdd02" - -[[package]] -name = "pin-utils" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" - -[[package]] -name = "pkcs8" -version = "0.10.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f950b2377845cebe5cf8b5165cb3cc1a5e0fa5cfa3e1f7f55707d8fd82e0a7b7" -dependencies = [ - "der", - "spki", -] - -[[package]] -name = "pkg-config" -version = "0.3.30" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d231b230927b5e4ad203db57bbcbee2802f6bce620b1e4a9024a07d94e2907ec" - -[[package]] -name = "proc-macro2" -version = "1.0.86" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e719e8df665df0d1c8fbfd238015744736151d4445ec0836b8e628aae103b77" -dependencies = [ - "unicode-ident", -] - -[[package]] -name = "quote" -version = "1.0.36" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fa76aaf39101c457836aec0ce2316dbdc3ab723cdda1c6bd4e6ad4208acaca7" -dependencies = [ - "proc-macro2", -] - -[[package]] -name = "rand_core" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19" - -[[package]] -name = "rand_core" -version = "0.6.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" -dependencies = [ - "getrandom", -] - -[[package]] -name = "redox_syscall" -version = "0.5.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a908a6e00f1fdd0dfd9c0eb08ce85126f6d8bbda50017e74bc4a4b7d4a926a4" -dependencies = [ - "bitflags 2.6.0", -] - -[[package]] -name = "reqwest" -version = "0.11.27" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd67538700a17451e7cba03ac727fb961abb7607553461627b97de0b89cf4a62" -dependencies = [ - "base64", - "bytes", - "encoding_rs", - "futures-core", - "futures-util", - "h2", - "http", - "http-body", - "hyper", - "hyper-tls", - "ipnet", - "js-sys", - "log", - "mime", - "native-tls", - "once_cell", - "percent-encoding", - "pin-project-lite", - "rustls-pemfile", - "serde", - "serde_json", - "serde_urlencoded", - "sync_wrapper", - "system-configuration", - "tokio", - "tokio-native-tls", - "tower-service", - "url", - "wasm-bindgen", - "wasm-bindgen-futures", - "web-sys", - "winreg", -] - -[[package]] -name = "rfc6979" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8dd2a808d456c4a54e300a23e9f5a67e122c3024119acbfd73e3bf664491cb2" -dependencies = [ - "hmac", - "subtle", -] - -[[package]] -name = "rustc-demangle" -version = "0.1.24" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f" - -[[package]] -name = "rustix" -version = "0.38.34" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70dc5ec042f7a43c4a73241207cecc9873a06d45debb38b329f8541d85c2730f" -dependencies = [ - "bitflags 2.6.0", - "errno", - "libc", - "linux-raw-sys", - "windows-sys 0.52.0", -] - -[[package]] -name = "rustls-pemfile" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c74cae0a4cf6ccbbf5f359f08efdf8ee7e1dc532573bf0db71968cb56b1448c" -dependencies = [ - "base64", -] - -[[package]] -name = "ryu" -version = "1.0.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f" - -[[package]] -name = "schannel" -version = "0.1.23" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fbc91545643bcf3a0bbb6569265615222618bdf33ce4ffbbd13c4bbd4c093534" -dependencies = [ - "windows-sys 0.52.0", -] - -[[package]] -name = "schemars" -version = "0.8.21" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09c024468a378b7e36765cd36702b7a90cc3cba11654f6685c8f233408e89e92" -dependencies = [ - "dyn-clone", - "schemars_derive", - "serde", - "serde_json", -] - -[[package]] -name = "schemars_derive" -version = "0.8.21" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1eee588578aff73f856ab961cd2f79e36bc45d7ded33a7562adba4667aecc0e" -dependencies = [ - "proc-macro2", - "quote", - "serde_derive_internals", - "syn 2.0.72", -] - -[[package]] -name = "scopeguard" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" - -[[package]] -name = "sec1" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3e97a565f76233a6003f9f5c54be1d9c5bdfa3eccfb189469f11ec4901c47dc" -dependencies = [ - "base16ct", - "der", - "generic-array", - "pkcs8", - "subtle", - "zeroize", -] - -[[package]] -name = "security-framework" -version = "2.11.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02" -dependencies = [ - "bitflags 2.6.0", - "core-foundation", - "core-foundation-sys", - "libc", - "security-framework-sys", -] - -[[package]] -name = "security-framework-sys" -version = "2.11.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75da29fe9b9b08fe9d6b22b5b4bcbc75d8db3aa31e639aa56bb62e9d46bfceaf" -dependencies = [ - "core-foundation-sys", - "libc", -] - -[[package]] -name = "serde" -version = "1.0.204" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc76f558e0cbb2a839d37354c575f1dc3fdc6546b5be373ba43d95f231bf7c12" -dependencies = [ - "serde_derive", -] - -[[package]] -name = "serde-json-wasm" -version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e9213a07d53faa0b8dd81e767a54a8188a242fdb9be99ab75ec576a774bfdd7" -dependencies = [ - "serde", -] - -[[package]] -name = "serde_derive" -version = "1.0.204" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0cd7e117be63d3c3678776753929474f3b04a43a080c744d6b0ae2a8c28e222" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.72", -] - -[[package]] -name = "serde_derive_internals" -version = "0.29.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "18d26a20a969b9e3fdf2fc2d9f21eda6c40e2de84c9408bb5d3b05d499aae711" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.72", -] - -[[package]] -name = "serde_json" -version = "1.0.122" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "784b6203951c57ff748476b126ccb5e8e2959a5c19e5c617ab1956be3dbc68da" -dependencies = [ - "itoa", - "memchr", - "ryu", - "serde", -] - -[[package]] -name = "serde_urlencoded" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" -dependencies = [ - "form_urlencoded", - "itoa", - "ryu", - "serde", -] - -[[package]] -name = "sha2" -version = "0.9.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d58a1e1bf39749807d89cf2d98ac2dfa0ff1cb3faa38fbb64dd88ac8013d800" -dependencies = [ - "block-buffer 0.9.0", - "cfg-if", - "cpufeatures", - "digest 0.9.0", - "opaque-debug", -] - -[[package]] -name = "sha2" -version = "0.10.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8" -dependencies = [ - "cfg-if", - "cpufeatures", - "digest 0.10.7", -] - -[[package]] -name = "signal-hook-registry" -version = "1.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a9e9e0b4211b72e7b8b6e85c807d36c212bdb33ea8587f7569562a84df5465b1" -dependencies = [ - "libc", -] - -[[package]] -name = "signature" -version = "2.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77549399552de45a898a580c1b41d445bf730df867cc44e6c0233bbc4b8329de" -dependencies = [ - "digest 0.10.7", - "rand_core 0.6.4", -] - -[[package]] -name = "slab" -version = "0.4.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67" -dependencies = [ - "autocfg", -] - -[[package]] -name = "smallvec" -version = "1.13.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" - -[[package]] -name = "socket2" -version = "0.5.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce305eb0b4296696835b71df73eb912e0f1ffd2556a501fcede6e0c50349191c" -dependencies = [ - "libc", - "windows-sys 0.52.0", -] - -[[package]] -name = "spki" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d91ed6c858b01f942cd56b37a94b3e0a1798290327d1236e4d9cf4eaca44d29d" -dependencies = [ - "base64ct", - "der", -] - -[[package]] -name = "static_assertions" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" - -[[package]] -name = "subtle" -version = "2.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" - -[[package]] -name = "syn" -version = "1.0.109" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" -dependencies = [ - "proc-macro2", - "quote", - "unicode-ident", -] - -[[package]] -name = "syn" -version = "2.0.72" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc4b9b9bf2add8093d3f2c0204471e951b2285580335de42f9d2534f3ae7a8af" -dependencies = [ - "proc-macro2", - "quote", - "unicode-ident", -] - -[[package]] -name = "sync_wrapper" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160" - -[[package]] -name = "system-configuration" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba3a3adc5c275d719af8cb4272ea1c4a6d668a777f37e115f6d11ddbc1c8e0e7" -dependencies = [ - "bitflags 1.3.2", - "core-foundation", - "system-configuration-sys", -] - -[[package]] -name = "system-configuration-sys" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a75fb188eb626b924683e3b95e3a48e63551fcfb51949de2f06a9d91dbee93c9" -dependencies = [ - "core-foundation-sys", - "libc", -] - -[[package]] -name = "tempfile" -version = "3.12.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04cbcdd0c794ebb0d4cf35e88edd2f7d2c4c3e9a5a6dab322839b321c6a87a64" -dependencies = [ - "cfg-if", - "fastrand", - "once_cell", - "rustix", - "windows-sys 0.59.0", -] - -[[package]] -name = "thiserror" -version = "1.0.63" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0342370b38b6a11b6cc11d6a805569958d54cfa061a29969c3b5ce2ea405724" -dependencies = [ - "thiserror-impl", -] - -[[package]] -name = "thiserror-impl" -version = "1.0.63" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4558b58466b9ad7ca0f102865eccc95938dca1a74a856f2b57b6629050da261" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.72", -] - -[[package]] -name = "tinyvec" -version = "1.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "445e881f4f6d382d5f27c034e25eb92edd7c784ceab92a0937db7f2e9471b938" -dependencies = [ - "tinyvec_macros", -] - -[[package]] -name = "tinyvec_macros" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" - -[[package]] -name = "tokio" -version = "1.39.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "daa4fb1bc778bd6f04cbfc4bb2d06a7396a8f299dc33ea1900cedaa316f467b1" -dependencies = [ - "backtrace", - "bytes", - "libc", - "mio", - "parking_lot", - "pin-project-lite", - "signal-hook-registry", - "socket2", - "tokio-macros", - "windows-sys 0.52.0", -] - -[[package]] -name = "tokio-macros" -version = "2.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "693d596312e88961bc67d7f1f97af8a70227d9f90c31bba5806eec004978d752" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.72", -] - -[[package]] -name = "tokio-native-tls" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbae76ab933c85776efabc971569dd6119c580d8f5d448769dec1764bf796ef2" -dependencies = [ - "native-tls", - "tokio", -] - -[[package]] -name = "tokio-util" -version = "0.7.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9cf6b47b3771c49ac75ad09a6162f53ad4b8088b76ac60e8ec1455b31a189fe1" -dependencies = [ - "bytes", - "futures-core", - "futures-sink", - "pin-project-lite", - "tokio", -] - -[[package]] -name = "tower-service" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6bc1c9ce2b5135ac7f93c72918fc37feb872bdc6a5533a8b85eb4b86bfdae52" - -[[package]] -name = "tracing" -version = "0.1.40" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef" -dependencies = [ - "pin-project-lite", - "tracing-core", -] - -[[package]] -name = "tracing-core" -version = "0.1.32" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54" -dependencies = [ - "once_cell", -] - -[[package]] -name = "try-lock" -version = "0.2.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" - -[[package]] -name = "typenum" -version = "1.17.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" - -[[package]] -name = "unicode-bidi" -version = "0.3.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08f95100a766bf4f8f28f90d77e0a5461bbdb219042e7679bebe79004fed8d75" - -[[package]] -name = "unicode-ident" -version = "1.0.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" - -[[package]] -name = "unicode-normalization" -version = "0.1.23" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a56d1686db2308d901306f92a263857ef59ea39678a5458e7cb17f01415101f5" -dependencies = [ - "tinyvec", -] - -[[package]] -name = "url" -version = "2.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22784dbdf76fdde8af1aeda5622b546b422b6fc585325248a2bf9f5e41e94d6c" -dependencies = [ - "form_urlencoded", - "idna", - "percent-encoding", -] - -[[package]] -name = "vcpkg" -version = "0.2.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" - -[[package]] -name = "version_check" -version = "0.9.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" - -[[package]] -name = "want" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e" -dependencies = [ - "try-lock", -] - -[[package]] -name = "wasi" -version = "0.11.0+wasi-snapshot-preview1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" - -[[package]] -name = "wasm-bindgen" -version = "0.2.92" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4be2531df63900aeb2bca0daaaddec08491ee64ceecbee5076636a3b026795a8" -dependencies = [ - "cfg-if", - "wasm-bindgen-macro", -] - -[[package]] -name = "wasm-bindgen-backend" -version = "0.2.92" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "614d787b966d3989fa7bb98a654e369c762374fd3213d212cfc0251257e747da" -dependencies = [ - "bumpalo", - "log", - "once_cell", - "proc-macro2", - "quote", - "syn 2.0.72", - "wasm-bindgen-shared", -] - -[[package]] -name = "wasm-bindgen-futures" -version = "0.4.42" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76bc14366121efc8dbb487ab05bcc9d346b3b5ec0eaa76e46594cabbe51762c0" -dependencies = [ - "cfg-if", - "js-sys", - "wasm-bindgen", - "web-sys", -] - -[[package]] -name = "wasm-bindgen-macro" -version = "0.2.92" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1f8823de937b71b9460c0c34e25f3da88250760bec0ebac694b49997550d726" -dependencies = [ - "quote", - "wasm-bindgen-macro-support", -] - -[[package]] -name = "wasm-bindgen-macro-support" -version = "0.2.92" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.72", - "wasm-bindgen-backend", - "wasm-bindgen-shared", -] - -[[package]] -name = "wasm-bindgen-shared" -version = "0.2.92" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af190c94f2773fdb3729c55b007a722abb5384da03bc0986df4c289bf5567e96" - -[[package]] -name = "web-sys" -version = "0.3.69" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77afa9a11836342370f4817622a2f0f418b134426d91a82dfb48f532d2ec13ef" -dependencies = [ - "js-sys", - "wasm-bindgen", -] - -[[package]] -name = "windows-sys" -version = "0.48.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" -dependencies = [ - "windows-targets 0.48.5", -] - -[[package]] -name = "windows-sys" -version = "0.52.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" -dependencies = [ - "windows-targets 0.52.6", -] - -[[package]] -name = "windows-sys" -version = "0.59.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" -dependencies = [ - "windows-targets 0.52.6", -] - -[[package]] -name = "windows-targets" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" -dependencies = [ - "windows_aarch64_gnullvm 0.48.5", - "windows_aarch64_msvc 0.48.5", - "windows_i686_gnu 0.48.5", - "windows_i686_msvc 0.48.5", - "windows_x86_64_gnu 0.48.5", - "windows_x86_64_gnullvm 0.48.5", - "windows_x86_64_msvc 0.48.5", -] - -[[package]] -name = "windows-targets" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" -dependencies = [ - "windows_aarch64_gnullvm 0.52.6", - "windows_aarch64_msvc 0.52.6", - "windows_i686_gnu 0.52.6", - "windows_i686_gnullvm", - "windows_i686_msvc 0.52.6", - "windows_x86_64_gnu 0.52.6", - "windows_x86_64_gnullvm 0.52.6", - "windows_x86_64_msvc 0.52.6", -] - -[[package]] -name = "windows_aarch64_gnullvm" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" - -[[package]] -name = "windows_aarch64_gnullvm" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" - -[[package]] -name = "windows_aarch64_msvc" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" - -[[package]] -name = "windows_aarch64_msvc" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" - -[[package]] -name = "windows_i686_gnu" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" - -[[package]] -name = "windows_i686_gnu" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" - -[[package]] -name = "windows_i686_gnullvm" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" - -[[package]] -name = "windows_i686_msvc" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" - -[[package]] -name = "windows_i686_msvc" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" - -[[package]] -name = "windows_x86_64_gnu" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" - -[[package]] -name = "windows_x86_64_gnu" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" - -[[package]] -name = "windows_x86_64_gnullvm" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" - -[[package]] -name = "windows_x86_64_gnullvm" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" - -[[package]] -name = "windows_x86_64_msvc" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" - -[[package]] -name = "windows_x86_64_msvc" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" - -[[package]] -name = "winreg" -version = "0.50.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "524e57b2c537c0f9b1e69f1965311ec12182b4122e45035b1508cd24d2adadb1" -dependencies = [ - "cfg-if", - "windows-sys 0.48.0", -] - -[[package]] -name = "zeroize" -version = "1.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ced3678a2879b30306d323f4542626697a464a97c0a07c9aebf7ebca65cd4dde" diff --git a/local-interchain/rust/Cargo.toml b/local-interchain/rust/Cargo.toml deleted file mode 100644 index b5b20fc65..000000000 --- a/local-interchain/rust/Cargo.toml +++ /dev/null @@ -1,11 +0,0 @@ -[workspace] -members = ["main", "localic-std"] - -[workspace.dependencies] -reqwest = { version = "0.11.20", features = ["blocking", "json"]} -tokio = { version = "1.32.0", features = ["full"] } -serde_json = {version = "1.0.107"} -cosmwasm-std = "1.4.0" -thiserror = { version = "1.0.31" } - -localic-std = { path = "./localic-std"} \ No newline at end of file diff --git a/local-interchain/rust/Makefile b/local-interchain/rust/Makefile deleted file mode 100644 index 57def1e5f..000000000 --- a/local-interchain/rust/Makefile +++ /dev/null @@ -1,6 +0,0 @@ -build-bin: - @echo "Building rust interchain..." - @cargo build --release - -run-bin: build-bin - @./target/release/localic-bin \ No newline at end of file diff --git a/local-interchain/rust/README.md b/local-interchain/rust/README.md deleted file mode 100644 index ec7915460..000000000 --- a/local-interchain/rust/README.md +++ /dev/null @@ -1,215 +0,0 @@ -# Rust Github CI - -Leveraging Local-Interchain, rust contract developers can now test their contracts in a rust based e2e environment with a simple CI pipeline. - -## Example - -[Example Contract Repo](https://github.com/Reecepbcups/interchaintest-rust-example) - -## Setup - -**requirements** - setup a standard git repository (like the example) for a cosmwasm contract. A good base is [cw-template](https://github.com/CosmWasm/cw-template). - -```bash -# create base directory -mkdir interchaintest -cd interchaintest - -# generate the testing binary -cargo init --name e2e_testing - -# add required dependencies to Cargo.toml -cargo add cosmwasm-std -cargo add localic-std --git https://github.com/strangelove-ventures/interchaintest - -# create the 2 sub directories -mkdir chains configs - -# add a customizable SDK v47 chain config to the chains directory -echo '{ - "chains": [ - { - "name": "juno", - "chain_id": "localjuno-1", - "denom": "ujuno", - "binary": "junod", - "bech32_prefix": "juno", - "docker_image": { - "repository": "ghcr.io/cosmoscontracts/juno-e2e", - "version": "v17.0.0" - }, - "gas_prices": "0ujuno", - "chain_type": "cosmos", - "coin_type": 118, - "trusting_period": "112h", - "gas_adjustment": 2.0, - "number_vals": 1, - "number_node": 0, - "debugging": true, - "block_time": "500ms", - "genesis": { - "modify": [ - { - "key": "app_state.gov.params.voting_period", - "value": "15s" - }, - { - "key": "app_state.gov.params.max_deposit_period", - "value": "15s" - }, - { - "key": "app_state.gov.params.min_deposit.0.denom", - "value": "ujuno" - }, - { - "key": "app_state.gov.params.min_deposit.0.amount", - "value": "1" - } - ], - "accounts": [ - { - "name": "acc0", - "address": "juno1hj5fveer5cjtn4wd6wstzugjfdxzl0xps73ftl", - "amount": "10000000000%DENOM%", - "mnemonic": "decorate bright ozone fork gallery riot bus exhaust worth way bone indoor calm squirrel merry zero scheme cotton until shop any excess stage laundry" - }, - { - "name": "acc1", - "address": "juno1efd63aw40lxf3n4mhf7dzhjkr453axurv2zdzk", - "amount": "10000000000%DENOM%", - "mnemonic": "wealth flavor believe regret funny network recall kiss grape useless pepper cram hint member few certain unveil rather brick bargain curious require crowd raise" - } - ], - "startup_commands": [ - "%BIN% keys add example-key-after --keyring-backend test --home %HOME%" - ] - } - } - ] -}' > chains/juno.json -``` - -## CI Configuration - -Add the following configuration to your workflows directory. - -```bash -mkdir .github/workflows -``` - -```yaml -# contract-e2e.yml -name: contract-e2e - -on: - # run on every PR and merge to main. - pull_request: - push: - branches: [ master, main ] - -# Ensures that only a single workflow per PR will run at a time. -# Cancels in-progress jobs if new commit is pushed. -concurrency: - group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} - cancel-in-progress: true - -env: - GO_VERSION: 1.21 - -jobs: - # Builds local-interchain binary - build: - runs-on: ubuntu-latest - name: build - steps: - - name: Checkout interchaintest - uses: actions/checkout@v4 - with: - repository: strangelove-ventures/interchaintest - path: interchaintest - # ref: 'reece/rust' # branch, commit, tag - - - name: Setup go ${{ env.GO_VERSION }} - uses: actions/setup-go@v5 - with: - go-version: ${{ env.GO_VERSION }} - - - name: build local-interchain - run: cd interchaintest/local-interchain && go mod tidy && make install - - - name: Upload localic artifact - uses: actions/upload-artifact@v3 - with: - name: local-ic - path: ~/go/bin/local-ic - - contract-e2e: - needs: build - name: contract e2e - runs-on: ubuntu-latest - # defaults: - # run: - # working-directory: ./nested-path-here - strategy: - fail-fast: false - - steps: - - name: checkout this repo (contracts) - uses: actions/checkout@v3 - - - name: Install latest toolchain - uses: actions-rs/toolchain@v1 - with: - profile: minimal - toolchain: stable - target: wasm32-unknown-unknown - override: true - - - name: Download Tarball Artifact - uses: actions/download-artifact@v3 - with: - name: local-ic - path: /tmp - - - name: Make local-ic executable - run: chmod +x /tmp/local-ic - - # TODO: modify me to match your setup - - name: Compile contract - run: make compile - - # TODO: You can change `juno` here to any config in the chains/ directory - # The `&` at the background allows it to run in the background of the CI pipeline. - - name: Start background ibc local-interchain - run: ICTEST_HOME=./interchaintest /tmp/local-ic start juno --api-port 8080 & - - # TODO: run the rust binary e2e test. (scripts, makefile, or just work here.) - - name: Run Rust E2E Script - run: make run-test - - - name: Cleanup - run: killall local-ic && exit 0 -``` - -## Makefile - -The following is an example makefile for the above CI. You can also use bash scripts or just files in the root directory. - -```makefile -#!/usr/bin/make -f -VERSION := $(shell echo $(shell git describe --tags) | sed 's/^v//') -COMMIT := $(shell git log -1 --format='%H') - -CURRENT_DIR := $(shell pwd) -BASE_DIR := $(shell basename $(CURRENT_DIR)) - -compile: - @echo "Compiling Contract $(COMMIT)..." - @docker run --rm -v "$(CURRENT_DIR)":/code \ - --mount type=volume,source="$(BASE_DIR)_cache",target=/code/target \ - --mount type=volume,source=registry_cache,target=/usr/local/cargo/registry \ - cosmwasm/rust-optimizer:0.12.13 - -run-test: - cd interchaintest && cargo run --package e2e_testing --bin e2e_testing -``` diff --git a/local-interchain/rust/localic-std/Cargo.toml b/local-interchain/rust/localic-std/Cargo.toml deleted file mode 100644 index 49fc124d0..000000000 --- a/local-interchain/rust/localic-std/Cargo.toml +++ /dev/null @@ -1,16 +0,0 @@ -[package] -name = "localic-std" -version = "0.0.1" -edition = "2021" -authors = ["Strangelove Developers"] - -[lib] -name = "localic_std" -path = "./src/lib.rs" - -[dependencies] -reqwest.workspace = true -tokio.workspace = true -serde_json.workspace = true -cosmwasm-std.workspace = true -thiserror.workspace = true diff --git a/local-interchain/rust/localic-std/Makefile b/local-interchain/rust/localic-std/Makefile deleted file mode 100644 index 7fc60e6fd..000000000 --- a/local-interchain/rust/localic-std/Makefile +++ /dev/null @@ -1,6 +0,0 @@ -.PHONY: lint -lint: - @echo "Running linter..." - @cargo fmt --all - @cargo clippy -- -D warnings - @cargo clippy -- -W clippy::pedantic -W clippy::correctness -W clippy::branches_sharing_code \ No newline at end of file diff --git a/local-interchain/rust/localic-std/src/errors.rs b/local-interchain/rust/localic-std/src/errors.rs deleted file mode 100644 index 59c03e020..000000000 --- a/local-interchain/rust/localic-std/src/errors.rs +++ /dev/null @@ -1,43 +0,0 @@ -use thiserror::Error; - -#[derive(Error, Debug, Clone)] -pub enum LocalError { - #[error("{{msg}}")] - Custom { msg: String }, - - #[error("This err returned is NotImplemented")] - NotImplemented {}, - - #[error("the transaction hash was not found.")] - TxHashNotFound {}, - - #[error("file upload failed for path: {path}. reason: {reason}")] - UploadFailed { path: String, reason: String }, - - #[error("transaction was not successful. status: {code_status}. log: {raw_log}")] - TxNotSuccessful { code_status: i64, raw_log: String }, - - #[error("contract address not found. {events}")] - ContractAddressNotFound { events: String }, - - #[error("key_bech32 failed. reason: {reason}")] - KeyBech32Failed { reason: String }, - - #[error("This CosmWasm object has no value for: {value_type}")] - CWValueIsNone { value_type: String }, - - #[error("API URL is not found.")] - ApiNotFound {}, - - #[error("Chain ID is not found.")] - ChainIdNotFound {}, - - #[error("The local-interchain API server did not start in time.")] - ServerDidNotStart {}, - - #[error("Could not find the SDK status code in the Tx data. {reason}. tx_res: {tx_res}")] - SdkTransactionStatusCodeNotFound { reason: String, tx_res: String }, - - #[error("Could not get filesystem files. {error}")] - GetFilesError { error: String }, -} diff --git a/local-interchain/rust/localic-std/src/filesystem.rs b/local-interchain/rust/localic-std/src/filesystem.rs deleted file mode 100644 index 92b7dfb5d..000000000 --- a/local-interchain/rust/localic-std/src/filesystem.rs +++ /dev/null @@ -1,25 +0,0 @@ -use crate::{errors::LocalError, transactions::ChainRequestBuilder}; - -/// # Errors -/// -/// Returns `Err` if the files can not be found. -pub fn get_files(rb: &ChainRequestBuilder, absolute_path: &str) -> Result, LocalError> { - let cmd: String = format!("ls {absolute_path}"); - let res = rb.exec(cmd.as_str(), true); - - if let Some(err) = res["error"].as_str() { - return Err(LocalError::GetFilesError { - error: err.to_string(), - }); - }; - - let text = res["text"].as_str(); - - let Some(text) = text else { return Ok(vec![]) }; - - Ok(text - .split('\n') - .filter(|s| !s.is_empty()) - .map(std::string::ToString::to_string) - .collect()) -} diff --git a/local-interchain/rust/localic-std/src/lib.rs b/local-interchain/rust/localic-std/src/lib.rs deleted file mode 100644 index 722b42fd6..000000000 --- a/local-interchain/rust/localic-std/src/lib.rs +++ /dev/null @@ -1,10 +0,0 @@ -pub mod errors; -pub mod filesystem; -pub mod polling; -pub mod transactions; -pub mod types; - -pub mod node; -pub mod relayer; - -pub mod modules; diff --git a/local-interchain/rust/localic-std/src/modules/bank.rs b/local-interchain/rust/localic-std/src/modules/bank.rs deleted file mode 100644 index 3413445cf..000000000 --- a/local-interchain/rust/localic-std/src/modules/bank.rs +++ /dev/null @@ -1,41 +0,0 @@ -use cosmwasm_std::Coin; -use serde_json::Value; - -use crate::{errors::LocalError, transactions::ChainRequestBuilder, types::get_coin_from_json}; - -/// # Errors -/// -/// Returns `Err` if the transaction fails (ex: not enough balance, fees, or gas). -pub fn send( - rb: &ChainRequestBuilder, - from_key: &str, - to_address: &str, - tokens: &[Coin], - fee: &Coin, -) -> Result { - let str_coins = tokens - .iter() - .map(|coin| format!("{}{}", coin.amount, coin.denom)) - .collect::>() - .join(","); - - let cmd = - format!("tx bank send {from_key} {to_address} {str_coins} --fees={fee} --output=json"); - rb.tx(&cmd, true) -} - -pub fn get_balance(req_builder: &ChainRequestBuilder, address: &str) -> Vec { - let res = req_builder.query(&format!("q bank balances {address}"), false); - let Some(balances) = res["balances"].as_array() else { return vec![] }; - - let coins: Vec = balances.iter().map(get_coin_from_json).collect(); - coins -} - -pub fn get_total_supply(req_builder: &ChainRequestBuilder) -> Vec { - let res = req_builder.query("q bank total", false); - let Some(supplies) = res["supply"].as_array() else { return vec![] }; - - let coins: Vec = supplies.iter().map(get_coin_from_json).collect(); - coins -} diff --git a/local-interchain/rust/localic-std/src/modules/cosmwasm.rs b/local-interchain/rust/localic-std/src/modules/cosmwasm.rs deleted file mode 100644 index 627cb3d90..000000000 --- a/local-interchain/rust/localic-std/src/modules/cosmwasm.rs +++ /dev/null @@ -1,325 +0,0 @@ -use std::path::{Path, PathBuf}; - -use serde_json::Value; - -use crate::{ - errors::LocalError, - relayer::Relayer, - transactions::ChainRequestBuilder, - types::{Contract, TransactionResponse}, -}; - -#[derive(Clone)] -pub struct CosmWasm<'a> { - rb: &'a ChainRequestBuilder, - - pub file_path: Option, - pub code_id: Option, - pub contract_addr: Option, -} - -impl CosmWasm<'_> { - #[must_use] - pub fn new(rb: &ChainRequestBuilder) -> CosmWasm { - CosmWasm { - rb, - file_path: None, - code_id: None, - contract_addr: None, - } - } - - #[must_use] - pub fn new_from_existing( - rb: &ChainRequestBuilder, - file_path: Option, - code_id: Option, - contract_addr: Option, - ) -> CosmWasm { - CosmWasm { - rb, - file_path, - code_id, - contract_addr, - } - } - - /// # Errors - /// - /// Returns `Err` if the `code_id` is not found when uploading the contract. - pub fn store(&mut self, key_name: &str, abs_path: &Path) -> Result { - // TODO: add cache - println!( - "uploading contract to {}: {}", - self.rb.chain_id.as_str(), - abs_path.to_str().unwrap_or_default() - ); - match self.rb.upload_contract(key_name, abs_path) { - Ok(code_id) => { - self.code_id = Some(code_id); - self.file_path = Some(abs_path.to_path_buf()); - Ok(code_id) - } - Err(e) => Err(e), - } - } - - /// # Errors - /// - /// Returns `Err` if the contract address is not found in the transaction logs. - pub fn instantiate( - &mut self, - account_key: &str, - msg: &str, - label: &str, - admin: Option<&str>, - flags: &str, - ) -> Result { - let code_id: u64 = match &self.code_id { - Some(code) => code.to_owned(), - None => { - return Err(LocalError::CWValueIsNone { - value_type: "code_id".to_string(), - }) - } - }; - - match contract_instantiate(self.rb, account_key, code_id, msg, label, admin, flags) { - Ok(contract) => { - self.contract_addr = Some(contract.address.clone()); - Ok(contract) - } - Err(e) => Err(e), - } - } - - /// # Errors - /// - /// Returns `Err` if the sdk status code can not be found in the JSON blob. - pub fn execute( - &self, - account_key: &str, - msg: &str, - flags: &str, - ) -> Result { - let contract_addr: &str = match &self.contract_addr { - Some(addr) => addr.as_ref(), - None => { - return Err(LocalError::CWValueIsNone { - value_type: "contract_addr".to_string(), - }) - } - }; - contract_execute(self.rb, contract_addr, account_key, msg, flags) - } - - /// # Panics - /// - /// Panics if the contract address already set in the `CosmWasm` object. - #[must_use] - pub fn query(&self, msg: &str) -> Value { - let contract_addr: &str = match &self.contract_addr { - Some(addr) => addr.as_ref(), - None => panic!("contract_addr is none"), - }; - contract_query(self.rb, contract_addr, msg) - } - - // make a query request which uses a serde_json::Value as the msg - #[must_use] - pub fn query_value(&self, msg: &Value) -> Value { - self.query(msg.to_string().as_str()) - } - - /// # Errors - /// - /// Returns `Err` if the contract address is not found in the transaction logs. - pub fn create_wasm_connection( - &self, - r: &Relayer, - path: &str, - dst: &CosmWasm, - order: &str, - version: &str, - ) -> Result { - let contract_addr: String = match &self.contract_addr { - Some(addr) => addr.to_string(), - None => { - return Err(LocalError::CWValueIsNone { - value_type: "contract_addr".to_string(), - }) - } - }; - - let dst_contract_addr: String = match &dst.contract_addr { - Some(addr) => addr.to_string(), - None => { - return Err(LocalError::CWValueIsNone { - value_type: "dst.contract_addr".to_string(), - }) - } - }; - - let src: String = format!("wasm.{}", contract_addr.as_str()); - let dst = format!("wasm.{}", dst_contract_addr.as_str()); - - r.create_channel(path, src.as_str(), dst.as_str(), order, version) - } -} - -/// # Errors -/// -/// Returns `Err` if the transaction fails or the contract address is not found. -pub fn contract_instantiate( - rb: &ChainRequestBuilder, - account_key: &str, - code_id: u64, - msg: &str, - label: &str, - admin: Option<&str>, - flags: &str, -) -> Result { - let mut updated_flags = flags.to_string(); - if let Some(admin) = admin { - updated_flags = format!("{flags} --admin={admin}"); - } else if !flags.contains("--no-admin") { - updated_flags = format!("{flags} --no-admin"); - } - - updated_flags = updated_flags.trim().to_string(); - - let mut cmd = format!("tx wasm instantiate {code_id} {msg} --label={label} --from={account_key} --output=json --gas=auto --gas-adjustment=3.0"); - if !updated_flags.is_empty() { - cmd = format!("{cmd} {updated_flags}"); - } - - let res = rb.tx(cmd.as_str(), false)?; - - let tx_hash: Option = rb.get_tx_hash(&res); - let raw_log: Option = rb.get_raw_log(&res); - - if raw_log.is_some() { - println!("raw_log: {}", raw_log.unwrap_or_default()); - } - - let contract_addr = get_contract_address(rb, tx_hash.clone().unwrap_or_default().as_str()); - match contract_addr { - Ok(contract_addr) => Ok(Contract { - address: contract_addr, - tx_hash: tx_hash.unwrap_or_default(), - admin: admin.map(std::string::ToString::to_string), - }), - Err(e) => Err(e), - } -} - -/// # Errors -/// -/// Returns `Err` if the SDK response code can not be found in the transaction data. -pub fn contract_execute( - rb: &ChainRequestBuilder, - contract_addr: &str, - account_key: &str, - msg: &str, - flags: &str, -) -> Result { - let mut cmd = format!("tx wasm execute {contract_addr} {msg} --from={account_key} {flags}"); - cmd = cmd.trim().to_string(); - - let updated_flags = flags.to_string(); - if !updated_flags.is_empty() { - cmd = format!("{cmd} {updated_flags}"); - } - - let res = match rb.tx(cmd.as_str(), false) { - Ok(res) => res, - Err(e) => { - return Err(e); - } - }; - - let tx_hash = rb.get_tx_hash(&res); - let raw_log = rb.get_raw_log(&res); - - let status_code = match rb.get_sdk_status_code(&res) { - Ok(code_id) => code_id, - Err(e) => { - return Err(e); - } - }; - - if let Some(tx_raw_log) = &raw_log { - println!("raw_log: {tx_raw_log}"); - } - - Ok(TransactionResponse { - status_code, - tx_hash, - raw_log, - }) -} - -#[must_use] -pub fn contract_query(rb: &ChainRequestBuilder, contract_addr: &str, msg: &str) -> Value { - let cmd = format!("query wasm contract-state smart {contract_addr} {msg}",); - rb.query(&cmd, false) -} - -/// # Errors -/// -/// Returns `Err` if the contract address is not found in the transaction logs. -pub fn get_contract_address(rb: &ChainRequestBuilder, tx_hash: &str) -> Result { - let mut last_error = LocalError::ContractAddressNotFound { - events: String::new(), - }; - for _ in 0..5 { - let res = get_contract(rb, tx_hash); - if res.is_ok() { - return res; - } - - let Some(err) = res.err() else { continue }; - last_error = err; - std::thread::sleep(std::time::Duration::from_secs(1)); - } - - Err(last_error) -} - -fn get_contract(rb: &ChainRequestBuilder, tx_hash: &str) -> Result { - let mut res = rb.query_tx_hash(tx_hash); - - let code = res["code"].as_i64().unwrap_or_default(); - if code != 0 { - let raw = res["raw_log"].as_str().unwrap_or_default(); - return Err(LocalError::TxNotSuccessful { - code_status: code, - raw_log: raw.to_string(), - }); - } - - let mut tx_logs = res["logs"].take(); - let events = tx_logs - .as_array_mut() - .and_then(|logs| logs.first_mut()) - .map_or_else(|| res["events"].take(), |log| log["events"].take()); - - for event in events.as_array().into_iter() { - for attr in event.iter() { - for attr_values in attr["attributes"].as_array().iter() { - for attr in attr_values.iter() { - if let Some(key) = attr["key"].as_str() { - if key.contains("contract_address") { - let contract_address = attr["value"].as_str().unwrap_or_default(); - return Ok(contract_address.to_string()); - } - } - } - } - } - } - - Err(LocalError::ContractAddressNotFound { - events: res.to_string(), - }) -} diff --git a/local-interchain/rust/localic-std/src/modules/gov.rs b/local-interchain/rust/localic-std/src/modules/gov.rs deleted file mode 100644 index 4d4e57092..000000000 --- a/local-interchain/rust/localic-std/src/modules/gov.rs +++ /dev/null @@ -1,9 +0,0 @@ -use serde_json::Value; - -use crate::transactions::ChainRequestBuilder; - -#[must_use] -pub fn get_proposal(req_builder: &ChainRequestBuilder, proposal_id: u64) -> Value { - let cmd = format!("q gov proposal {proposal_id}"); - req_builder.query(cmd.as_str(), false) -} diff --git a/local-interchain/rust/localic-std/src/modules/mod.rs b/local-interchain/rust/localic-std/src/modules/mod.rs deleted file mode 100644 index 2367b7115..000000000 --- a/local-interchain/rust/localic-std/src/modules/mod.rs +++ /dev/null @@ -1,3 +0,0 @@ -pub mod bank; -pub mod cosmwasm; -pub mod gov; diff --git a/local-interchain/rust/localic-std/src/node.rs b/local-interchain/rust/localic-std/src/node.rs deleted file mode 100644 index 0f2fc0236..000000000 --- a/local-interchain/rust/localic-std/src/node.rs +++ /dev/null @@ -1,196 +0,0 @@ -// ref: chain_node.go -use crate::{errors::LocalError, transactions::ChainRequestBuilder, types::RequestType}; -use serde_json::{json, Value}; - -// TODO: -// pub fn VoteOnProposal(rb: &ChainRequestBuilder, proposal_id: String, vote: String) -> String { -// pub fn SubmitProposal(key_name: String, proposal_json_path: Pathbuf) -// pub fn UpgradeProposal(key_name: String, upgradeheight, title, description, deposit) -// pub fn UnsafeResetAll(rb: &ChainRequestBuilder) -> String { - -#[derive(Clone)] -pub struct Chain<'a> { - rb: &'a ChainRequestBuilder, -} - -impl Chain<'_> { - #[must_use] - pub fn new(rb: &ChainRequestBuilder) -> Chain { - Chain { rb } - } - - fn info_builder(&self, request: &str, extra_params: Option<&[(&str, &str)]>) -> String { - let query_params: Vec<(&str, &str)> = { - let mut params = vec![ - ("chain_id", self.rb.chain_id.as_str()), - ("request", request), - ]; - - if let Some(extra_params) = extra_params { - params.extend_from_slice(extra_params); - } - - params - }; - let query_params: &[(&str, &str)] = query_params.as_slice(); - - let res = self - .rb - .client - .get(format!("{}/info", self.rb.api).as_str()) - .query(query_params) - .send() - .unwrap() - .text() - .unwrap(); - res - } - - // actions - #[must_use] - pub fn recover_key(&self, key_name: &str, mnemonic: &str) -> Value { - let cmd = format!("keyname={key_name};mnemonic={mnemonic}"); - self.rb - .send_request(RequestType::RecoverKey, cmd.as_str(), false) - } - - #[must_use] - pub fn overwrite_genesis_file(&self, content: &str) -> Value { - let cmd = format!("new_genesis={content}"); - self.rb - .send_request(RequestType::OverwriteGenesisFile, cmd.as_str(), false) - } - - #[must_use] - pub fn dump_contract_state(&self, contract_addr: &str, height: u64) -> Value { - let cmd = format!("contract={contract_addr};height={height}"); - self.rb - .send_request(RequestType::DumpContractState, cmd.as_str(), false) - } - - #[must_use] - pub fn set_peers(&self, peers: &str) -> Value { - let cmd = format!("new_peers={peers}"); - self.rb - .send_request(RequestType::SetNewPeers, cmd.as_str(), false) - } - - /// `add_full_node` adds a full node to the network. A full node must already be running on the same network. - #[must_use] - pub fn add_full_node(&self, amount: u64) -> Value { - let cmd = format!("amount={amount}"); - self.rb - .send_request(RequestType::AddFullNodes, cmd.as_str(), false) - } - - /// # Errors - /// - /// Returns `Err` if the key bech32 fails on the node. - pub fn account_key_bech_32(&self, key_name: &str) -> Result { - self.key_bech32(key_name, "") - } - - /// # Errors - /// - /// Returns `Err` if the key bech32 fails on the node. - pub fn key_bech32(&self, key_name: &str, bech_prefix: &str) -> Result { - let mut cmd = - format!("keys show --address {key_name} --home=%HOME% --keyring-backend=test"); - - if !bech_prefix.is_empty() { - cmd = format!("{cmd} --bech {bech_prefix}"); - } - - let res = &self.rb.bin(cmd.as_str(), true); - let text = res["text"].to_string(); - if text.contains("Error:") { - return Err(LocalError::KeyBech32Failed { - reason: res["text"].to_string(), - }); - } - - if !text.is_empty() { - let text = text.replace("\\n", ""); - let text = text.replace('\"', ""); - return Ok(text); - } - - Err(LocalError::KeyBech32Failed { - reason: res["error"].to_string(), - }) - } - - #[must_use] - pub fn get_chain_config(&self) -> Value { - let res = self.info_builder("config", None); - - match serde_json::from_str::(&res) { - Ok(res) => res, - Err(_) => { - json!({}) - } - } - } - - #[must_use] - pub fn get_name(&self) -> String { - self.info_builder("name", None) - } - - #[must_use] - pub fn get_container_id(&self) -> String { - self.info_builder("container_id", None) - } - - #[must_use] - pub fn get_host_name(&self) -> String { - self.info_builder("hostname", None) - } - - #[must_use] - pub fn get_genesis_file_content(&self) -> Option { - match self.info_builder("genesis_file_content", None).as_str() { - "" => None, - res => Some(res.to_string()), - } - } - - #[must_use] - pub fn get_home_dir(&self) -> String { - self.info_builder("home_dir", None) - } - - #[must_use] - pub fn get_height(&self) -> u64 { - let res = self.info_builder("height", None); - res.parse::().unwrap_or(0) - } - - #[must_use] - pub fn read_file(&self, relative_path: &str) -> String { - self.info_builder("read_file", Some(&[("relative_path", relative_path)])) - } - - #[must_use] - pub fn is_above_sdk_v47(&self) -> bool { - let res = self.info_builder("is_above_sdk_v47", None); - res.parse::().unwrap_or(false) - } - - #[must_use] - pub fn has_command(&self, command: &str) -> String { - self.info_builder("has_command", Some(&[("command", command)])) - } - - #[must_use] - pub fn get_build_information(&self) -> Value { - let res = self.info_builder("build_information", None); - - match serde_json::from_str::(&res) { - Ok(res) => res, - Err(_) => { - json!({}) - } - } - } -} diff --git a/local-interchain/rust/localic-std/src/polling.rs b/local-interchain/rust/localic-std/src/polling.rs deleted file mode 100644 index 70c2140fa..000000000 --- a/local-interchain/rust/localic-std/src/polling.rs +++ /dev/null @@ -1,21 +0,0 @@ -use reqwest::blocking::Client as BClient; - -use crate::errors::LocalError; - -/// Polls the API URL for a response. If the response is successful, then the server is running. -/// # Errors -/// -/// If the server does not start within the `wait_seconds`, then an error is returned. -pub fn poll_for_start(c: &BClient, api_url: &str, wait_seconds: u32) -> Result<(), LocalError> { - for i in 0..wait_seconds { - if c.get(api_url).send().is_ok() { - return Ok(()); - } - println!("waiting for server to start (iter:{i}) ({api_url})"); - std::thread::sleep(std::time::Duration::from_secs(1)); - } - - Err(LocalError::ServerDidNotStart {}) -} - -// TODO: polling for a future block (wait_until) delta diff --git a/local-interchain/rust/localic-std/src/relayer.rs b/local-interchain/rust/localic-std/src/relayer.rs deleted file mode 100644 index a509b5ab9..000000000 --- a/local-interchain/rust/localic-std/src/relayer.rs +++ /dev/null @@ -1,166 +0,0 @@ -use serde_json::Value; - -use crate::{errors::LocalError, transactions::ChainRequestBuilder}; - -#[derive(Clone)] -pub struct Relayer<'a> { - rb: &'a ChainRequestBuilder, -} - -#[derive(Clone, Debug)] -pub struct Channel { - pub channel_id: String, - pub connection_hops: Vec, - pub counterparty: Counterparty, - pub ordering: String, - pub port_id: String, - pub state: String, - pub version: String, -} - -#[derive(Clone, Debug)] -pub struct Counterparty { - pub channel_id: String, - pub port_id: String, -} - -impl Relayer<'_> { - #[must_use] - pub fn new(rb: &ChainRequestBuilder) -> Relayer { - Relayer { rb } - } - - /// # Errors - /// - /// Returns `Err` if the relayer is not able to execute the command. - pub fn execute(&self, cmd: &str, return_text: bool) -> Result { - let payload = serde_json::json!({ - "chain_id": self.rb.chain_id, - "action": "relayer-exec", - "cmd": cmd, - }); - - let res = self - .rb - .client - .post(&self.rb.api) - .json(&payload) - .header("Accept", "Content-Type: application/json") - .header("Content-Type", "Content-Type: application/json") - .send(); - - if return_text { - let res_text = match res { - Ok(res) => res.text().unwrap_or_default(), - Err(e) => return Err(LocalError::Custom { msg: e.to_string() }), - }; - - return Ok(serde_json::json!({ - "text": res_text, - })); - } - - match res { - Ok(res) => Ok(res.json().unwrap_or_default()), - Err(e) => Err(LocalError::Custom { msg: e.to_string() }), - } - } - - /// # Errors - /// - /// Returns `Err` if the relayer is not able to flush packets between 2 contracts. - pub fn flush(&self, path: &str, channel: &str) -> Result { - let cmd = format!("rly transact flush {path} {channel}"); - self.execute(cmd.as_str(), false) - } - - /// # Errors - /// - /// Returns `Err` if the relayer is not able to create the channel between 2 channels. - pub fn create_channel( - &self, - path: &str, - src: &str, - dst: &str, - order: &str, - version: &str, - ) -> Result { - let source: String = src.to_string(); - let destination: String = dst.to_string(); - - let cmd = format!( - "rly tx channel {path} --src-port {source} --dst-port {destination} --order {order} --version {version}", - ); - - self.execute(cmd.as_str(), false) - } - - /// # Errors - /// - /// Returns `Err` if the relayer is not able to return the channels. - /// - /// # Panics - /// - /// Panics if the relayer is not able to return the channels. - pub fn get_channels(&self, chain_id: &str) -> Result, LocalError> { - let payload = serde_json::json!({ - "chain_id": chain_id, - "action": "get_channels", - }); - - let res = self.rb.client.post(&self.rb.api).json(&payload).send(); - if let Err(res) = res { - return Err(LocalError::Custom { - msg: res.to_string(), - }); - } - - let channel_json: Value = match res { - Ok(res) => res.json().unwrap_or_default(), - Err(e) => return Err(LocalError::Custom { msg: e.to_string() }), - }; - - let mut channels: Vec = Vec::new(); - - let Some(c) = channel_json.as_array() else { - return Err(LocalError::Custom { - msg: "channel_json is not an array".to_string(), - }) - }; - - for channel in c { - let channel_id = channel["channel_id"] - .as_str() - .unwrap_or_default() - .to_string(); - let connection_hops = channel["connection_hops"].as_array().unwrap(); - let mut hops: Vec = Vec::new(); - for hop in connection_hops { - hops.push(hop.as_str().unwrap().to_string()); - } - let counterparty = channel["counterparty"].as_object().unwrap(); - let counterparty_channel_id = counterparty["channel_id"].as_str().unwrap().to_string(); - let counterparty_port_id = counterparty["port_id"].as_str().unwrap().to_string(); - let counterparty = Counterparty { - channel_id: counterparty_channel_id, - port_id: counterparty_port_id, - }; - let ordering = channel["ordering"].as_str().unwrap().to_string(); - let port_id = channel["port_id"].as_str().unwrap().to_string(); - let state = channel["state"].as_str().unwrap().to_string(); - let version = channel["version"].as_str().unwrap().to_string(); - let channel = Channel { - channel_id, - connection_hops: hops, - counterparty, - ordering, - port_id, - state, - version, - }; - channels.push(channel); - } - - Ok(channels) - } -} diff --git a/local-interchain/rust/localic-std/src/transactions.rs b/local-interchain/rust/localic-std/src/transactions.rs deleted file mode 100644 index a137e5904..000000000 --- a/local-interchain/rust/localic-std/src/transactions.rs +++ /dev/null @@ -1,385 +0,0 @@ -use std::path::Path; - -use reqwest::blocking::{Client, RequestBuilder}; -use serde_json::Value; - -use crate::{ - errors::LocalError, - types::{ActionHandler, RequestType}, -}; - -#[derive(Debug)] -pub struct ChainRequestBuilder { - pub client: Client, - pub api: String, - pub chain_id: String, - log_output: bool, -} - -impl ChainRequestBuilder { - /// # Errors - /// - /// Returns `Err` if the `api` or `chain_id` is empty. - pub fn new( - api: String, - chain_id: String, - log_output: bool, - ) -> Result { - if api.is_empty() { - return Err(LocalError::ApiNotFound {}); - } - if chain_id.is_empty() { - return Err(LocalError::ChainIdNotFound {}); - } - - Ok(ChainRequestBuilder { - client: Client::new(), - api, - chain_id, - log_output, - }) - } - - // app binary commands - #[must_use] - pub fn binary(&self, cmd: &str, return_text: bool) -> Value { - self.send_request(RequestType::Bin, cmd, return_text) - } - #[must_use] - pub fn bin(&self, cmd: &str, return_text: bool) -> Value { - self.binary(cmd, return_text) - } - - // app query commands - #[must_use] - pub fn query(&self, cmd: &str, return_text: bool) -> Value { - self.send_request(RequestType::Query, cmd, return_text) - } - #[must_use] - pub fn q(&self, cmd: &str, return_text: bool) -> Value { - self.query(cmd, return_text) - } - - // container execution commands - #[must_use] - pub fn execute(&self, cmd: &str, return_text: bool) -> Value { - self.send_request(RequestType::Exec, cmd, return_text) - } - #[must_use] - pub fn exec(&self, cmd: &str, return_text: bool) -> Value { - self.execute(cmd, return_text) - } - - /// # Errors - /// - /// Returns `Err` if the transaction fails. - pub fn transaction(&self, cmd: &str, get_data: bool) -> Result { - let command = set_missing_required_args( - cmd, - vec![ - "--node=%RPC%", - "--chain-id=%CHAIN_ID%", - "--keyring-backend=test", - "--home=%HOME%", - ], - ); - - let command = if command.contains("--yes") { - command - } else { - format!("{command} --yes") - }; - - let res = self.binary(command.as_str(), false); - if !get_data { - return Ok(res); - } - - let Some(tx_hash) = self.get_tx_hash(&res) else { return Err(LocalError::TxHashNotFound {}) }; - - for _ in 0..5 { - let data = self.query_tx_hash(&tx_hash); - - if !data.to_string().starts_with("{\"error\":") { - return Ok(data); - } - - std::thread::sleep(std::time::Duration::from_secs(1)); - } - - Err(LocalError::TxHashNotFound {}) - } - - /// # Errors - /// - /// Returns `Err` if the transaction fails. - pub fn tx(&self, cmd: &str, get_data: bool) -> Result { - self.transaction(cmd, get_data) - } - - #[must_use] - pub fn decode_transaction(&self, protobuf_bytes: &str, use_hex: bool) -> Value { - let mut cmd = format!("tx decode {protobuf_bytes}"); - if use_hex { - cmd = format!("{cmd} --hex"); - } - - self.binary(cmd.as_str(), false) - } - #[must_use] - pub fn get_tx_hash(&self, tx_res: &Value) -> Option { - let tx_hash = tx_res["txhash"].as_str(); - tx_hash.map(std::string::ToString::to_string) - } - - /// # Errors - /// - /// Returns `Err` if the transaction status code is not found. - pub fn get_sdk_status_code(&self, tx_res: &Value) -> Result { - let status_id = tx_res["code"].as_u64(); - match status_id { - Some(code) => Ok(code), - None => Err(LocalError::SdkTransactionStatusCodeNotFound { - reason: "'code' not found in Tx JSON response.".to_string(), - tx_res: tx_res.to_string(), - }), - } - } - - #[must_use] - pub fn get_raw_log(&self, tx_res: &Value) -> Option { - let raw_log = tx_res["raw_log"].as_str(); - let res = raw_log.map(std::string::ToString::to_string); - res.filter(|res| !(res.is_empty() || res == "[]")) - } - - #[must_use] - pub fn query_tx_hash(&self, tx_hash: &str) -> Value { - if tx_hash.is_empty() { - return serde_json::json!({ - "error": "tx_hash cannot be empty", - }); - } - - let cmd = format!("tx {tx_hash} --output=json"); - self.query(&cmd, false) - } - - /// # Errors - /// - /// Returns `Err` if the file does not exist or if the file path is not valid. - pub fn upload_file( - &self, - abs_path: &Path, - return_text: bool, - ) -> Result { - let file: String = match abs_path.to_str() { - Some(file) => file.to_string(), - None => { - return Err(LocalError::UploadFailed { - path: match abs_path.to_str() { - Some(path) => path.to_string(), - None => String::new(), - }, - reason: "file path is not valid".to_string(), - }); - } - }; - if !abs_path.exists() { - return Err(LocalError::UploadFailed { - path: file, - reason: "file does not exist".to_string(), - }); - } - - let payload = serde_json::json!({ - "chain_id": &self.chain_id, - "file_path": file, - }); - - let url = self.api.to_string(); - let url = if url.ends_with('/') { - url + "upload" - } else { - url + "/upload" - }; - - let header: &str = if return_text { - "Content-Type: text/plain" - } else { - "Content-Type: application/json" - }; - - Ok(self - .client - .post(url) - .json(&payload) - .header("Accept", header) - .header("Content-Type", header)) - } - - /// # Errors - /// - /// Returns `Err` if the contract is not uploaded. - pub fn upload_contract(&self, key_name: &str, abs_path: &Path) -> Result { - let Some(file) = abs_path.to_str() else { - return Err(LocalError::UploadFailed { - path: match abs_path.to_str() { - Some(path) => path.to_string(), - None => String::new(), - }, - reason: "file path is not valid".to_string(), - }); - }; - - let payload = serde_json::json!({ - "chain_id": &self.chain_id, - "file_path": file, - "key_name": key_name, - }); - - let req = self.upload_file(abs_path, false)?; - - let req = req.json(&payload).header("Upload-Type", "cosmwasm"); - - let resp = match req.send() { - Ok(resp) => resp, - Err(err) => { - return Err(LocalError::UploadFailed { - path: file.to_string(), - reason: err.to_string(), - }); - } - }; - match resp.text() { - Ok(text) => { - if text.contains("error") { - return Err(LocalError::UploadFailed { - path: file.to_string(), - reason: text, - }); - } - - // convert text to json - let json = match serde_json::from_str::(&text) { - Ok(json) => json, - Err(err) => { - return Err(LocalError::UploadFailed { - path: file.to_string(), - reason: err.to_string(), - }); - } - }; - - // get code_id from json - let Some(code_id) = json["code_id"].as_u64() else { - return Err(LocalError::UploadFailed { - path: file.to_string(), - reason: "code_id not found".to_string(), - }); - }; - - // return code_id - Ok(code_id) - } - Err(err) => Err(LocalError::UploadFailed { - path: file.to_string(), - reason: err.to_string(), - }), - } - } - - #[must_use] - pub fn send_request( - &self, - request_type: RequestType, - command: &str, - return_text: bool, - ) -> Value { - let mut cmd: String = command.to_string(); - if request_type == RequestType::Query { - if cmd.to_lowercase().starts_with("query ") { - cmd = cmd[6..].to_string(); - } else if cmd.to_lowercase().starts_with("q ") { - cmd = cmd[2..].to_string(); - } - }; - - // return JSON if we we did not override that. - if !return_text && (request_type == RequestType::Query || request_type == RequestType::Bin) - { - cmd = set_missing_required_args( - cmd.as_str(), - vec!["--node=%RPC%", "--chain-id=%CHAIN_ID%", "--output=json"], - ); - } - - // Build the request payload - let payload = ActionHandler::new(self.chain_id.clone(), request_type, cmd).to_json(); - - if self.log_output { - println!("[send_request payload]: {payload}"); - } - - let mut rb = self.client.post(&self.api).json(&payload); - - let content_type = if return_text { - "text/plain" - } else { - "application/json" - }; - - rb = rb - .header("Content-Type", content_type) - .header("Accept", content_type); - - let res = match rb.send() { - Ok(res) => res, - Err(err) => { - return return_text_json("", Some(err.to_string())); - } - }; - let text = res.text(); - - if return_text { - return return_text_json(text.unwrap_or_default().as_str(), None); - } - - match text { - Ok(text) => match serde_json::from_str::(&text) { - Ok(json) => json, - Err(err) => return_text_json(text.as_str(), Some(err.to_string())), - }, - Err(err) => return_text_json("", Some(err.to_string())), - } - } -} - -fn return_text_json(text: &str, err: Option) -> Value { - serde_json::json!({ - "text": &text, - "error": match err.unwrap_or_default() { - err if err.is_empty() => None, - err => Some(err), - }, - }) -} - -/// Sets missing command arguments that are required (such as the chain-id, keyring-backend, node, etc). -/// `required` elements must contain an '=' sign to be valid. -fn set_missing_required_args(cmd: &str, required: Vec<&str>) -> String { - let mut command = cmd.to_string(); - - for arg in required { - let parsed_args: String = match arg.split_once('=') { - Some((a, b)) => format!("{a} {b}"), - None => panic!("{arg} must have an '=' sign to be value in the `required` argument"), - }; - - if !command.contains(arg) && !command.contains(parsed_args.as_str()) { - command = format!("{command} {arg}"); - } - } - - command -} diff --git a/local-interchain/rust/localic-std/src/types.rs b/local-interchain/rust/localic-std/src/types.rs deleted file mode 100644 index 2519bc316..000000000 --- a/local-interchain/rust/localic-std/src/types.rs +++ /dev/null @@ -1,131 +0,0 @@ -use std::fmt; - -use cosmwasm_std::{Coin, Uint128}; -use reqwest::blocking::Client; - -#[derive(Debug, PartialEq, Eq, Clone)] -pub enum RequestType { - Bin, - Query, - Exec, - // custom - RecoverKey, - OverwriteGenesisFile, - SetNewPeers, - AddFullNodes, - DumpContractState, -} -impl RequestType { - #[must_use] - pub fn as_str(&self) -> &'static str { - // match handlers/actions.go - match self { - RequestType::Bin => "bin", - RequestType::Query => "query", - RequestType::Exec => "exec", - RequestType::RecoverKey => "recover-key", - RequestType::OverwriteGenesisFile => "overwrite-genesis-file", - RequestType::SetNewPeers => "set-peers", - RequestType::AddFullNodes => "add-full-nodes", - RequestType::DumpContractState => "dump-contract-state", - } - } -} - -#[derive(Debug, Clone)] -pub struct RequestBase { - pub client: Client, - pub url: String, - pub chain_id: String, - pub request_type: RequestType, -} - -impl RequestBase { - #[must_use] - pub fn new( - client: Client, - url: String, - chain_id: String, - request_type: RequestType, - ) -> RequestBase { - RequestBase { - client, - url, - chain_id, - request_type, - } - } -} - -pub struct ActionHandler { - pub chain_id: String, - pub action: RequestType, - pub cmd: String, -} - -impl ActionHandler { - #[must_use] - pub fn new(chain_id: String, action: RequestType, cmd: String) -> ActionHandler { - ActionHandler { - chain_id, - action, - cmd, - } - } - - #[must_use] - pub fn to_json_str(&self) -> String { - let escaped_cmd = self.cmd.replace('\"', "\\\""); - - let json = format!( - r#"{{"chain_id":"{}","action":"{}","cmd":"{}"}}"#, - self.chain_id, - self.action.as_str(), - escaped_cmd - ); - json - } - - #[must_use] - pub fn to_json(&self) -> serde_json::Value { - let json = self.to_json_str(); - let json: serde_json::Value = serde_json::from_str(&json).unwrap_or_default(); - json - } -} - -#[derive(Debug, PartialEq, Eq)] -pub struct TransactionResponse { - pub status_code: u64, - pub tx_hash: Option, - pub raw_log: Option, -} - -impl fmt::Display for TransactionResponse { - fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { - write!( - f, - "status: {:?} tx_hash: {:?}, rawlog: {:?}", - self.status_code, self.tx_hash, self.raw_log - ) - } -} - -#[derive(Debug, PartialEq, Eq)] -pub struct Contract { - pub address: String, - pub tx_hash: String, - pub admin: Option, -} - -#[must_use] -pub fn get_coin_from_json(value: &serde_json::Value) -> Coin { - let amount = value["amount"].as_str().unwrap_or_default(); - let denom = value["denom"].as_str().unwrap_or_default(); - let amount = amount.parse::().unwrap_or_default(); - - Coin { - denom: denom.to_string(), - amount, - } -} diff --git a/local-interchain/rust/main/Cargo.toml b/local-interchain/rust/main/Cargo.toml deleted file mode 100644 index 2b37eb9bf..000000000 --- a/local-interchain/rust/main/Cargo.toml +++ /dev/null @@ -1,18 +0,0 @@ -[package] -name = "localic-bin" -version = "0.0.1" -edition = "2021" -authors = ["Strangelove Developers"] - -[[bin]] -name = "localic-bin" -path = "src/main.rs" - -[dependencies] -reqwest.workspace = true -tokio.workspace = true -serde_json.workspace = true -cosmwasm-std.workspace = true -thiserror.workspace = true - -localic-std.workspace = true \ No newline at end of file diff --git a/local-interchain/rust/main/src/base.rs b/local-interchain/rust/main/src/base.rs deleted file mode 100644 index c320c5cde..000000000 --- a/local-interchain/rust/main/src/base.rs +++ /dev/null @@ -1,41 +0,0 @@ -use std::path; - -// Use clap to parse args in the future -pub const API_URL: &str = "http://127.0.0.1:8080"; - -/// local-interchain/rust directory -/// # Panics -/// -/// Will panic if the current directory path is not found. -#[must_use] -pub fn get_current_dir() -> path::PathBuf { - match std::env::current_dir() { - Ok(p) => p, - Err(e) => panic!("Could not get current dir: {e}"), - } -} - -/// local-interchain directory -/// # Panics -/// -/// Will panic if the `local_interchain` directory is not found in the parent path. -#[must_use] -pub fn get_local_interchain_dir() -> path::PathBuf { - let current_dir = get_current_dir(); - let Some(parent_dir) = current_dir.parent() else { panic!("Could not get parent dir") }; - parent_dir.to_path_buf() -} - -/// local-interchain/contracts directory -#[must_use] -pub fn get_contract_path() -> path::PathBuf { - get_local_interchain_dir().join("contracts") -} - -/// local-interchain/configs/contract.json file -#[must_use] -pub fn get_contract_cache_path() -> path::PathBuf { - get_local_interchain_dir() - .join("configs") - .join("contract.json") -} diff --git a/local-interchain/rust/main/src/main.rs b/local-interchain/rust/main/src/main.rs deleted file mode 100644 index 5c7bf4911..000000000 --- a/local-interchain/rust/main/src/main.rs +++ /dev/null @@ -1,314 +0,0 @@ -#![allow(dead_code, unused_must_use)] - -// Import base libraries -use cosmwasm_std::Coin; -use cosmwasm_std::Uint128; -use reqwest::blocking::Client; -use serde_json::json; - -// Import Local-Interchain std library methods -use localic_std::filesystem::get_files; -use localic_std::node::Chain; -use localic_std::polling::poll_for_start; -use localic_std::relayer::Relayer; -use localic_std::transactions::ChainRequestBuilder; - -// Import Local-Interchain SDK modules -use localic_std::modules::bank::{get_balance, get_total_supply, send}; -use localic_std::modules::cosmwasm::CosmWasm; - -// base helpers for this binary -pub mod base; -use base::{ - get_contract_cache_path, get_contract_path, get_current_dir, get_local_interchain_dir, API_URL, -}; - -// local-ic start juno_ibc -// cargo run --package localic-bin --bin localic-bin -fn main() { - poll_for_start(&Client::new(), API_URL, 300); - - let rb: ChainRequestBuilder = - match ChainRequestBuilder::new(API_URL.to_string(), "localjuno-1".to_string(), true) { - Ok(rb) => rb, - Err(err) => { - panic!("ChainRequestBuilder failed: {err:?}"); - } - }; - let node_a: Chain = Chain::new(&rb); - - let rb2: ChainRequestBuilder = - match ChainRequestBuilder::new(API_URL.to_string(), "localjuno-2".to_string(), true) { - Ok(rb) => rb, - Err(err) => { - panic!("ChainRequestBuilder failed: {err:?}"); - } - }; - - test_paths(&rb); - test_queries(&rb); - test_binary(&rb); - test_bank_send(&rb); - - test_ibc_contract_relaying(&node_a, &rb, &rb2); - test_node_information(&node_a); - test_node_actions(&node_a); -} - -fn test_ibc_contract_relaying(node: &Chain, rb1: &ChainRequestBuilder, rb2: &ChainRequestBuilder) { - // local-ic start juno_ibc - let file_path = get_contract_path().join("cw_ibc_example.wasm"); - let key1 = "acc0"; - let key2 = "second0"; - - let relayer = Relayer::new(rb2); - - let mut contract_a = CosmWasm::new(rb1); - let mut contract_b = CosmWasm::new(rb2); - - let c1_store = contract_a.store(key1, &file_path); - let c2_store = contract_b.store(key2, &file_path); - assert_eq!( - c1_store.unwrap_or_default(), - contract_a.code_id.unwrap_or_default() - ); - assert_eq!( - c2_store.unwrap_or_default(), - contract_b.code_id.unwrap_or_default() - ); - - let ca = contract_a.instantiate(key1, "{}", "contractA", None, ""); - let cb = contract_b.instantiate(key2, "{}", "contractB", None, ""); - println!("contract_a: {ca:?}"); - println!("contract_b: {cb:?}"); - - // example: manual relayer connection - // let wc = relayer.create_channel( - // "juno-ibc-1", - // format!("wasm.{}", &contract_a.contract_addr.as_ref().unwrap()).as_str(), - // format!("wasm.{}", &contract_b.contract_addr.as_ref().unwrap()).as_str(), - // "unordered", - // "counter-1", - // ); - - contract_a.create_wasm_connection( - &relayer, - "juno-ibc-1", - &contract_b, - "unordered", - "counter-1", - ); - - let channels = relayer.get_channels(rb1.chain_id.as_str()); - println!("channels: {channels:?}"); - - let channel_id = "channel-1"; - - // then execute on the contract - let res = contract_b.execute( - key2, - json!({"increment":{"channel":channel_id}}) - .to_string() - .as_str(), - "--gas-adjustment=3.0", - ); - println!("\ncw2.execute_contract: {res:?}"); - - // flush packets - println!( - "relayer.flush: {:?}", - relayer.flush("juno-ibc-1", channel_id) - ); - - let query_res = contract_a.query_value(&json!({"get_count":{"channel":channel_id}})); - println!("\nquery_res: {query_res:?}"); - assert_eq!(query_res, serde_json::json!({"data":{"count":1}})); - - // dump the contracts state to JSON - let height = node.get_height(); - let dump_res = node.dump_contract_state(&contract_a.contract_addr.as_ref().unwrap(), height); - println!("dump_res: {dump_res:?}"); -} - -fn test_node_actions(node: &Chain) { - let keyname = "abc"; - let words = "offer excite scare peanut rally speak suggest unit reflect whale cloth speak joy unusual wink session effort hidden angry envelope click race allow buffalo"; - let expected_addr = "juno1cp8wps50zemt3x5tn3sgqh3x93rlt8cw6tkgx4"; - - let res = node.recover_key(keyname, words); - println!("res: {res:?}"); - - let acc = node.account_key_bech_32("abc"); - println!("acc: {acc:?}"); - assert_eq!(acc.unwrap_or_default(), expected_addr); - - let res = node.overwrite_genesis_file(r#"{"test":{}}"#); - println!("res: {res:?}"); - node.get_genesis_file_content(); // verify this is updated - - // TODO: keep this disabled for now. The chain must already have a full node running to not err. - // let res = node.add_full_node(1); - // println!("res: {:?}", res); -} - -fn test_node_information(node: &Chain) { - let v = node.account_key_bech_32("acc0"); - assert_eq!( - v.unwrap_or_default(), - "juno1hj5fveer5cjtn4wd6wstzugjfdxzl0xps73ftl" - ); - - let v = node.account_key_bech_32("fake-key987"); - assert!(v.is_err()); - - node.get_chain_config(); - - assert!(node.get_name().starts_with("localjuno-1-val-0")); - node.get_container_id(); - node.get_host_name(); - node.get_genesis_file_content(); - node.get_home_dir(); - node.get_height(); - node.read_file("./config/app.toml"); - node.is_above_sdk_v47(); - node.has_command("genesis"); // false with sdk 45 - node.has_command("tx"); // every bin has this - let res = node.get_build_information(); // every bin has this - println!( - "res: {}", - res["cosmos_sdk_version"].as_str().unwrap_or_default() - ); - - // TODO: test: - // get_proposal(rb, "1"); -} - -fn test_paths(rb: &ChainRequestBuilder) { - println!("current_dir: {:?}", get_current_dir()); - println!("local_interchain_dir: {:?}", get_local_interchain_dir()); - println!("contract_path: {:?}", get_contract_path()); - println!("contract_json_path: {:?}", get_contract_cache_path()); - - // upload Makefile to the chain's home dir - let arb_file = get_current_dir().join("Makefile"); - match rb.upload_file(&arb_file, true) { - Ok(rb) => { - let res = match rb.send() { - Ok(r) => r, - Err(err) => { - panic!("upload_file failed on request send {err:?}"); - } - }; - let body = match res.text() { - Ok(body) => body, - Err(err) => { - panic!("upload_file failed on response body {err:?}"); - } - }; - println!("body: {body:?}"); - assert_eq!(body, "{\"success\":\"file uploaded to localjuno-1\",\"location\":\"/var/cosmos-chain/localjuno-1/Makefile\"}"); - } - Err(err) => { - panic!("upload_file failed {err:?}"); - } - }; - - let files = match get_files(rb, "/var/cosmos-chain/localjuno-1") { - Ok(files) => files, - Err(err) => { - panic!("get_files failed {err:?}"); - } - }; - - assert!(files.contains(&"Makefile".to_string())); - assert!(files.contains(&"config".to_string())); - assert!(files.contains(&"data".to_string())); - assert!(files.contains(&"keyring-test".to_string())); - println!("files: {files:?}"); -} - -fn test_bank_send(rb: &ChainRequestBuilder) { - let before_bal = get_balance(rb, "juno10r39fueph9fq7a6lgswu4zdsg8t3gxlq670lt0"); - - let res = send( - rb, - "acc0", - "juno10r39fueph9fq7a6lgswu4zdsg8t3gxlq670lt0", - &[Coin { - denom: "ujuno".to_string(), - amount: Uint128::new(5), - }], - &Coin { - denom: "ujuno".to_string(), - amount: Uint128::new(5000), - }, - ); - match res { - Ok(res) => { - println!("res: {res}"); - } - Err(err) => { - println!("err: {err}"); - } - } - - let after_amount = get_balance(rb, "juno10r39fueph9fq7a6lgswu4zdsg8t3gxlq670lt0"); - - println!("before: {before_bal:?}"); - println!("after: {after_amount:?}"); -} - -fn test_queries(rb: &ChainRequestBuilder) { - test_all_accounts(rb); - let c = get_total_supply(rb); - println!("total supply: {c:?}"); -} -fn test_binary(rb: &ChainRequestBuilder) { - rb.binary("config", false); - get_keyring_accounts(rb); - - let decoded = rb.decode_transaction("ClMKUQobL2Nvc21vcy5nb3YudjFiZXRhMS5Nc2dWb3RlEjIIpwISK2p1bm8xZGM3a2MyZzVrZ2wycmdmZHllZGZ6MDl1YTlwZWo1eDNsODc3ZzcYARJmClAKRgofL2Nvc21vcy5jcnlwdG8uc2VjcDI1NmsxLlB1YktleRIjCiECxjGMmYp4MlxxfFWi9x4u+jOleJVde3Cru+HnxAVUJmgSBAoCCH8YNBISCgwKBXVqdW5vEgMyMDQQofwEGkDPE4dCQ4zUh6LIB9wqNXDBx+nMKtg0tEGiIYEH8xlw4H8dDQQStgAe6xFO7I/oYVSWwa2d9qUjs9qyB8r+V0Gy", false); - println!("decoded: {decoded:?}"); -} - -fn test_all_accounts(rb: &ChainRequestBuilder) { - let res = rb.query("q auth accounts", false); - println!("res: {res}"); - - let Some(accounts) = res["accounts"].as_array() else { - println!("No accounts found."); - return; - }; - - for account in accounts.iter() { - let acc_type = account["@type"].as_str().unwrap_or_default(); - - let addr: &str = match acc_type { - // "/cosmos.auth.v1beta1.ModuleAccount" => account["base_account"]["address"] - "/cosmos.auth.v1beta1.ModuleAccount" => account.get("base_account").unwrap()["address"] - .as_str() - .unwrap_or_default(), - _ => account["address"].as_str().unwrap_or_default(), - }; - - println!("{acc_type}: {addr}"); - } -} - -fn get_keyring_accounts(rb: &ChainRequestBuilder) { - let accounts = rb.binary("keys list --keyring-backend=test", false); - - let addrs = accounts["addresses"].as_array(); - addrs.map_or_else( - || { - println!("No accounts found."); - }, - |addrs| { - for acc in addrs.iter() { - let name = acc["name"].as_str().unwrap_or_default(); - let address = acc["address"].as_str().unwrap_or_default(); - println!("Key '{name}': {address}"); - } - }, - ); -} diff --git a/local-interchain/ts/README.md b/local-interchain/ts/README.md deleted file mode 100644 index c4b831fc1..000000000 --- a/local-interchain/ts/README.md +++ /dev/null @@ -1,22 +0,0 @@ -# Typescript - -Using CosmJS, you can write e2e test on top of interchaintest / local-interchain - -## How to run - -```bash -# install local-ic if not already -cd local-interchain -make install - -# move into the typescript directory -cd ts - -npm i - -# starts a cosmoshub testnet on :26657 -local-ic start cosmoshub - -# runs a basic test -npm run start -``` \ No newline at end of file diff --git a/local-interchain/ts/package-lock.json b/local-interchain/ts/package-lock.json deleted file mode 100644 index 8fbf555c8..000000000 --- a/local-interchain/ts/package-lock.json +++ /dev/null @@ -1,1134 +0,0 @@ -{ - "name": "ts", - "lockfileVersion": 3, - "requires": true, - "packages": { - "": { - "dependencies": { - "@cosmjs/stargate": "^0.32.4" - }, - "devDependencies": { - "tsx": "^4.16.5", - "typescript": "^5.5.4" - } - }, - "node_modules/@confio/ics23": { - "version": "0.6.8", - "resolved": "https://registry.npmjs.org/@confio/ics23/-/ics23-0.6.8.tgz", - "integrity": "sha512-wB6uo+3A50m0sW/EWcU64xpV/8wShZ6bMTa7pF8eYsTrSkQA7oLUIJcs/wb8g4y2Oyq701BaGiO6n/ak5WXO1w==", - "dependencies": { - "@noble/hashes": "^1.0.0", - "protobufjs": "^6.8.8" - } - }, - "node_modules/@cosmjs/amino": { - "version": "0.32.4", - "resolved": "https://registry.npmjs.org/@cosmjs/amino/-/amino-0.32.4.tgz", - "integrity": "sha512-zKYOt6hPy8obIFtLie/xtygCkH9ZROiQ12UHfKsOkWaZfPQUvVbtgmu6R4Kn1tFLI/SRkw7eqhaogmW/3NYu/Q==", - "dependencies": { - "@cosmjs/crypto": "^0.32.4", - "@cosmjs/encoding": "^0.32.4", - "@cosmjs/math": "^0.32.4", - "@cosmjs/utils": "^0.32.4" - } - }, - "node_modules/@cosmjs/crypto": { - "version": "0.32.4", - "resolved": "https://registry.npmjs.org/@cosmjs/crypto/-/crypto-0.32.4.tgz", - "integrity": "sha512-zicjGU051LF1V9v7bp8p7ovq+VyC91xlaHdsFOTo2oVry3KQikp8L/81RkXmUIT8FxMwdx1T7DmFwVQikcSDIw==", - "dependencies": { - "@cosmjs/encoding": "^0.32.4", - "@cosmjs/math": "^0.32.4", - "@cosmjs/utils": "^0.32.4", - "@noble/hashes": "^1", - "bn.js": "^5.2.0", - "elliptic": "^6.5.4", - "libsodium-wrappers-sumo": "^0.7.11" - } - }, - "node_modules/@cosmjs/encoding": { - "version": "0.32.4", - "resolved": "https://registry.npmjs.org/@cosmjs/encoding/-/encoding-0.32.4.tgz", - "integrity": "sha512-tjvaEy6ZGxJchiizzTn7HVRiyTg1i4CObRRaTRPknm5EalE13SV+TCHq38gIDfyUeden4fCuaBVEdBR5+ti7Hw==", - "dependencies": { - "base64-js": "^1.3.0", - "bech32": "^1.1.4", - "readonly-date": "^1.0.0" - } - }, - "node_modules/@cosmjs/json-rpc": { - "version": "0.32.4", - "resolved": "https://registry.npmjs.org/@cosmjs/json-rpc/-/json-rpc-0.32.4.tgz", - "integrity": "sha512-/jt4mBl7nYzfJ2J/VJ+r19c92mUKF0Lt0JxM3MXEJl7wlwW5haHAWtzRujHkyYMXOwIR+gBqT2S0vntXVBRyhQ==", - "dependencies": { - "@cosmjs/stream": "^0.32.4", - "xstream": "^11.14.0" - } - }, - "node_modules/@cosmjs/math": { - "version": "0.32.4", - "resolved": "https://registry.npmjs.org/@cosmjs/math/-/math-0.32.4.tgz", - "integrity": "sha512-++dqq2TJkoB8zsPVYCvrt88oJWsy1vMOuSOKcdlnXuOA/ASheTJuYy4+oZlTQ3Fr8eALDLGGPhJI02W2HyAQaw==", - "dependencies": { - "bn.js": "^5.2.0" - } - }, - "node_modules/@cosmjs/proto-signing": { - "version": "0.32.4", - "resolved": "https://registry.npmjs.org/@cosmjs/proto-signing/-/proto-signing-0.32.4.tgz", - "integrity": "sha512-QdyQDbezvdRI4xxSlyM1rSVBO2st5sqtbEIl3IX03uJ7YiZIQHyv6vaHVf1V4mapusCqguiHJzm4N4gsFdLBbQ==", - "dependencies": { - "@cosmjs/amino": "^0.32.4", - "@cosmjs/crypto": "^0.32.4", - "@cosmjs/encoding": "^0.32.4", - "@cosmjs/math": "^0.32.4", - "@cosmjs/utils": "^0.32.4", - "cosmjs-types": "^0.9.0" - } - }, - "node_modules/@cosmjs/socket": { - "version": "0.32.4", - "resolved": "https://registry.npmjs.org/@cosmjs/socket/-/socket-0.32.4.tgz", - "integrity": "sha512-davcyYziBhkzfXQTu1l5NrpDYv0K9GekZCC9apBRvL1dvMc9F/ygM7iemHjUA+z8tJkxKxrt/YPjJ6XNHzLrkw==", - "dependencies": { - "@cosmjs/stream": "^0.32.4", - "isomorphic-ws": "^4.0.1", - "ws": "^7", - "xstream": "^11.14.0" - } - }, - "node_modules/@cosmjs/stargate": { - "version": "0.32.4", - "resolved": "https://registry.npmjs.org/@cosmjs/stargate/-/stargate-0.32.4.tgz", - "integrity": "sha512-usj08LxBSsPRq9sbpCeVdyLx2guEcOHfJS9mHGCLCXpdAPEIEQEtWLDpEUc0LEhWOx6+k/ChXTc5NpFkdrtGUQ==", - "dependencies": { - "@confio/ics23": "^0.6.8", - "@cosmjs/amino": "^0.32.4", - "@cosmjs/encoding": "^0.32.4", - "@cosmjs/math": "^0.32.4", - "@cosmjs/proto-signing": "^0.32.4", - "@cosmjs/stream": "^0.32.4", - "@cosmjs/tendermint-rpc": "^0.32.4", - "@cosmjs/utils": "^0.32.4", - "cosmjs-types": "^0.9.0", - "xstream": "^11.14.0" - } - }, - "node_modules/@cosmjs/stream": { - "version": "0.32.4", - "resolved": "https://registry.npmjs.org/@cosmjs/stream/-/stream-0.32.4.tgz", - "integrity": "sha512-Gih++NYHEiP+oyD4jNEUxU9antoC0pFSg+33Hpp0JlHwH0wXhtD3OOKnzSfDB7OIoEbrzLJUpEjOgpCp5Z+W3A==", - "dependencies": { - "xstream": "^11.14.0" - } - }, - "node_modules/@cosmjs/tendermint-rpc": { - "version": "0.32.4", - "resolved": "https://registry.npmjs.org/@cosmjs/tendermint-rpc/-/tendermint-rpc-0.32.4.tgz", - "integrity": "sha512-MWvUUno+4bCb/LmlMIErLypXxy7ckUuzEmpufYYYd9wgbdCXaTaO08SZzyFM5PI8UJ/0S2AmUrgWhldlbxO8mw==", - "dependencies": { - "@cosmjs/crypto": "^0.32.4", - "@cosmjs/encoding": "^0.32.4", - "@cosmjs/json-rpc": "^0.32.4", - "@cosmjs/math": "^0.32.4", - "@cosmjs/socket": "^0.32.4", - "@cosmjs/stream": "^0.32.4", - "@cosmjs/utils": "^0.32.4", - "axios": "^1.6.0", - "readonly-date": "^1.0.0", - "xstream": "^11.14.0" - } - }, - "node_modules/@cosmjs/utils": { - "version": "0.32.4", - "resolved": "https://registry.npmjs.org/@cosmjs/utils/-/utils-0.32.4.tgz", - "integrity": "sha512-D1Yc+Zy8oL/hkUkFUL/bwxvuDBzRGpc4cF7/SkdhxX4iHpSLgdOuTt1mhCh9+kl6NQREy9t7SYZ6xeW5gFe60w==" - }, - "node_modules/@esbuild/aix-ppc64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz", - "integrity": "sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==", - "cpu": [ - "ppc64" - ], - "dev": true, - "optional": true, - "os": [ - "aix" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/android-arm": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.21.5.tgz", - "integrity": "sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/android-arm64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz", - "integrity": "sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/android-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.21.5.tgz", - "integrity": "sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/darwin-arm64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz", - "integrity": "sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/darwin-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz", - "integrity": "sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/freebsd-arm64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz", - "integrity": "sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/freebsd-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz", - "integrity": "sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-arm": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz", - "integrity": "sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-arm64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz", - "integrity": "sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-ia32": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz", - "integrity": "sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-loong64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz", - "integrity": "sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==", - "cpu": [ - "loong64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-mips64el": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz", - "integrity": "sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==", - "cpu": [ - "mips64el" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-ppc64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz", - "integrity": "sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==", - "cpu": [ - "ppc64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-riscv64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz", - "integrity": "sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==", - "cpu": [ - "riscv64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-s390x": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz", - "integrity": "sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==", - "cpu": [ - "s390x" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz", - "integrity": "sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/netbsd-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz", - "integrity": "sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/openbsd-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz", - "integrity": "sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/sunos-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz", - "integrity": "sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "sunos" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/win32-arm64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz", - "integrity": "sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/win32-ia32": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz", - "integrity": "sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/win32-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz", - "integrity": "sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@noble/hashes": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.4.0.tgz", - "integrity": "sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==", - "engines": { - "node": ">= 16" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/@protobufjs/aspromise": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz", - "integrity": "sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==" - }, - "node_modules/@protobufjs/base64": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz", - "integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==" - }, - "node_modules/@protobufjs/codegen": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.4.tgz", - "integrity": "sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==" - }, - "node_modules/@protobufjs/eventemitter": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz", - "integrity": "sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==" - }, - "node_modules/@protobufjs/fetch": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.0.tgz", - "integrity": "sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==", - "dependencies": { - "@protobufjs/aspromise": "^1.1.1", - "@protobufjs/inquire": "^1.1.0" - } - }, - "node_modules/@protobufjs/float": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz", - "integrity": "sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==" - }, - "node_modules/@protobufjs/inquire": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.0.tgz", - "integrity": "sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==" - }, - "node_modules/@protobufjs/path": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz", - "integrity": "sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==" - }, - "node_modules/@protobufjs/pool": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz", - "integrity": "sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==" - }, - "node_modules/@protobufjs/utf8": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz", - "integrity": "sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==" - }, - "node_modules/@types/long": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/@types/long/-/long-4.0.2.tgz", - "integrity": "sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA==" - }, - "node_modules/@types/node": { - "version": "22.1.0", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.1.0.tgz", - "integrity": "sha512-AOmuRF0R2/5j1knA3c6G3HOk523Ga+l+ZXltX8SF1+5oqcXijjfTd8fY3XRZqSihEu9XhtQnKYLmkFaoxgsJHw==", - "dependencies": { - "undici-types": "~6.13.0" - } - }, - "node_modules/asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" - }, - "node_modules/axios": { - "version": "1.7.3", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.3.tgz", - "integrity": "sha512-Ar7ND9pU99eJ9GpoGQKhKf58GpUOgnzuaB7ueNQ5BMi0p+LZ5oaEnfF999fAArcTIBwXTCHAmGcHOZJaWPq9Nw==", - "dependencies": { - "follow-redirects": "^1.15.6", - "form-data": "^4.0.0", - "proxy-from-env": "^1.1.0" - } - }, - "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==", - "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==" - }, - "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==" - }, - "node_modules/brorand": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", - "integrity": "sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==" - }, - "node_modules/combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "dependencies": { - "delayed-stream": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/cosmjs-types": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/cosmjs-types/-/cosmjs-types-0.9.0.tgz", - "integrity": "sha512-MN/yUe6mkJwHnCFfsNPeCfXVhyxHYW6c/xDUzrSbBycYzw++XvWDMJArXp2pLdgD6FQ8DW79vkPjeNKVrXaHeQ==" - }, - "node_modules/define-data-property": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", - "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", - "dependencies": { - "es-define-property": "^1.0.0", - "es-errors": "^1.3.0", - "gopd": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/define-properties": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", - "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", - "dependencies": { - "define-data-property": "^1.0.1", - "has-property-descriptors": "^1.0.0", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/elliptic": { - "version": "6.5.6", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.6.tgz", - "integrity": "sha512-mpzdtpeCLuS3BmE3pO3Cpp5bbjlOPY2Q0PgoF+Od1XZrHLYI28Xe3ossCmYCQt11FQKEYd9+PF8jymTvtWJSHQ==", - "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==" - }, - "node_modules/es-define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", - "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", - "dependencies": { - "get-intrinsic": "^1.2.4" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-errors": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", - "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/esbuild": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz", - "integrity": "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==", - "dev": true, - "hasInstallScript": true, - "bin": { - "esbuild": "bin/esbuild" - }, - "engines": { - "node": ">=12" - }, - "optionalDependencies": { - "@esbuild/aix-ppc64": "0.21.5", - "@esbuild/android-arm": "0.21.5", - "@esbuild/android-arm64": "0.21.5", - "@esbuild/android-x64": "0.21.5", - "@esbuild/darwin-arm64": "0.21.5", - "@esbuild/darwin-x64": "0.21.5", - "@esbuild/freebsd-arm64": "0.21.5", - "@esbuild/freebsd-x64": "0.21.5", - "@esbuild/linux-arm": "0.21.5", - "@esbuild/linux-arm64": "0.21.5", - "@esbuild/linux-ia32": "0.21.5", - "@esbuild/linux-loong64": "0.21.5", - "@esbuild/linux-mips64el": "0.21.5", - "@esbuild/linux-ppc64": "0.21.5", - "@esbuild/linux-riscv64": "0.21.5", - "@esbuild/linux-s390x": "0.21.5", - "@esbuild/linux-x64": "0.21.5", - "@esbuild/netbsd-x64": "0.21.5", - "@esbuild/openbsd-x64": "0.21.5", - "@esbuild/sunos-x64": "0.21.5", - "@esbuild/win32-arm64": "0.21.5", - "@esbuild/win32-ia32": "0.21.5", - "@esbuild/win32-x64": "0.21.5" - } - }, - "node_modules/follow-redirects": { - "version": "1.15.6", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz", - "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==", - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/RubenVerborgh" - } - ], - "engines": { - "node": ">=4.0" - }, - "peerDependenciesMeta": { - "debug": { - "optional": true - } - } - }, - "node_modules/form-data": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", - "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/fsevents": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", - "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", - "dev": true, - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, - "node_modules/function-bind": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", - "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-intrinsic": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", - "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", - "dependencies": { - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", - "has-proto": "^1.0.1", - "has-symbols": "^1.0.3", - "hasown": "^2.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-tsconfig": { - "version": "4.7.6", - "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.7.6.tgz", - "integrity": "sha512-ZAqrLlu18NbDdRaHq+AKXzAmqIUPswPWKUchfytdAjiRFnCe5ojG2bstg6mRiZabkKfCoL/e98pbBELIV/YCeA==", - "dev": true, - "dependencies": { - "resolve-pkg-maps": "^1.0.0" - }, - "funding": { - "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" - } - }, - "node_modules/globalthis": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", - "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", - "dependencies": { - "define-properties": "^1.2.1", - "gopd": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/gopd": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", - "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", - "dependencies": { - "get-intrinsic": "^1.1.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-property-descriptors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", - "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", - "dependencies": { - "es-define-property": "^1.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-proto": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", - "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "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==", - "dependencies": { - "inherits": "^2.0.3", - "minimalistic-assert": "^1.0.1" - } - }, - "node_modules/hasown": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", - "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", - "dependencies": { - "function-bind": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "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==", - "dependencies": { - "hash.js": "^1.0.3", - "minimalistic-assert": "^1.0.0", - "minimalistic-crypto-utils": "^1.0.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==" - }, - "node_modules/isomorphic-ws": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/isomorphic-ws/-/isomorphic-ws-4.0.1.tgz", - "integrity": "sha512-BhBvN2MBpWTaSHdWRb/bwdZJ1WaehQ2L1KngkCkfLUGF0mAWAT1sQUQacEmQ0jXkFw/czDXPNQSL5u2/Krsz1w==", - "peerDependencies": { - "ws": "*" - } - }, - "node_modules/libsodium-sumo": { - "version": "0.7.14", - "resolved": "https://registry.npmjs.org/libsodium-sumo/-/libsodium-sumo-0.7.14.tgz", - "integrity": "sha512-2nDge6qlAjcwyslAhWfVumlkeSNK5+WCfKa2/VEq9prvlT5vP2FR0m0o5hmKaYqfsZ4TQVj5czQsimZvXDB1CQ==" - }, - "node_modules/libsodium-wrappers-sumo": { - "version": "0.7.14", - "resolved": "https://registry.npmjs.org/libsodium-wrappers-sumo/-/libsodium-wrappers-sumo-0.7.14.tgz", - "integrity": "sha512-0lm7ZwN5a95J2yUi8R1rgQeeaVDIWnvNzgVmXmZswis4mC+bQtbDrB+QpJlL4qklaKx3hVpJjoc6ubzJFiv64Q==", - "dependencies": { - "libsodium-sumo": "^0.7.14" - } - }, - "node_modules/long": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz", - "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==" - }, - "node_modules/mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "dependencies": { - "mime-db": "1.52.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "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==" - }, - "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==" - }, - "node_modules/object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/protobufjs": { - "version": "6.11.4", - "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-6.11.4.tgz", - "integrity": "sha512-5kQWPaJHi1WoCpjTGszzQ32PG2F4+wRY6BmAT4Vfw56Q2FZ4YZzK20xUYQH4YkfehY1e6QSICrJquM6xXZNcrw==", - "hasInstallScript": true, - "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" - }, - "bin": { - "pbjs": "bin/pbjs", - "pbts": "bin/pbts" - } - }, - "node_modules/proxy-from-env": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", - "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" - }, - "node_modules/readonly-date": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/readonly-date/-/readonly-date-1.0.0.tgz", - "integrity": "sha512-tMKIV7hlk0h4mO3JTmmVuIlJVXjKk3Sep9Bf5OH0O+758ruuVkUy2J9SttDLm91IEX/WHlXPSpxMGjPj4beMIQ==" - }, - "node_modules/resolve-pkg-maps": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz", - "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==", - "dev": true, - "funding": { - "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1" - } - }, - "node_modules/symbol-observable": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-2.0.3.tgz", - "integrity": "sha512-sQV7phh2WCYAn81oAkakC5qjq2Ml0g8ozqz03wOGnx9dDlG1de6yrF+0RAzSJD8fPUow3PTSMf2SAbOGxb93BA==", - "engines": { - "node": ">=0.10" - } - }, - "node_modules/tsx": { - "version": "4.16.5", - "resolved": "https://registry.npmjs.org/tsx/-/tsx-4.16.5.tgz", - "integrity": "sha512-ArsiAQHEW2iGaqZ8fTA1nX0a+lN5mNTyuGRRO6OW3H/Yno1y9/t1f9YOI1Cfoqz63VAthn++ZYcbDP7jPflc+A==", - "dev": true, - "dependencies": { - "esbuild": "~0.21.5", - "get-tsconfig": "^4.7.5" - }, - "bin": { - "tsx": "dist/cli.mjs" - }, - "engines": { - "node": ">=18.0.0" - }, - "optionalDependencies": { - "fsevents": "~2.3.3" - } - }, - "node_modules/typescript": { - "version": "5.5.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.5.4.tgz", - "integrity": "sha512-Mtq29sKDAEYP7aljRgtPOpTvOfbwRWlS6dPRzwjdE+C0R4brX/GUyhHSecbHMFLNBLcJIPt9nl9yG5TZ1weH+Q==", - "dev": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=14.17" - } - }, - "node_modules/undici-types": { - "version": "6.13.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.13.0.tgz", - "integrity": "sha512-xtFJHudx8S2DSoujjMd1WeWvn7KKWFRESZTMeL1RptAYERu29D6jphMjjY+vn96jvN3kVPDNxU/E13VTaXj6jg==" - }, - "node_modules/ws": { - "version": "7.5.10", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz", - "integrity": "sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==", - "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/xstream": { - "version": "11.14.0", - "resolved": "https://registry.npmjs.org/xstream/-/xstream-11.14.0.tgz", - "integrity": "sha512-1bLb+kKKtKPbgTK6i/BaoAn03g47PpFstlbe1BA+y3pNS/LfvcaghS5BFf9+EE1J+KwSQsEpfJvFN5GqFtiNmw==", - "dependencies": { - "globalthis": "^1.0.1", - "symbol-observable": "^2.0.3" - } - } - } -} diff --git a/local-interchain/ts/package.json b/local-interchain/ts/package.json deleted file mode 100644 index 8ac8d9d8e..000000000 --- a/local-interchain/ts/package.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "devDependencies": { - "tsx": "^4.16.5", - "typescript": "^5.5.4" - }, - "scripts": { - "testnet": "local-ic start juno_ibc", - "start": "npx tsx src/index.ts" - }, - "dependencies": { - "@cosmjs/stargate": "^0.32.4" - } -} diff --git a/local-interchain/ts/src/driver.ts b/local-interchain/ts/src/driver.ts deleted file mode 100644 index 88927672e..000000000 --- a/local-interchain/ts/src/driver.ts +++ /dev/null @@ -1,175 +0,0 @@ -export class Chain { - api: string; - chainID: string; - - // api is the local-interchain API address (:8080 by default) - constructor(api: string, chainID: string) { - this.api = api; - this.chainID = chainID; - - if(!api || !chainID) { - throw new Error("API or chainID not provided"); - } - - if (!api.startsWith("http")) { - throw new Error("API must be a valid http address"); - } - } - - // generalized makeRequest function to perform actions on the API - async makeRequest(action: string, command: string, isJSON?: boolean): Promise { - return makeRequest(this.api, this.chainID, action, command, isJSON); - } - - // perform a query command on the application daemon - async query(command: string, isJSON?: boolean): Promise { - return makeRequest(this.api, this.chainID, "query", command, isJSON) - } - - // execute a binary command within the container (i.e. the content after appd in the command) - async binary(command: string, isJSON?: boolean): Promise { - return makeRequest(this.api, this.chainID, "bin", command, isJSON) - } - - // execute a shell command within the container - async shell_exec(command: string, isJSON?: boolean): Promise { - return makeRequest(this.api, this.chainID, "exec", command, isJSON) - } - - // === RELAYER === - async relayer_stop(): Promise { - return makeRequest(this.api, this.chainID, "stop-relayer", "", true) - } - async relayer_start(): Promise { - return makeRequest(this.api, this.chainID, "start-relayer", "", true) - } - async relayer_exec(command: string, isJSON?: boolean): Promise { - return makeRequest(this.api, this.chainID, "relayer-exec", command, isJSON) - } - async relayer_get_channels(): Promise { - return makeRequest(this.api, this.chainID, "get_channels", "", true) - } - - // === COSMWASM === - async wasmStoreFile(absFilePath: string, keyName: string): Promise { - return storeFile(this.api, this.chainID, absFilePath, keyName); - } - - // === OTHER === - async storeFile(absFilePath: string): Promise { - return storeFile(this.api, this.chainID, absFilePath); - } - - async faucet(address: string, amount: number | string): Promise { - if (typeof amount === "string") { - amount = parseInt(amount); - } - - return makeRequest(this.api, this.chainID, "faucet", `amount=${amount};address=${address}`, true) - } - - async getPeer(): Promise { - return makeInfoRequest(this.api, this.chainID, "peer", false); - } - - async recoverKey(keyName: string, mnemonic: string | string[]): Promise { - if (Array.isArray(mnemonic)) { - mnemonic = mnemonic.join(" "); - } - - return makeRequest(this.api, this.chainID, "recover-key", `keyname=${keyName};mnemonic=${mnemonic}`, true) - } - - async addFullNode(amount: string | number): Promise { - if (typeof amount === "string") { - amount = parseInt(amount); - } - return makeRequest(this.api, this.chainID, "add-full-nodes", `amount=${amount}`, true) - } - - async killAll(): Promise { - return makeRequest(this.api, this.chainID, "kill-all", "", true) - } -} - -// startup -// every 5 seconds, try and poll if the RPCAddr is up. After pollingLimit, exit. -export async function pollForStart(addr: string, maxRetriesLimit: number) { - let tries = 0; - while (tries < maxRetriesLimit) { - tries++; - try { - await fetch(addr); - console.log(`${addr} is up. Starting...`); - break; - } catch (err) { - console.log(`${addr} is not up. Trying again in 5 seconds...`); - await new Promise((r) => setTimeout(r, 5000)); - } - } -} - -export async function makeRequest(api: string, chainID: string, action: string, command: string, isJSON: boolean = true): Promise { - let resp = await fetch(api, { - method: 'POST', - headers: { - 'Content-Type': 'application/json' - }, - body: JSON.stringify({ - 'chain_id': chainID, - 'action': action, - 'cmd': command - }) - }); - - if (isJSON) { - return await resp.json(); - } - return await resp.text(); -} - -// set keyName if you are storing a cosmwasm contract. Else, leave it blank. -export async function storeFile(api: string, chainID: string, absFilePath: string, keyName?: string): Promise { - const isCosmWasm = keyName && keyName.length > 0; - - if (!api.endsWith("/")) { - api = api + "/"; - } - api = api + "upload"; - - let headers: any = { - 'Content-Type': 'application/json', - } - if (isCosmWasm) { - headers['Upload-Type'] = 'cosmwasm'; - } - - let body: any = { - 'chain_id': chainID, - 'file_path': absFilePath, - } - if (isCosmWasm) { - body['key_name'] = keyName; - } - - let resp = await fetch(api, { - method: 'POST', - headers: headers, - body: JSON.stringify(body) - }); - - return await resp.json(); -} - -export async function makeInfoRequest(api: string, chainID: string, request: string, isJSON: boolean = true): Promise { - if (!api.endsWith("/info")) { - api = api + "/info"; - } - - let resp = await fetch(`${api}?chain_id=${chainID}&request=${request}`); - - if (isJSON) { - return await resp.json(); - } - return await resp.text(); -} \ No newline at end of file diff --git a/local-interchain/ts/src/index.ts b/local-interchain/ts/src/index.ts deleted file mode 100644 index 4c5811d93..000000000 --- a/local-interchain/ts/src/index.ts +++ /dev/null @@ -1,195 +0,0 @@ -import { SigningStargateClient, SigningStargateClientOptions, GasPrice } from '@cosmjs/stargate'; -import { DirectSecp256k1HdWallet } from "@cosmjs/proto-signing"; -import path from 'path'; - -import { Chain, pollForStart, makeRequest } from './driver'; - -// local-ic start juno_ibc - -// juno1hj5fveer5cjtn4wd6wstzugjfdxzl0xps73ftl -const Mnemonic = "decorate bright ozone fork gallery riot bus exhaust worth way bone indoor calm squirrel merry zero scheme cotton until shop any excess stage laundry" -const RPCAddr = "http://127.0.0.1:26657" -const WalletPrefix = "juno" -const Denom = "ujuno" - - // local-interchain -const APIAddr = "http://127.0.0.1:8080" -const ChainID = "localjuno-1" - -// Files -const localInterchainDir = path.dirname(path.dirname(__dirname)) -const contract = path.join(localInterchainDir, "contracts", "cw_ibc_example.wasm") -const randomFile = path.join(localInterchainDir, "README.md") - -// npm run start -async function main() { - // Poll for the RPC address to be up - await pollForStart(APIAddr, 25); - - await localICInteractions(new Chain(APIAddr, ChainID), contract, randomFile); - - await CosmJSInteractions(); - - console.log("Test successful"); -} - -async function localICInteractions(chain: Chain, abcWasmFileLoc: string, absRandomFileLoc: string): Promise { - await chain.binary("config keyring-backend test") - await chain.binary("config output json") - - // verify query request 2 different ways - let total = await chain.makeRequest("query", "bank total") - console.log("total", total) - exitIfEmpty(total, "total") - - let total2 = await chain.query("bank total") - console.log("total2", total2) - exitIfEmpty(total2, "total2") - - if (total.supply[0].denom !== total2.supply[0].denom) { - console.log("Query results are not the same. Exiting..."); - process.exit(1); - } - - if (parseInt(total.supply[0].amount) === 0) { - console.log("bank total is 0. Exiting..."); - process.exit(1); - } - - // faucet - const faucetToAddr = "juno1hj5fveer5cjtn4wd6wstzugjfdxzl0xps73ftl" - let beforeBal = await chain.query(`bank balances ${faucetToAddr}`) - let prevBal: number = parseInt(beforeBal.balances[0].amount) - - const faucetAmt = 787 - let faucet = await chain.faucet(faucetToAddr, faucetAmt) - console.log("faucet", faucet) - - let newBal = await chain.query(`bank balances ${faucetToAddr}`) - if (parseInt(newBal.balances[0].amount) !== prevBal + faucetAmt) { - console.log("Faucet failed. Exiting..."); - process.exit(1); - } - - // CosmWasm - console.log("Storing wasm file...") - let cwRes = await chain.wasmStoreFile(abcWasmFileLoc, "faucet") - console.log("cwRes", cwRes) - exitIfEmpty(cwRes.code_id, "codeID") - - // Random file - let miscFile = await chain.storeFile(absRandomFileLoc) - console.log("miscFile", miscFile) - let dockerFileLoc = miscFile.location - - // Verify file contents are there - let readFile = await chain.shell_exec(`cat ${dockerFileLoc}`, false) - exitIfEmpty(readFile, "readFile") - - // get peer - let peer = await chain.getPeer() - console.log("peer", peer) - exitIfEmpty(peer, "peer") - - // relayer channels - let channels = await chain.relayer_get_channels() - console.log("channels", channels) - if (channels.length === 0) { - console.log("No channels found. Exiting..."); - process.exit(1); - } - - // relayer exec - let rlyBal = await chain.relayer_exec(`rly q balance ${ChainID} --output=json`) - console.log("rlyBal", rlyBal) - exitIfEmpty(rlyBal, "rlyBal") - - let recoverKey = await chain.recoverKey("mynewkey", - "abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon art", - ); - console.log("recoverKey", recoverKey) - exitIfEmpty(recoverKey, "recoverKey") - - // query key address with bin - let key = await chain.binary("keys show mynewkey -a", false) - console.log("key", key) - exitIfEmpty(key, "key") - - // Add full node - let addNode = await chain.addFullNode(1) - console.log("addNode", addNode) - exitIfEmpty(addNode, "addNode") -} - -async function CosmJSInteractions(): Promise { - // create a wallet out of a mnemonic - const wallet = await DirectSecp256k1HdWallet.fromMnemonic(Mnemonic, { prefix: WalletPrefix }); - const [account] = await wallet.getAccounts(); - - // setup connection to the network with signing for said wallet - // if you only need queries, you can use SigningStargateClient.connect(...) - const options: SigningStargateClientOptions = { - gasPrice: GasPrice.fromString("0.0025"+Denom), - }; - - const client = await SigningStargateClient.connectWithSigner(RPCAddr, wallet, options).then((client) => { - console.log(`Successfully connected to node ${RPCAddr}`); - return client; - }).catch((err) => { - if (err.toString().includes("fetch failed")) { - console.log(`Error: ensure the testnet is running and the RPC address (${RPCAddr}) is correct.`); - process.exit(1); - } else { - console.log(err); - } - - return undefined; - }); - - if (client === undefined) { - console.log("SigningStargateClient is undefined. Exiting..."); - process.exit(1); - } - - // Grab the accounts balance - const balance = await client.getBalance(account.address, Denom) - console.log(`${account.address} balance: ${balance.amount}${Denom}`); - - // Validate the account has a balance > 0. - if (parseInt(balance.amount) === 0) { - console.log("Account balance is 0. Exiting..."); - process.exit(1); - } - - // send a token to itself - const sendAmount = { - denom: Denom, - amount: "1", - }; - - const recipient = account.address; - const sender = account.address; - - console.log(`Sending ${sendAmount.amount}${sendAmount.denom} from ${sender} to ${recipient}`); - - const result = await client.sendTokens(sender, recipient, [sendAmount], 1000, "my testing memo"); - - console.log(`Sent. Transaction hash: ${result.transactionHash} at height: ${result?.height}`); - - const tx = await client.getTx(result.transactionHash); - console.log(`Transaction: code:${tx?.code}, rawLog: ${tx?.rawLog}`); - - if (tx?.code !== 0) { - console.log("Transaction failed. Exiting..."); - process.exit(1); - } -} - -export function exitIfEmpty(data: any, name: string) { - if (!data || data === "") { - console.log(`${name} is empty. Exiting...`); - process.exit(1); - } -} - -main(); \ No newline at end of file diff --git a/local-interchain/ts/tsconfig.json b/local-interchain/ts/tsconfig.json deleted file mode 100644 index 8bb6097f8..000000000 --- a/local-interchain/ts/tsconfig.json +++ /dev/null @@ -1,108 +0,0 @@ -{ - "compilerOptions": { - /* Visit https://aka.ms/tsconfig to read more about this file */ - - /* Projects */ - // "incremental": true, /* Save .tsbuildinfo files to allow for incremental compilation of projects. */ - // "composite": true, /* Enable constraints that allow a TypeScript project to be used with project references. */ - // "tsBuildInfoFile": "./.tsbuildinfo", /* Specify the path to .tsbuildinfo incremental compilation file. */ - // "disableSourceOfProjectReferenceRedirect": true, /* Disable preferring source files instead of declaration files when referencing composite projects. */ - // "disableSolutionSearching": true, /* Opt a project out of multi-project reference checking when editing. */ - // "disableReferencedProjectLoad": true, /* Reduce the number of projects loaded automatically by TypeScript. */ - - /* Language and Environment */ - "target": "es2016", /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */ - // "lib": [], /* Specify a set of bundled library declaration files that describe the target runtime environment. */ - // "jsx": "preserve", /* Specify what JSX code is generated. */ - // "experimentalDecorators": true, /* Enable experimental support for legacy experimental decorators. */ - // "emitDecoratorMetadata": true, /* Emit design-type metadata for decorated declarations in source files. */ - // "jsxFactory": "", /* Specify the JSX factory function used when targeting React JSX emit, e.g. 'React.createElement' or 'h'. */ - // "jsxFragmentFactory": "", /* Specify the JSX Fragment reference used for fragments when targeting React JSX emit e.g. 'React.Fragment' or 'Fragment'. */ - // "jsxImportSource": "", /* Specify module specifier used to import the JSX factory functions when using 'jsx: react-jsx*'. */ - // "reactNamespace": "", /* Specify the object invoked for 'createElement'. This only applies when targeting 'react' JSX emit. */ - // "noLib": true, /* Disable including any library files, including the default lib.d.ts. */ - // "useDefineForClassFields": true, /* Emit ECMAScript-standard-compliant class fields. */ - // "moduleDetection": "auto", /* Control what method is used to detect module-format JS files. */ - - /* Modules */ - "module": "commonjs", /* Specify what module code is generated. */ - // "rootDir": "./", /* Specify the root folder within your source files. */ - // "moduleResolution": "node10", /* Specify how TypeScript looks up a file from a given module specifier. */ - // "baseUrl": "./", /* Specify the base directory to resolve non-relative module names. */ - // "paths": {}, /* Specify a set of entries that re-map imports to additional lookup locations. */ - // "rootDirs": [], /* Allow multiple folders to be treated as one when resolving modules. */ - // "typeRoots": [], /* Specify multiple folders that act like './node_modules/@types'. */ - // "types": [], /* Specify type package names to be included without being referenced in a source file. */ - // "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */ - // "moduleSuffixes": [], /* List of file name suffixes to search when resolving a module. */ - // "allowImportingTsExtensions": true, /* Allow imports to include TypeScript file extensions. Requires '--moduleResolution bundler' and either '--noEmit' or '--emitDeclarationOnly' to be set. */ - // "resolvePackageJsonExports": true, /* Use the package.json 'exports' field when resolving package imports. */ - // "resolvePackageJsonImports": true, /* Use the package.json 'imports' field when resolving imports. */ - // "customConditions": [], /* Conditions to set in addition to the resolver-specific defaults when resolving imports. */ - // "resolveJsonModule": true, /* Enable importing .json files. */ - // "allowArbitraryExtensions": true, /* Enable importing files with any extension, provided a declaration file is present. */ - // "noResolve": true, /* Disallow 'import's, 'require's or ''s from expanding the number of files TypeScript should add to a project. */ - - /* JavaScript Support */ - // "allowJs": true, /* Allow JavaScript files to be a part of your program. Use the 'checkJS' option to get errors from these files. */ - // "checkJs": true, /* Enable error reporting in type-checked JavaScript files. */ - // "maxNodeModuleJsDepth": 1, /* Specify the maximum folder depth used for checking JavaScript files from 'node_modules'. Only applicable with 'allowJs'. */ - - /* Emit */ - // "declaration": true, /* Generate .d.ts files from TypeScript and JavaScript files in your project. */ - // "declarationMap": true, /* Create sourcemaps for d.ts files. */ - // "emitDeclarationOnly": true, /* Only output d.ts files and not JavaScript files. */ - // "sourceMap": true, /* Create source map files for emitted JavaScript files. */ - // "inlineSourceMap": true, /* Include sourcemap files inside the emitted JavaScript. */ - // "outFile": "./", /* Specify a file that bundles all outputs into one JavaScript file. If 'declaration' is true, also designates a file that bundles all .d.ts output. */ - // "outDir": "./", /* Specify an output folder for all emitted files. */ - // "removeComments": true, /* Disable emitting comments. */ - // "noEmit": true, /* Disable emitting files from a compilation. */ - // "importHelpers": true, /* Allow importing helper functions from tslib once per project, instead of including them per-file. */ - // "downlevelIteration": true, /* Emit more compliant, but verbose and less performant JavaScript for iteration. */ - // "sourceRoot": "", /* Specify the root path for debuggers to find the reference source code. */ - // "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */ - // "inlineSources": true, /* Include source code in the sourcemaps inside the emitted JavaScript. */ - // "emitBOM": true, /* Emit a UTF-8 Byte Order Mark (BOM) in the beginning of output files. */ - // "newLine": "crlf", /* Set the newline character for emitting files. */ - // "stripInternal": true, /* Disable emitting declarations that have '@internal' in their JSDoc comments. */ - // "noEmitHelpers": true, /* Disable generating custom helper functions like '__extends' in compiled output. */ - // "noEmitOnError": true, /* Disable emitting files if any type checking errors are reported. */ - // "preserveConstEnums": true, /* Disable erasing 'const enum' declarations in generated code. */ - // "declarationDir": "./", /* Specify the output directory for generated declaration files. */ - - /* Interop Constraints */ - // "isolatedModules": true, /* Ensure that each file can be safely transpiled without relying on other imports. */ - // "verbatimModuleSyntax": true, /* Do not transform or elide any imports or exports not marked as type-only, ensuring they are written in the output file's format based on the 'module' setting. */ - // "isolatedDeclarations": true, /* Require sufficient annotation on exports so other tools can trivially generate declaration files. */ - // "allowSyntheticDefaultImports": true, /* Allow 'import x from y' when a module doesn't have a default export. */ - "esModuleInterop": true, /* Emit additional JavaScript to ease support for importing CommonJS modules. This enables 'allowSyntheticDefaultImports' for type compatibility. */ - // "preserveSymlinks": true, /* Disable resolving symlinks to their realpath. This correlates to the same flag in node. */ - "forceConsistentCasingInFileNames": true, /* Ensure that casing is correct in imports. */ - - /* Type Checking */ - "strict": true, /* Enable all strict type-checking options. */ - // "noImplicitAny": true, /* Enable error reporting for expressions and declarations with an implied 'any' type. */ - // "strictNullChecks": true, /* When type checking, take into account 'null' and 'undefined'. */ - // "strictFunctionTypes": true, /* When assigning functions, check to ensure parameters and the return values are subtype-compatible. */ - // "strictBindCallApply": true, /* Check that the arguments for 'bind', 'call', and 'apply' methods match the original function. */ - // "strictPropertyInitialization": true, /* Check for class properties that are declared but not set in the constructor. */ - // "noImplicitThis": true, /* Enable error reporting when 'this' is given the type 'any'. */ - // "useUnknownInCatchVariables": true, /* Default catch clause variables as 'unknown' instead of 'any'. */ - // "alwaysStrict": true, /* Ensure 'use strict' is always emitted. */ - // "noUnusedLocals": true, /* Enable error reporting when local variables aren't read. */ - // "noUnusedParameters": true, /* Raise an error when a function parameter isn't read. */ - // "exactOptionalPropertyTypes": true, /* Interpret optional property types as written, rather than adding 'undefined'. */ - // "noImplicitReturns": true, /* Enable error reporting for codepaths that do not explicitly return in a function. */ - // "noFallthroughCasesInSwitch": true, /* Enable error reporting for fallthrough cases in switch statements. */ - // "noUncheckedIndexedAccess": true, /* Add 'undefined' to a type when accessed using an index. */ - // "noImplicitOverride": true, /* Ensure overriding members in derived classes are marked with an override modifier. */ - // "noPropertyAccessFromIndexSignature": true, /* Enforces using indexed accessors for keys declared using an indexed type. */ - // "allowUnusedLabels": true, /* Disable error reporting for unused labels. */ - // "allowUnreachableCode": true, /* Disable error reporting for unreachable code. */ - - /* Completeness */ - // "skipDefaultLibCheck": true, /* Skip type checking .d.ts files that are included with TypeScript. */ - "skipLibCheck": true /* Skip type checking all .d.ts files. */ - } -} From e05ccd88980e0f2d7402260ad8f9a48c881b95f0 Mon Sep 17 00:00:00 2001 From: mmsqe Date: Fri, 24 Jan 2025 13:13:40 +0800 Subject: [PATCH 03/10] replace interchain-security --- chain/cosmos/chain_node.go | 3 +-- chain/cosmos/codec.go | 2 -- chain/cosmos/cosmos_chain.go | 4 +--- chain/cosmos/ics.go | 31 +++++++++++++++++++++++++++++-- go.mod | 2 -- go.sum | 6 ------ 6 files changed, 31 insertions(+), 17 deletions(-) diff --git a/chain/cosmos/chain_node.go b/chain/cosmos/chain_node.go index 49a6ca2ff..f0549f0c9 100644 --- a/chain/cosmos/chain_node.go +++ b/chain/cosmos/chain_node.go @@ -28,7 +28,6 @@ import ( "google.golang.org/grpc/credentials/insecure" icatypes "github.com/cosmos/ibc-go/v8/modules/apps/27-interchain-accounts/types" - ccvclient "github.com/cosmos/interchain-security/v5/x/ccv/provider/client" "github.com/cosmos/cosmos-sdk/client" "github.com/cosmos/cosmos-sdk/codec" @@ -887,7 +886,7 @@ func (tn *ChainNode) SendIBCTransfer( return tn.ExecTx(ctx, keyName, command...) } -func (tn *ChainNode) ConsumerAdditionProposal(ctx context.Context, keyName string, prop ccvclient.ConsumerAdditionProposalJSON) (string, error) { +func (tn *ChainNode) ConsumerAdditionProposal(ctx context.Context, keyName string, prop ConsumerAdditionProposalJSON) (string, error) { propBz, err := json.Marshal(prop) if err != nil { return "", err diff --git a/chain/cosmos/codec.go b/chain/cosmos/codec.go index 1255ae527..9f278f6bc 100644 --- a/chain/cosmos/codec.go +++ b/chain/cosmos/codec.go @@ -7,7 +7,6 @@ import ( transfer "github.com/cosmos/ibc-go/v8/modules/apps/transfer" ibccore "github.com/cosmos/ibc-go/v8/modules/core" ibctm "github.com/cosmos/ibc-go/v8/modules/light-clients/07-tendermint" - ccvprovider "github.com/cosmos/interchain-security/v5/x/ccv/provider" "github.com/cosmos/cosmos-sdk/codec" codectypes "github.com/cosmos/cosmos-sdk/codec/types" @@ -53,7 +52,6 @@ func DefaultEncoding() testutil.TestEncodingConfig { ibccore.AppModuleBasic{}, ibctm.AppModuleBasic{}, ibcwasm.AppModuleBasic{}, - ccvprovider.AppModuleBasic{}, ) } diff --git a/chain/cosmos/cosmos_chain.go b/chain/cosmos/cosmos_chain.go index 3fd9ed8e7..2bdc6fe8e 100644 --- a/chain/cosmos/cosmos_chain.go +++ b/chain/cosmos/cosmos_chain.go @@ -23,7 +23,6 @@ import ( clienttypes "github.com/cosmos/ibc-go/v8/modules/core/02-client/types" // nolint:staticcheck chanTypes "github.com/cosmos/ibc-go/v8/modules/core/04-channel/types" - ccvclient "github.com/cosmos/interchain-security/v5/x/ccv/provider/client" "github.com/cosmos/cosmos-sdk/codec" codectypes "github.com/cosmos/cosmos-sdk/codec/types" @@ -34,7 +33,6 @@ import ( authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" govtypes "github.com/cosmos/cosmos-sdk/x/gov/types" paramsutils "github.com/cosmos/cosmos-sdk/x/params/client/utils" - "github.com/strangelove-ventures/interchaintest/v9/blockdb" wasmtypes "github.com/strangelove-ventures/interchaintest/v9/chain/cosmos/08-wasm-types" "github.com/strangelove-ventures/interchaintest/v9/chain/internal/tendermint" @@ -513,7 +511,7 @@ func (c *CosmosChain) QueryBankMetadata(ctx context.Context, denom string) (*Ban } // ConsumerAdditionProposal submits a legacy governance proposal to add a consumer to the chain. -func (c *CosmosChain) ConsumerAdditionProposal(ctx context.Context, keyName string, prop ccvclient.ConsumerAdditionProposalJSON) (tx TxProposal, _ error) { +func (c *CosmosChain) ConsumerAdditionProposal(ctx context.Context, keyName string, prop ConsumerAdditionProposalJSON) (tx TxProposal, _ error) { txHash, err := c.GetFullNode().ConsumerAdditionProposal(ctx, keyName, prop) if err != nil { return tx, fmt.Errorf("failed to submit consumer addition proposal: %w", err) diff --git a/chain/cosmos/ics.go b/chain/cosmos/ics.go index 449a36546..4812a7703 100644 --- a/chain/cosmos/ics.go +++ b/chain/cosmos/ics.go @@ -20,7 +20,6 @@ import ( sdkmath "cosmossdk.io/math" clienttypes "github.com/cosmos/ibc-go/v8/modules/core/02-client/types" // nolint:staticcheck - ccvclient "github.com/cosmos/interchain-security/v5/x/ccv/provider/client" "github.com/cosmos/cosmos-sdk/types" govv1beta1 "github.com/cosmos/cosmos-sdk/x/gov/types/v1beta1" @@ -37,6 +36,34 @@ const ( icsVer400 = "v4.0.0" ) +// https://github.com/cosmos/interchain-security/blob/v5.1.1/x/ccv/provider/client/legacy_proposals.go +// may change with permissionless ICS. +type ConsumerAdditionProposalJSON struct { + Title string `json:"title"` + Summary string `json:"summary"` + ChainId string `json:"chain_id"` + InitialHeight clienttypes.Height `json:"initial_height"` + GenesisHash []byte `json:"genesis_hash"` + BinaryHash []byte `json:"binary_hash"` + SpawnTime time.Time `json:"spawn_time"` + + ConsumerRedistributionFraction string `json:"consumer_redistribution_fraction"` + BlocksPerDistributionTransmission int64 `json:"blocks_per_distribution_transmission"` + DistributionTransmissionChannel string `json:"distribution_transmission_channel"` + HistoricalEntries int64 `json:"historical_entries"` + CcvTimeoutPeriod time.Duration `json:"ccv_timeout_period"` + TransferTimeoutPeriod time.Duration `json:"transfer_timeout_period"` + UnbondingPeriod time.Duration `json:"unbonding_period"` + + Deposit string `json:"deposit"` + + TopN uint32 `json:"top_N"` + ValidatorsPowerCap uint32 `json:"validators_power_cap"` + ValidatorSetCap uint32 `json:"validator_set_cap"` + Allowlist []string `json:"allowlist"` + Denylist []string `json:"denylist"` +} + // FinishICSProviderSetup sets up the base of an ICS connection with respect to the relayer, provider actions, and flushing of packets. // 1. Stop the relayer, then start it back up. This completes the ICS20-1 transfer channel setup. // - You must set look-back block history >100 blocks in [interchaintest.NewBuiltinRelayerFactory]. @@ -161,7 +188,7 @@ func (c *CosmosChain) StartProvider(testName string, ctx context.Context, additi return fmt.Errorf("invalid ICS_SPAWN_TIME_WAIT %s: %w", spawnTimeWait, err) } for _, consumer := range c.Consumers { - prop := ccvclient.ConsumerAdditionProposalJSON{ + prop := ConsumerAdditionProposalJSON{ Title: fmt.Sprintf("Addition of %s consumer chain", consumer.cfg.Name), Summary: "Proposal to add new consumer chain", ChainId: consumer.cfg.ChainID, diff --git a/go.mod b/go.mod index da66c9150..98a276615 100644 --- a/go.mod +++ b/go.mod @@ -31,7 +31,6 @@ require ( github.com/cosmos/gogoproto v1.5.0 github.com/cosmos/ibc-go/modules/capability v1.0.1 github.com/cosmos/ibc-go/v8 v8.4.0 - github.com/cosmos/interchain-security/v5 v5.1.1 github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc github.com/decred/dcrd/dcrec/secp256k1/v2 v2.0.1 github.com/docker/docker v24.0.9+incompatible @@ -77,7 +76,6 @@ require ( cosmossdk.io/depinject v1.0.0 // indirect cosmossdk.io/errors v1.0.1 // indirect cosmossdk.io/log v1.3.1 // indirect - cosmossdk.io/x/evidence v0.1.0 // indirect cosmossdk.io/x/tx v0.13.4 // indirect filippo.io/edwards25519 v1.0.0 // indirect github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 // indirect diff --git a/go.sum b/go.sum index e54256d8e..095eeae4e 100644 --- a/go.sum +++ b/go.sum @@ -399,8 +399,6 @@ github.com/cosmos/ibc-go/v8 v8.4.0 h1:K2PfX0AZ+1XKZytHGEMuSjQXG/MZshPb83RSTQt2+c github.com/cosmos/ibc-go/v8 v8.4.0/go.mod h1:zh6x1osR0hNvEcFrC/lhGD08sMfQmr9wHVvZ/mRWMCs= github.com/cosmos/ics23/go v0.10.0 h1:iXqLLgp2Lp+EdpIuwXTYIQU+AiHj9mOC2X9ab++bZDM= github.com/cosmos/ics23/go v0.10.0/go.mod h1:ZfJSmng/TBNTBkFemHHHj5YY7VAU/MBU980F4VU1NG0= -github.com/cosmos/interchain-security/v5 v5.1.1 h1:xmRRMeE4xoc+JAZUh0XzXFYWaGBtzFFj5SETuOgnEnY= -github.com/cosmos/interchain-security/v5 v5.1.1/go.mod h1:vmeTcTxFCl1eV0o6xpl/IRT7Basz0szVVGzbppnInMg= github.com/cosmos/ledger-cosmos-go v0.13.3 h1:7ehuBGuyIytsXbd4MP43mLeoN2LTOEnk5nvue4rK+yM= github.com/cosmos/ledger-cosmos-go v0.13.3/go.mod h1:HENcEP+VtahZFw38HZ3+LS3Iv5XV6svsnkk9vdJtLr8= github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= @@ -1010,8 +1008,6 @@ github.com/openzipkin/zipkin-go v0.2.1/go.mod h1:NaW6tEwdmWMaCDZzg8sh+IBNOxHMPnh github.com/openzipkin/zipkin-go v0.2.2/go.mod h1:NaW6tEwdmWMaCDZzg8sh+IBNOxHMPnhQw8ySjnjRyN4= github.com/ory/dockertest v3.3.5+incompatible h1:iLLK6SQwIhcbrG783Dghaaa3WPzGc+4Emza6EbVUUGA= github.com/ory/dockertest v3.3.5+incompatible/go.mod h1:1vX4m9wsvi00u5bseYwXaSnhNrne+V0E6LAcBILJdPs= -github.com/oxyno-zeta/gomock-extra-matcher v1.2.0 h1:WPEclU0y0PMwUzdDcaKZvld4aXpa3fkzjiUMQdcBEHg= -github.com/oxyno-zeta/gomock-extra-matcher v1.2.0/go.mod h1:S0r7HmKeCGsHmvIVFMjKWwswb4+30nCNWbXRMBVPkaU= github.com/pact-foundation/pact-go v1.0.4/go.mod h1:uExwJY4kCzNPcHRj+hCR/HBbOOIwwtUjcrb0b5/5kLM= github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= github.com/pascaldekloe/goe v0.1.0 h1:cBOtyMzM9HTpWjXfbbunk26uA6nG3a8n06Wieeh0MwY= @@ -1258,8 +1254,6 @@ go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= go.uber.org/goleak v1.1.10/go.mod h1:8a7PlsEVH3e/a/GLqe5IIrQx6GzcnRmZEufDUTk4A7A= go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto= go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE= -go.uber.org/mock v0.2.0 h1:TaP3xedm7JaAgScZO7tlvlKrqT0p7I6OsdGB5YNSMDU= -go.uber.org/mock v0.2.0/go.mod h1:J0y0rp9L3xiff1+ZBfKxlC1fz2+aO16tw0tsDOixfuM= go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= go.uber.org/multierr v1.3.0/go.mod h1:VgVr7evmIr6uPjLBxg28wmKNXyqE9akIJ5XnfpiKl+4= go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU= From e961fe657ec6ee0c9eee72d66ec3fe08d2d1907e Mon Sep 17 00:00:00 2001 From: mmsqe Date: Fri, 24 Jan 2025 13:13:53 +0800 Subject: [PATCH 04/10] bump ibc-go to v9.0.2 --- chain/cosmos/08-wasm-types/client_message.go | 2 +- chain/cosmos/08-wasm-types/client_state.go | 4 +- chain/cosmos/08-wasm-types/codec.go | 2 +- chain/cosmos/08-wasm-types/consensus_state.go | 2 +- chain/cosmos/08-wasm-types/wasm.pb.go | 2 +- chain/cosmos/chain_node.go | 2 +- chain/cosmos/codec.go | 6 +- chain/cosmos/cosmos_chain.go | 4 +- chain/cosmos/ics.go | 2 +- chain/penumbra/cnidarium/v1/cnidarium.pb.go | 2 +- .../penumbra/core/component/ibc/v1/ibc.pb.go | 2 +- chain/penumbra/penumbra_client_node.go | 4 +- chain/thorchain/codec.go | 6 +- chain/thorchain/thorchain.go | 5 +- conformance/relayersetup.go | 4 +- conformance/test.go | 2 +- examples/hyperspace/hyperspace_test.go | 2 +- examples/ibc/ics_test.go | 4 +- examples/ibc/learn_ibc_test.go | 4 +- examples/namada/namada_chain_test.go | 2 +- examples/penumbra/penumbra_ibc_test.go | 2 +- go.mod | 99 ++++---- go.sum | 233 ++++++++---------- ibc/packet.go | 2 +- ibc/relayer.go | 6 +- ibc/relayer_test.go | 2 +- ibc/types.go | 2 +- interchain_test.go | 4 +- relayer/hermes/hermes_commander.go | 4 +- relayer/hyperspace/hyperspace_commander.go | 4 +- 30 files changed, 203 insertions(+), 218 deletions(-) diff --git a/chain/cosmos/08-wasm-types/client_message.go b/chain/cosmos/08-wasm-types/client_message.go index e86a8477f..a34ac8f4c 100644 --- a/chain/cosmos/08-wasm-types/client_message.go +++ b/chain/cosmos/08-wasm-types/client_message.go @@ -1,7 +1,7 @@ package types import ( - "github.com/cosmos/ibc-go/v8/modules/core/exported" + "github.com/cosmos/ibc-go/v9/modules/core/exported" ) var _ exported.ClientMessage = &ClientMessage{} diff --git a/chain/cosmos/08-wasm-types/client_state.go b/chain/cosmos/08-wasm-types/client_state.go index bc5e91291..07208a264 100644 --- a/chain/cosmos/08-wasm-types/client_state.go +++ b/chain/cosmos/08-wasm-types/client_state.go @@ -3,8 +3,8 @@ package types import ( storetypes "cosmossdk.io/store/types" - clienttypes "github.com/cosmos/ibc-go/v8/modules/core/02-client/types" // nolint:staticcheck - "github.com/cosmos/ibc-go/v8/modules/core/exported" + clienttypes "github.com/cosmos/ibc-go/v9/modules/core/02-client/types" // nolint:staticcheck + "github.com/cosmos/ibc-go/v9/modules/core/exported" "github.com/cosmos/cosmos-sdk/codec" sdk "github.com/cosmos/cosmos-sdk/types" diff --git a/chain/cosmos/08-wasm-types/codec.go b/chain/cosmos/08-wasm-types/codec.go index be73b5693..e5d7d4116 100644 --- a/chain/cosmos/08-wasm-types/codec.go +++ b/chain/cosmos/08-wasm-types/codec.go @@ -1,7 +1,7 @@ package types import ( - "github.com/cosmos/ibc-go/v8/modules/core/exported" + "github.com/cosmos/ibc-go/v9/modules/core/exported" codectypes "github.com/cosmos/cosmos-sdk/codec/types" sdk "github.com/cosmos/cosmos-sdk/types" diff --git a/chain/cosmos/08-wasm-types/consensus_state.go b/chain/cosmos/08-wasm-types/consensus_state.go index 3614100a6..a3cda993e 100644 --- a/chain/cosmos/08-wasm-types/consensus_state.go +++ b/chain/cosmos/08-wasm-types/consensus_state.go @@ -1,7 +1,7 @@ package types import ( - "github.com/cosmos/ibc-go/v8/modules/core/exported" + "github.com/cosmos/ibc-go/v9/modules/core/exported" ) var _ exported.ConsensusState = (*ConsensusState)(nil) diff --git a/chain/cosmos/08-wasm-types/wasm.pb.go b/chain/cosmos/08-wasm-types/wasm.pb.go index a1250579f..d49f25f51 100644 --- a/chain/cosmos/08-wasm-types/wasm.pb.go +++ b/chain/cosmos/08-wasm-types/wasm.pb.go @@ -7,7 +7,7 @@ import ( fmt "fmt" _ "github.com/cosmos/gogoproto/gogoproto" proto "github.com/cosmos/gogoproto/proto" - types "github.com/cosmos/ibc-go/v8/modules/core/02-client/types" + types "github.com/cosmos/ibc-go/v9/modules/core/02-client/types" io "io" math "math" math_bits "math/bits" diff --git a/chain/cosmos/chain_node.go b/chain/cosmos/chain_node.go index f0549f0c9..9e05433f8 100644 --- a/chain/cosmos/chain_node.go +++ b/chain/cosmos/chain_node.go @@ -27,7 +27,7 @@ import ( "google.golang.org/grpc" "google.golang.org/grpc/credentials/insecure" - icatypes "github.com/cosmos/ibc-go/v8/modules/apps/27-interchain-accounts/types" + icatypes "github.com/cosmos/ibc-go/v9/modules/apps/27-interchain-accounts/types" "github.com/cosmos/cosmos-sdk/client" "github.com/cosmos/cosmos-sdk/codec" diff --git a/chain/cosmos/codec.go b/chain/cosmos/codec.go index 9f278f6bc..3d05b6339 100644 --- a/chain/cosmos/codec.go +++ b/chain/cosmos/codec.go @@ -4,9 +4,9 @@ import ( "cosmossdk.io/x/upgrade" "github.com/cosmos/ibc-go/modules/capability" - transfer "github.com/cosmos/ibc-go/v8/modules/apps/transfer" - ibccore "github.com/cosmos/ibc-go/v8/modules/core" - ibctm "github.com/cosmos/ibc-go/v8/modules/light-clients/07-tendermint" + transfer "github.com/cosmos/ibc-go/v9/modules/apps/transfer" + ibccore "github.com/cosmos/ibc-go/v9/modules/core" + ibctm "github.com/cosmos/ibc-go/v9/modules/light-clients/07-tendermint" "github.com/cosmos/cosmos-sdk/codec" codectypes "github.com/cosmos/cosmos-sdk/codec/types" diff --git a/chain/cosmos/cosmos_chain.go b/chain/cosmos/cosmos_chain.go index 2bdc6fe8e..1d8aa06be 100644 --- a/chain/cosmos/cosmos_chain.go +++ b/chain/cosmos/cosmos_chain.go @@ -21,8 +21,8 @@ import ( sdkmath "cosmossdk.io/math" - clienttypes "github.com/cosmos/ibc-go/v8/modules/core/02-client/types" // nolint:staticcheck - chanTypes "github.com/cosmos/ibc-go/v8/modules/core/04-channel/types" + clienttypes "github.com/cosmos/ibc-go/v9/modules/core/02-client/types" // nolint:staticcheck + chanTypes "github.com/cosmos/ibc-go/v9/modules/core/04-channel/types" "github.com/cosmos/cosmos-sdk/codec" codectypes "github.com/cosmos/cosmos-sdk/codec/types" diff --git a/chain/cosmos/ics.go b/chain/cosmos/ics.go index 4812a7703..227770883 100644 --- a/chain/cosmos/ics.go +++ b/chain/cosmos/ics.go @@ -19,7 +19,7 @@ import ( sdkmath "cosmossdk.io/math" - clienttypes "github.com/cosmos/ibc-go/v8/modules/core/02-client/types" // nolint:staticcheck + clienttypes "github.com/cosmos/ibc-go/v9/modules/core/02-client/types" // nolint:staticcheck "github.com/cosmos/cosmos-sdk/types" govv1beta1 "github.com/cosmos/cosmos-sdk/x/gov/types/v1beta1" diff --git a/chain/penumbra/cnidarium/v1/cnidarium.pb.go b/chain/penumbra/cnidarium/v1/cnidarium.pb.go index dfc2932b0..3973a480c 100644 --- a/chain/penumbra/cnidarium/v1/cnidarium.pb.go +++ b/chain/penumbra/cnidarium/v1/cnidarium.pb.go @@ -8,7 +8,7 @@ import ( fmt "fmt" grpc1 "github.com/cosmos/gogoproto/grpc" proto "github.com/cosmos/gogoproto/proto" - types "github.com/cosmos/ibc-go/v8/modules/core/23-commitment/types" + types "github.com/cosmos/ibc-go/v9/modules/core/23-commitment/types" grpc "google.golang.org/grpc" codes "google.golang.org/grpc/codes" status "google.golang.org/grpc/status" diff --git a/chain/penumbra/core/component/ibc/v1/ibc.pb.go b/chain/penumbra/core/component/ibc/v1/ibc.pb.go index 3c2390838..eeb049791 100644 --- a/chain/penumbra/core/component/ibc/v1/ibc.pb.go +++ b/chain/penumbra/core/component/ibc/v1/ibc.pb.go @@ -7,7 +7,7 @@ import ( fmt "fmt" types "github.com/cosmos/cosmos-sdk/codec/types" proto "github.com/cosmos/gogoproto/proto" - types1 "github.com/cosmos/ibc-go/v8/modules/core/02-client/types" + types1 "github.com/cosmos/ibc-go/v9/modules/core/02-client/types" v11 "github.com/strangelove-ventures/interchaintest/v9/chain/penumbra/core/asset/v1" v12 "github.com/strangelove-ventures/interchaintest/v9/chain/penumbra/core/keys/v1" v1 "github.com/strangelove-ventures/interchaintest/v9/chain/penumbra/core/num/v1" diff --git a/chain/penumbra/penumbra_client_node.go b/chain/penumbra/penumbra_client_node.go index cd9355fa2..0aae556f0 100644 --- a/chain/penumbra/penumbra_client_node.go +++ b/chain/penumbra/penumbra_client_node.go @@ -20,9 +20,9 @@ import ( sdkmath "cosmossdk.io/math" - transfertypes "github.com/cosmos/ibc-go/v8/modules/apps/transfer/types" + transfertypes "github.com/cosmos/ibc-go/v9/modules/apps/transfer/types" //nolint:staticcheck - clienttypes "github.com/cosmos/ibc-go/v8/modules/core/02-client/types" + clienttypes "github.com/cosmos/ibc-go/v9/modules/core/02-client/types" asset "github.com/strangelove-ventures/interchaintest/v9/chain/penumbra/core/asset/v1" ibcv1 "github.com/strangelove-ventures/interchaintest/v9/chain/penumbra/core/component/ibc/v1" diff --git a/chain/thorchain/codec.go b/chain/thorchain/codec.go index 819956536..170e7a5a3 100644 --- a/chain/thorchain/codec.go +++ b/chain/thorchain/codec.go @@ -4,9 +4,9 @@ import ( "cosmossdk.io/x/upgrade" "github.com/cosmos/ibc-go/modules/capability" - transfer "github.com/cosmos/ibc-go/v8/modules/apps/transfer" - ibccore "github.com/cosmos/ibc-go/v8/modules/core" - ibctm "github.com/cosmos/ibc-go/v8/modules/light-clients/07-tendermint" + transfer "github.com/cosmos/ibc-go/v9/modules/apps/transfer" + ibccore "github.com/cosmos/ibc-go/v9/modules/core" + ibctm "github.com/cosmos/ibc-go/v9/modules/light-clients/07-tendermint" "github.com/cosmos/cosmos-sdk/codec" codectypes "github.com/cosmos/cosmos-sdk/codec/types" diff --git a/chain/thorchain/thorchain.go b/chain/thorchain/thorchain.go index ad4cd6484..44ff5213c 100644 --- a/chain/thorchain/thorchain.go +++ b/chain/thorchain/thorchain.go @@ -22,8 +22,8 @@ import ( sdkmath "cosmossdk.io/math" - clienttypes "github.com/cosmos/ibc-go/v8/modules/core/02-client/types" // nolint:staticcheck - chanTypes "github.com/cosmos/ibc-go/v8/modules/core/04-channel/types" + clienttypes "github.com/cosmos/ibc-go/v9/modules/core/02-client/types" // nolint:staticcheck + chanTypes "github.com/cosmos/ibc-go/v9/modules/core/04-channel/types" "github.com/cosmos/cosmos-sdk/codec" codectypes "github.com/cosmos/cosmos-sdk/codec/types" @@ -31,7 +31,6 @@ import ( "github.com/cosmos/cosmos-sdk/crypto/hd" "github.com/cosmos/cosmos-sdk/crypto/keyring" "github.com/cosmos/cosmos-sdk/types" - "github.com/strangelove-ventures/interchaintest/v9/blockdb" "github.com/strangelove-ventures/interchaintest/v9/dockerutil" "github.com/strangelove-ventures/interchaintest/v9/ibc" diff --git a/conformance/relayersetup.go b/conformance/relayersetup.go index 7a2561c31..c88a9f4d1 100644 --- a/conformance/relayersetup.go +++ b/conformance/relayersetup.go @@ -8,8 +8,8 @@ import ( "github.com/stretchr/testify/require" "golang.org/x/sync/errgroup" - conntypes "github.com/cosmos/ibc-go/v8/modules/core/03-connection/types" - "github.com/cosmos/ibc-go/v8/modules/core/exported" + conntypes "github.com/cosmos/ibc-go/v9/modules/core/03-connection/types" + "github.com/cosmos/ibc-go/v9/modules/core/exported" "github.com/strangelove-ventures/interchaintest/v9" "github.com/strangelove-ventures/interchaintest/v9/ibc" diff --git a/conformance/test.go b/conformance/test.go index 89866ed6b..c65a7a4fd 100644 --- a/conformance/test.go +++ b/conformance/test.go @@ -41,7 +41,7 @@ import ( "cosmossdk.io/math" - transfertypes "github.com/cosmos/ibc-go/v8/modules/apps/transfer/types" + transfertypes "github.com/cosmos/ibc-go/v9/modules/apps/transfer/types" "github.com/strangelove-ventures/interchaintest/v9" "github.com/strangelove-ventures/interchaintest/v9/chain/cosmos" diff --git a/examples/hyperspace/hyperspace_test.go b/examples/hyperspace/hyperspace_test.go index c44dd8257..e62a9da0f 100644 --- a/examples/hyperspace/hyperspace_test.go +++ b/examples/hyperspace/hyperspace_test.go @@ -13,7 +13,7 @@ import ( "cosmossdk.io/math" govv1beta1 "github.com/cosmos/cosmos-sdk/x/gov/types/v1beta1" - transfertypes "github.com/cosmos/ibc-go/v8/modules/apps/transfer/types" + transfertypes "github.com/cosmos/ibc-go/v9/modules/apps/transfer/types" "github.com/icza/dyno" "github.com/strangelove-ventures/interchaintest/v9" "github.com/strangelove-ventures/interchaintest/v9/chain/cosmos" diff --git a/examples/ibc/ics_test.go b/examples/ibc/ics_test.go index a600e3139..c76717dfe 100644 --- a/examples/ibc/ics_test.go +++ b/examples/ibc/ics_test.go @@ -7,8 +7,8 @@ import ( "testing" "cosmossdk.io/math" - transfertypes "github.com/cosmos/ibc-go/v8/modules/apps/transfer/types" - ibcconntypes "github.com/cosmos/ibc-go/v8/modules/core/03-connection/types" + transfertypes "github.com/cosmos/ibc-go/v9/modules/apps/transfer/types" + ibcconntypes "github.com/cosmos/ibc-go/v9/modules/core/03-connection/types" interchaintest "github.com/strangelove-ventures/interchaintest/v9" "github.com/strangelove-ventures/interchaintest/v9/chain/cosmos" "github.com/strangelove-ventures/interchaintest/v9/ibc" diff --git a/examples/ibc/learn_ibc_test.go b/examples/ibc/learn_ibc_test.go index db73d268f..17a3e74a8 100644 --- a/examples/ibc/learn_ibc_test.go +++ b/examples/ibc/learn_ibc_test.go @@ -6,10 +6,10 @@ import ( "testing" "time" - transfertypes "github.com/cosmos/ibc-go/v8/modules/apps/transfer/types" + transfertypes "github.com/cosmos/ibc-go/v9/modules/apps/transfer/types" "cosmossdk.io/math" - clienttypes "github.com/cosmos/ibc-go/v8/modules/core/02-client/types" + clienttypes "github.com/cosmos/ibc-go/v9/modules/core/02-client/types" "github.com/strangelove-ventures/interchaintest/v9" "github.com/strangelove-ventures/interchaintest/v9/chain/cosmos" "github.com/strangelove-ventures/interchaintest/v9/ibc" diff --git a/examples/namada/namada_chain_test.go b/examples/namada/namada_chain_test.go index 7d755f307..a7908cc5d 100644 --- a/examples/namada/namada_chain_test.go +++ b/examples/namada/namada_chain_test.go @@ -8,7 +8,7 @@ import ( "testing" "time" - transfertypes "github.com/cosmos/ibc-go/v8/modules/apps/transfer/types" + transfertypes "github.com/cosmos/ibc-go/v9/modules/apps/transfer/types" "cosmossdk.io/math" "github.com/strangelove-ventures/interchaintest/v9" diff --git a/examples/penumbra/penumbra_ibc_test.go b/examples/penumbra/penumbra_ibc_test.go index bfbc6e6a9..e74cf5866 100644 --- a/examples/penumbra/penumbra_ibc_test.go +++ b/examples/penumbra/penumbra_ibc_test.go @@ -7,7 +7,7 @@ import ( "time" "cosmossdk.io/math" - transfertypes "github.com/cosmos/ibc-go/v8/modules/apps/transfer/types" + transfertypes "github.com/cosmos/ibc-go/v9/modules/apps/transfer/types" "github.com/strangelove-ventures/interchaintest/v9" "github.com/strangelove-ventures/interchaintest/v9/chain/penumbra" "github.com/strangelove-ventures/interchaintest/v9/ibc" diff --git a/go.mod b/go.mod index 98a276615..3d025cf3f 100644 --- a/go.mod +++ b/go.mod @@ -28,9 +28,9 @@ require ( github.com/cometbft/cometbft v0.38.11 github.com/cosmos/cosmos-sdk v0.50.9 github.com/cosmos/go-bip39 v1.0.0 - github.com/cosmos/gogoproto v1.5.0 + github.com/cosmos/gogoproto v1.7.0 github.com/cosmos/ibc-go/modules/capability v1.0.1 - github.com/cosmos/ibc-go/v8 v8.4.0 + github.com/cosmos/ibc-go/v9 v9.0.2 github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc github.com/decred/dcrd/dcrec/secp256k1/v2 v2.0.1 github.com/docker/docker v24.0.9+incompatible @@ -56,9 +56,9 @@ require ( github.com/tyler-smith/go-bip39 v1.1.0 go.uber.org/multierr v1.11.0 go.uber.org/zap v1.27.0 - golang.org/x/crypto v0.25.0 + golang.org/x/crypto v0.26.0 golang.org/x/mod v0.19.0 - golang.org/x/sync v0.7.0 + golang.org/x/sync v0.8.0 golang.org/x/tools v0.23.0 google.golang.org/grpc v1.65.0 gopkg.in/yaml.v3 v3.0.1 @@ -66,10 +66,12 @@ require ( ) require ( - cloud.google.com/go v0.112.1 // indirect + cloud.google.com/go v0.115.0 // indirect + cloud.google.com/go/auth v0.6.0 // indirect + cloud.google.com/go/auth/oauth2adapt v0.2.2 // indirect cloud.google.com/go/compute/metadata v0.3.0 // indirect - cloud.google.com/go/iam v1.1.6 // indirect - cloud.google.com/go/storage v1.38.0 // indirect + cloud.google.com/go/iam v1.1.9 // indirect + cloud.google.com/go/storage v1.41.0 // indirect cosmossdk.io/api v0.7.5 // indirect cosmossdk.io/collections v0.4.0 // indirect cosmossdk.io/core v0.11.1 // indirect @@ -77,12 +79,12 @@ require ( cosmossdk.io/errors v1.0.1 // indirect cosmossdk.io/log v1.3.1 // indirect cosmossdk.io/x/tx v0.13.4 // indirect - filippo.io/edwards25519 v1.0.0 // indirect + filippo.io/edwards25519 v1.1.0 // indirect github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 // indirect github.com/ChainSafe/go-schnorrkel v0.0.0-20200405005733-88cbf1b4c40d // indirect github.com/ComposableFi/go-subkey/v2 v2.0.0-tm03420 // indirect github.com/CosmWasm/wasmvm v1.5.4 // indirect - github.com/DataDog/datadog-go v3.2.0+incompatible // indirect + github.com/DataDog/datadog-go v4.8.3+incompatible // indirect github.com/DataDog/zstd v1.5.5 // indirect github.com/FactomProject/basen v0.0.0-20150613233007-fe3947df716e // indirect github.com/FactomProject/btcutilecc v0.0.0-20130527213604-d3a63a5752ec // indirect @@ -91,16 +93,16 @@ require ( github.com/aws/aws-sdk-go v1.44.224 // indirect github.com/beorn7/perks v1.0.1 // indirect github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d // indirect - github.com/bgentry/speakeasy v0.1.1-0.20220910012023-760eaf8b6816 // indirect + github.com/bgentry/speakeasy v0.2.0 // indirect github.com/bits-and-blooms/bitset v1.10.0 // indirect github.com/btcsuite/btcd v0.22.1 // indirect github.com/btcsuite/btcd/btcec/v2 v2.3.4 // indirect - github.com/cenkalti/backoff/v4 v4.1.3 // indirect + github.com/cenkalti/backoff/v4 v4.3.0 // indirect github.com/cespare/xxhash/v2 v2.3.0 // indirect github.com/chzyer/readline v1.5.1 // indirect github.com/cockroachdb/datadriven v1.0.3-0.20230801171734-e384cf455877 // indirect github.com/cockroachdb/errors v1.11.3 // indirect - github.com/cockroachdb/fifo v0.0.0-20240606204812-0bbfbd93a7ce // indirect + github.com/cockroachdb/fifo v0.0.0-20240616162244-4768e80dfb9a // indirect github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b // indirect github.com/cockroachdb/pebble v1.1.1 // indirect github.com/cockroachdb/redact v1.1.5 // indirect @@ -112,37 +114,37 @@ require ( github.com/cosmos/cosmos-db v1.0.2 // indirect github.com/cosmos/cosmos-proto v1.0.0-beta.5 // indirect github.com/cosmos/gogogateway v1.2.0 // indirect - github.com/cosmos/iavl v1.1.2 // indirect - github.com/cosmos/ics23/go v0.10.0 // indirect + github.com/cosmos/iavl v1.2.0 // indirect + github.com/cosmos/ibc-go/v8 v8.4.0 // indirect + github.com/cosmos/ics23/go v0.11.0 // indirect github.com/cosmos/ledger-cosmos-go v0.13.3 // indirect github.com/crate-crypto/go-kzg-4844 v1.0.0 // indirect - github.com/danieljoos/wincred v1.1.2 // indirect + github.com/danieljoos/wincred v1.2.1 // indirect github.com/deckarep/golang-set v1.8.0 // indirect github.com/deckarep/golang-set/v2 v2.6.0 // indirect github.com/decred/base58 v1.0.4 // indirect github.com/decred/dcrd/crypto/blake256 v1.0.1 // indirect - github.com/decred/dcrd/dcrec/secp256k1/v4 v4.2.0 // indirect - github.com/desertbit/timer v0.0.0-20180107155436-c41aec40b27f // indirect + github.com/decred/dcrd/dcrec/secp256k1/v4 v4.3.0 // indirect + github.com/desertbit/timer v1.0.1 // indirect github.com/dgraph-io/badger/v4 v4.2.0 // indirect github.com/dgraph-io/ristretto v0.1.1 // indirect github.com/docker/distribution v2.8.2+incompatible // indirect github.com/docker/go-units v0.5.0 // indirect github.com/dustin/go-humanize v1.0.1 // indirect - github.com/dvsekhvalnov/jose2go v1.6.0 // indirect - github.com/emicklei/dot v1.6.1 // indirect + github.com/dvsekhvalnov/jose2go v1.7.0 // indirect + github.com/emicklei/dot v1.6.2 // indirect github.com/ethereum/c-kzg-4844 v1.0.0 // indirect - github.com/fatih/color v1.16.0 // indirect + github.com/fatih/color v1.17.0 // indirect github.com/felixge/httpsnoop v1.0.4 // indirect github.com/fsnotify/fsnotify v1.7.0 // indirect github.com/gdamore/encoding v1.0.0 // indirect - github.com/getsentry/sentry-go v0.27.0 // indirect - github.com/go-kit/kit v0.12.0 // indirect + github.com/getsentry/sentry-go v0.28.1 // indirect + github.com/go-kit/kit v0.13.0 // indirect github.com/go-kit/log v0.2.1 // indirect github.com/go-logfmt/logfmt v0.6.0 // indirect github.com/go-logr/logr v1.4.1 // indirect github.com/go-logr/stdr v1.2.2 // indirect github.com/go-ole/go-ole v1.3.0 // indirect - github.com/gobwas/ws v1.2.1 // indirect github.com/godbus/dbus v0.0.0-20190726142602-4481cbc300e2 // indirect github.com/gogo/googleapis v1.4.1 // indirect github.com/golang/glog v1.2.1 // indirect @@ -151,32 +153,32 @@ require ( github.com/golang/protobuf v1.5.4 // indirect github.com/golang/snappy v0.0.5-0.20220116011046-fa5810519dcb // indirect github.com/google/btree v1.1.2 // indirect - github.com/google/flatbuffers v1.12.1 // indirect + github.com/google/flatbuffers v24.3.25+incompatible // indirect github.com/google/orderedcode v0.0.1 // indirect github.com/google/s2a-go v0.1.7 // indirect github.com/google/uuid v1.6.0 // indirect github.com/googleapis/enterprise-certificate-proxy v0.3.2 // indirect - github.com/googleapis/gax-go/v2 v2.12.3 // indirect + github.com/googleapis/gax-go/v2 v2.12.5 // indirect github.com/gorilla/handlers v1.5.2 // indirect github.com/gorilla/mux v1.8.1 // indirect - github.com/gorilla/websocket v1.5.0 // indirect + github.com/gorilla/websocket v1.5.3 // indirect github.com/grpc-ecosystem/go-grpc-middleware v1.4.0 // indirect github.com/gsterjov/go-libsecret v0.0.0-20161001094733-a6f4afe4910c // indirect github.com/gtank/merlin v0.1.1 // indirect github.com/gtank/ristretto255 v0.1.2 // indirect github.com/hashicorp/go-cleanhttp v0.5.2 // indirect github.com/hashicorp/go-getter v1.7.4 // indirect - github.com/hashicorp/go-hclog v1.5.0 // indirect + github.com/hashicorp/go-hclog v1.6.3 // indirect github.com/hashicorp/go-immutable-radix v1.3.1 // indirect github.com/hashicorp/go-metrics v0.5.3 // indirect - github.com/hashicorp/go-plugin v1.5.2 // indirect + github.com/hashicorp/go-plugin v1.6.1 // indirect github.com/hashicorp/go-safetemp v1.0.0 // indirect github.com/hashicorp/go-uuid v1.0.3 // indirect github.com/hashicorp/golang-lru v1.0.2 // indirect github.com/hashicorp/golang-lru/v2 v2.0.7 // indirect github.com/hashicorp/hcl v1.0.0 // indirect github.com/hashicorp/yamux v0.1.1 // indirect - github.com/hdevalence/ed25519consensus v0.1.0 // indirect + github.com/hdevalence/ed25519consensus v0.2.0 // indirect github.com/holiman/uint256 v1.3.1 // indirect github.com/huandu/skiplist v1.2.0 // indirect github.com/iancoleman/strcase v0.3.0 // indirect @@ -185,13 +187,13 @@ require ( github.com/ipfs/go-cid v0.4.1 // indirect github.com/jmespath/go-jmespath v0.4.0 // indirect github.com/jmhodges/levigo v1.0.0 // indirect - github.com/klauspost/compress v1.17.7 // indirect + github.com/klauspost/compress v1.17.9 // indirect github.com/klauspost/cpuid/v2 v2.2.7 // indirect github.com/kr/pretty v0.3.1 // indirect github.com/kr/text v0.2.0 // indirect github.com/lib/pq v1.10.7 // indirect github.com/libp2p/go-buffer-pool v0.1.0 // indirect - github.com/linxGnu/grocksdb v1.8.14 // indirect + github.com/linxGnu/grocksdb v1.9.2 // indirect github.com/lucasb-eyer/go-colorful v1.2.0 // indirect github.com/magiconair/properties v1.8.7 // indirect github.com/manifoldco/promptui v0.9.0 // indirect @@ -213,27 +215,28 @@ require ( github.com/multiformats/go-multicodec v0.9.0 // indirect github.com/multiformats/go-multihash v0.2.3 // indirect github.com/multiformats/go-varint v0.0.7 // indirect + github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect github.com/ncruces/go-strftime v0.1.9 // indirect github.com/oasisprotocol/curve25519-voi v0.0.0-20230904125328-1f23a7beb09a // indirect github.com/oklog/run v1.1.0 // indirect github.com/onsi/gomega v1.27.10 // indirect github.com/opencontainers/go-digest v1.0.0 // indirect github.com/opencontainers/image-spec v1.1.0-rc2 // indirect - github.com/petermattis/goid v0.0.0-20231207134359-e60b3f734c67 // indirect + github.com/petermattis/goid v0.0.0-20240607163614-bb94eb51e7a7 // indirect github.com/pierrec/xxHash v0.1.5 // indirect github.com/pkg/errors v0.9.1 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect - github.com/prometheus/client_golang v1.19.0 // indirect + github.com/prometheus/client_golang v1.19.1 // indirect github.com/prometheus/client_model v0.6.1 // indirect - github.com/prometheus/common v0.52.2 // indirect - github.com/prometheus/procfs v0.13.0 // indirect + github.com/prometheus/common v0.55.0 // indirect + github.com/prometheus/procfs v0.15.1 // indirect github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 // indirect github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec // indirect github.com/rivo/uniseg v0.4.3 // indirect github.com/rogpeppe/go-internal v1.12.0 // indirect - github.com/rs/cors v1.8.3 // indirect - github.com/rs/zerolog v1.32.0 // indirect - github.com/sagikazarmark/locafero v0.4.0 // indirect + github.com/rs/cors v1.11.0 // indirect + github.com/rs/zerolog v1.33.0 // indirect + github.com/sagikazarmark/locafero v0.6.0 // indirect github.com/sagikazarmark/slog-shim v0.1.0 // indirect github.com/sasha-s/go-deadlock v0.3.1 // indirect github.com/shirou/gopsutil v3.21.4-0.20210419000835-c7a38de76ee5+incompatible // indirect @@ -255,23 +258,23 @@ require ( github.com/ulikunitz/xz v0.5.11 // indirect github.com/zondax/hid v0.9.2 // indirect github.com/zondax/ledger-go v0.14.3 // indirect - go.etcd.io/bbolt v1.4.0-alpha.0.0.20240404170359-43604f3112c5 // indirect + go.etcd.io/bbolt v1.4.0-alpha.1 // indirect go.opencensus.io v0.24.0 // indirect go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.49.0 // indirect go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0 // indirect go.opentelemetry.io/otel v1.24.0 // indirect go.opentelemetry.io/otel/metric v1.24.0 // indirect go.opentelemetry.io/otel/trace v1.24.0 // indirect - golang.org/x/exp v0.0.0-20240404231335-c0f41cb1a7a0 // indirect + golang.org/x/exp v0.0.0-20240613232115-7f521ea00fb8 // indirect golang.org/x/net v0.27.0 // indirect - golang.org/x/oauth2 v0.20.0 // indirect - golang.org/x/sys v0.22.0 // indirect - golang.org/x/term v0.22.0 // indirect - golang.org/x/text v0.16.0 // indirect + golang.org/x/oauth2 v0.21.0 // indirect + golang.org/x/sys v0.24.0 // indirect + golang.org/x/term v0.23.0 // indirect + golang.org/x/text v0.17.0 // indirect golang.org/x/time v0.5.0 // indirect - google.golang.org/api v0.171.0 // indirect - google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20240528184218-531527333157 // indirect + google.golang.org/api v0.186.0 // indirect + google.golang.org/genproto v0.0.0-20240701130421-f6361c86f094 // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20240701130421-f6361c86f094 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20240709173604-40e1e62336c5 // indirect google.golang.org/protobuf v1.34.2 // indirect gopkg.in/ini.v1 v1.67.0 // indirect @@ -285,7 +288,7 @@ require ( modernc.org/memory v1.8.0 // indirect modernc.org/strutil v1.2.0 // indirect modernc.org/token v1.1.0 // indirect - nhooyr.io/websocket v1.8.7 // indirect + nhooyr.io/websocket v1.8.11 // indirect pgregory.net/rapid v1.1.0 // indirect rsc.io/tmplfunc v0.0.3 // indirect sigs.k8s.io/yaml v1.4.0 // indirect diff --git a/go.sum b/go.sum index 095eeae4e..07f406706 100644 --- a/go.sum +++ b/go.sum @@ -30,8 +30,8 @@ cloud.google.com/go v0.100.2/go.mod h1:4Xra9TjzAeYHrl5+oeLlzbM2k3mjVhZh4UqTZ//w9 cloud.google.com/go v0.102.0/go.mod h1:oWcCzKlqJ5zgHQt9YsaeTY9KzIvjyy0ArmiBUgpQ+nc= cloud.google.com/go v0.102.1/go.mod h1:XZ77E9qnTEnrgEOvr4xzfdX5TRo7fB4T2F4O6+34hIU= cloud.google.com/go v0.104.0/go.mod h1:OO6xxXdJyvuJPcEPBLN9BJPD+jep5G1+2U5B5gkRYtA= -cloud.google.com/go v0.112.1 h1:uJSeirPke5UNZHIb4SxfZklVSiWWVqW4oXlETwZziwM= -cloud.google.com/go v0.112.1/go.mod h1:+Vbu+Y1UU+I1rjmzeMOb/8RfkKJK2Gyxi1X6jJCZLo4= +cloud.google.com/go v0.115.0 h1:CnFSK6Xo3lDYRoBKEcAtia6VSC837/ZkJuRduSFnr14= +cloud.google.com/go v0.115.0/go.mod h1:8jIM5vVgoAEoiVxQ/O4BFTfHqulPZgs/ufEzMcFMdWU= cloud.google.com/go/aiplatform v1.22.0/go.mod h1:ig5Nct50bZlzV6NvKaTwmplLLddFx0YReh9WfTO5jKw= cloud.google.com/go/aiplatform v1.24.0/go.mod h1:67UUvRBKG6GTayHKV8DBv2RtR1t93YRu5B1P3x99mYY= cloud.google.com/go/analytics v0.11.0/go.mod h1:DjEWCu41bVbYcKyvlws9Er60YE4a//bK6mnhWvQeFNI= @@ -46,6 +46,10 @@ cloud.google.com/go/asset v1.8.0/go.mod h1:mUNGKhiqIdbr8X7KNayoYvyc4HbbFO9URsjby cloud.google.com/go/assuredworkloads v1.5.0/go.mod h1:n8HOZ6pff6re5KYfBXcFvSViQjDwxFkAkmUFffJRbbY= cloud.google.com/go/assuredworkloads v1.6.0/go.mod h1:yo2YOk37Yc89Rsd5QMVECvjaMKymF9OP+QXWlKXUkXw= cloud.google.com/go/assuredworkloads v1.7.0/go.mod h1:z/736/oNmtGAyU47reJgGN+KVoYoxeLBoj4XkKYscNI= +cloud.google.com/go/auth v0.6.0 h1:5x+d6b5zdezZ7gmLWD1m/xNjnaQ2YDhmIz/HH3doy1g= +cloud.google.com/go/auth v0.6.0/go.mod h1:b4acV+jLQDyjwm4OXHYjNvRi4jvGBzHWJRtJcy+2P4g= +cloud.google.com/go/auth/oauth2adapt v0.2.2 h1:+TTV8aXpjeChS9M+aTtN/TjdQnzJvmzKFt//oWu7HX4= +cloud.google.com/go/auth/oauth2adapt v0.2.2/go.mod h1:wcYjgpZI9+Yu7LyYBg4pqSiaRkfEK3GQcpb7C/uyF1Q= cloud.google.com/go/automl v1.5.0/go.mod h1:34EjfoFGMZ5sgJ9EoLsRtdPSNZLcfflJR39VbVNS2M0= cloud.google.com/go/automl v1.6.0/go.mod h1:ugf8a6Fx+zP0D59WLhqgTDsQI9w07o64uf/Is3Nh5p8= cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o= @@ -107,8 +111,8 @@ cloud.google.com/go/gkehub v0.10.0/go.mod h1:UIPwxI0DsrpsVoWpLB0stwKCP+WFVG9+y97 cloud.google.com/go/grafeas v0.2.0/go.mod h1:KhxgtF2hb0P191HlY5besjYm6MqTSTj3LSI+M+ByZHc= cloud.google.com/go/iam v0.3.0/go.mod h1:XzJPvDayI+9zsASAFO68Hk07u3z+f+JrT2xXNdp4bnY= cloud.google.com/go/iam v0.5.0/go.mod h1:wPU9Vt0P4UmCux7mqtRu6jcpPAb74cP1fh50J3QpkUc= -cloud.google.com/go/iam v1.1.6 h1:bEa06k05IO4f4uJonbB5iAgKTPpABy1ayxaIZV/GHVc= -cloud.google.com/go/iam v1.1.6/go.mod h1:O0zxdPeGBoFdWW3HWmBxJsk0pfvNM/p/qa82rWOGTwI= +cloud.google.com/go/iam v1.1.9 h1:oSkYLVtVme29uGYrOcKcvJRht7cHJpYD09GM9JaR0TE= +cloud.google.com/go/iam v1.1.9/go.mod h1:Nt1eDWNYH9nGQg3d/mY7U1hvfGmsaG9o/kLGoLoLXjQ= cloud.google.com/go/language v1.4.0/go.mod h1:F9dRpNFQmJbkaop6g0JhSBXCNlO90e1KWx5iDdxbWic= cloud.google.com/go/language v1.6.0/go.mod h1:6dJ8t3B+lUYfStgls25GusK04NLh3eDLQnWM3mdEbhI= cloud.google.com/go/lifesciences v0.5.0/go.mod h1:3oIKy8ycWGPUyZDR/8RNnTOYevhaMLqh5vLUXs9zvT8= @@ -169,8 +173,8 @@ cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9 cloud.google.com/go/storage v1.22.1/go.mod h1:S8N1cAStu7BOeFfE8KAQzmyyLkK8p/vmRq6kuBTW58Y= cloud.google.com/go/storage v1.23.0/go.mod h1:vOEEDNFnciUMhBeT6hsJIn3ieU5cFRmzeLgDvXzfIXc= cloud.google.com/go/storage v1.27.0/go.mod h1:x9DOL8TK/ygDUMieqwfhdpQryTeEkhGKMi80i/iqR2s= -cloud.google.com/go/storage v1.38.0 h1:Az68ZRGlnNTpIBbLjSMIV2BDcwwXYlRlQzis0llkpJg= -cloud.google.com/go/storage v1.38.0/go.mod h1:tlUADB0mAb9BgYls9lq+8MGkfzOXuLrnHXlpHmvFJoY= +cloud.google.com/go/storage v1.41.0 h1:RusiwatSu6lHeEXe3kglxakAmAbfV+rhtPqA6i8RBx0= +cloud.google.com/go/storage v1.41.0/go.mod h1:J1WCa/Z2FcgdEDuPUY8DxT5I+d9mFKsCepp5vR6Sq80= cloud.google.com/go/talent v1.1.0/go.mod h1:Vl4pt9jiHKvOgF9KoZo6Kob9oV4lwd/ZD5Cto54zDRw= cloud.google.com/go/talent v1.2.0/go.mod h1:MoNF9bhFQbiJ6eFD3uSsg0uBALw4n4gaCaEjBw9zo8g= cloud.google.com/go/videointelligence v1.6.0/go.mod h1:w0DIDlVRKtwPCn/C4iwZIJdvC69yInhW0cfi+p546uU= @@ -184,8 +188,8 @@ cloud.google.com/go/workflows v1.6.0/go.mod h1:6t9F5h/unJz41YqfBmqSASJSXccBLtD1V cloud.google.com/go/workflows v1.7.0/go.mod h1:JhSrZuVZWuiDfKEFxU0/F1PQjmpnpcoISEXH2bcHC3M= cosmossdk.io/api v0.7.5 h1:eMPTReoNmGUm8DeiQL9DyM8sYDjEhWzL1+nLbI9DqtQ= cosmossdk.io/api v0.7.5/go.mod h1:IcxpYS5fMemZGqyYtErK7OqvdM0C8kdW3dq8Q/XIG38= -cosmossdk.io/client/v2 v2.0.0-beta.1 h1:XkHh1lhrLYIT9zKl7cIOXUXg2hdhtjTPBUfqERNA1/Q= -cosmossdk.io/client/v2 v2.0.0-beta.1/go.mod h1:JEUSu9moNZQ4kU3ir1DKD5eU4bllmAexrGWjmb9k8qU= +cosmossdk.io/client/v2 v2.0.0-beta.3 h1:+TTuH0DwQYsUq2JFAl3fDZzKq5gQG7nt3dAattkjFDU= +cosmossdk.io/client/v2 v2.0.0-beta.3/go.mod h1:CZcL41HpJPOOayTCO28j8weNBQprG+SRiKX39votypo= cosmossdk.io/collections v0.4.0 h1:PFmwj2W8szgpD5nOd8GWH6AbYNi1f2J6akWXJ7P5t9s= cosmossdk.io/collections v0.4.0/go.mod h1:oa5lUING2dP+gdDquow+QjlF45eL1t4TJDypgGd+tv0= cosmossdk.io/core v0.11.1 h1:h9WfBey7NAiFfIcUhDVNS503I2P2HdZLebJlUIs8LPA= @@ -211,8 +215,8 @@ cosmossdk.io/x/tx v0.13.4/go.mod h1:BkFqrnGGgW50Y6cwTy+JvgAhiffbGEKW6KF9ufcDpvk= cosmossdk.io/x/upgrade v0.1.4 h1:/BWJim24QHoXde8Bc64/2BSEB6W4eTydq0X/2f8+g38= cosmossdk.io/x/upgrade v0.1.4/go.mod h1:9v0Aj+fs97O+Ztw+tG3/tp5JSlrmT7IcFhAebQHmOPo= dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= -filippo.io/edwards25519 v1.0.0 h1:0wAIcmJUqRdI8IJ/3eGi5/HwXZWPujYXXlkrQogz0Ek= -filippo.io/edwards25519 v1.0.0/go.mod h1:N1IkdkCkiLB6tki+MYJoSx2JTY9NUlxZE7eHn5EwJns= +filippo.io/edwards25519 v1.1.0 h1:FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA= +filippo.io/edwards25519 v1.1.0/go.mod h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4VDT4= github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 h1:/vQbFIOMbk2FiG/kXiLl8BRyzTWDw7gX/Hz7Dd5eDMs= github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4/go.mod h1:hN7oaIRCjzsZ2dE+yG5k+rsdt3qcwykqK6HVGcKwsw4= github.com/99designs/keyring v1.2.2 h1:pZd3neh/EmUzWONb35LxQfvuY7kiSXAq3HQd97+XBn0= @@ -233,8 +237,9 @@ github.com/CosmWasm/wasmd v0.42.1-0.20230928145107-894076a25cb2 h1:j8J9LnhC6Iiko github.com/CosmWasm/wasmd v0.42.1-0.20230928145107-894076a25cb2/go.mod h1:3sCglc35LoFUGmh4a/auoJALitaE4qw+jAqK53ak7+s= github.com/CosmWasm/wasmvm v1.5.4 h1:Opqy65ubJ8bMsT08dn85VjRdsLJVPIAgIXif92qOMGc= github.com/CosmWasm/wasmvm v1.5.4/go.mod h1:Q0bSEtlktzh7W2hhEaifrFp1Erx11ckQZmjq8FLCyys= -github.com/DataDog/datadog-go v3.2.0+incompatible h1:qSG2N4FghB1He/r2mFrWKCaL7dXCilEuNEeAn20fdD4= github.com/DataDog/datadog-go v3.2.0+incompatible/go.mod h1:LButxg5PwREeZtORoXG3tL4fMGNddJ+vMq1mwgfaqoQ= +github.com/DataDog/datadog-go v4.8.3+incompatible h1:fNGaYSuObuQb5nzeTQqowRAd9bpDIRRV4/gUtIBjh8Q= +github.com/DataDog/datadog-go v4.8.3+incompatible/go.mod h1:LButxg5PwREeZtORoXG3tL4fMGNddJ+vMq1mwgfaqoQ= github.com/DataDog/zstd v1.5.5 h1:oWf5W7GtOLgp6bciQYDmhHHjdhYkALu6S/5Ni9ZgSvQ= github.com/DataDog/zstd v1.5.5/go.mod h1:g4AWEaM3yOg3HYfnJ3YIawPnVdXJh9QME85blwSAmyw= github.com/FactomProject/basen v0.0.0-20150613233007-fe3947df716e h1:ahyvB3q25YnZWly5Gq1ekg6jcmWaGj/vG/MhF4aisoc= @@ -290,8 +295,8 @@ github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6r github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d h1:xDfNPAt8lFiC1UJrqV3uuy861HCTo708pDMbjHHdCas= github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d/go.mod h1:6QX/PXZ00z/TKoufEY6K/a0k6AhaJrQKdFe6OfVXsa4= github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= -github.com/bgentry/speakeasy v0.1.1-0.20220910012023-760eaf8b6816 h1:41iFGWnSlI2gVpmOtVTJZNodLdLQLn/KsJqFvXwnd/s= -github.com/bgentry/speakeasy v0.1.1-0.20220910012023-760eaf8b6816/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= +github.com/bgentry/speakeasy v0.2.0 h1:tgObeVOf8WAvtuAX6DhJ4xks4CFNwPDZiqzGqIHE51E= +github.com/bgentry/speakeasy v0.2.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= github.com/bits-and-blooms/bitset v1.10.0 h1:ePXTeiPEazB5+opbv5fr8umg2R/1NlzgDsyepwsSr88= github.com/bits-and-blooms/bitset v1.10.0/go.mod h1:7hO7Gc7Pp1vODcmWvKMRA9BNmbv6a/7QIWpPxHddWR8= github.com/btcsuite/btcd v0.22.1 h1:CnwP9LM/M9xuRrGSCGeMVs9iv09uMqwsVX7EeIpgV2c= @@ -310,8 +315,8 @@ github.com/casbin/casbin/v2 v2.1.2/go.mod h1:YcPU1XXisHhLzuxH9coDNf2FbKpjGlbCg3n github.com/cenkalti/backoff v2.2.1+incompatible h1:tNowT99t7UNflLxfYYSlKYsBpXdEet03Pg2g16Swow4= github.com/cenkalti/backoff v2.2.1+incompatible/go.mod h1:90ReRw6GdpyfrHakVjL/QHaoyV4aDUVVkXQJJJ3NXXM= github.com/cenkalti/backoff/v4 v4.1.1/go.mod h1:scbssz8iZGpm3xbr14ovlUdkxfGXNInqkPWOWmG2CLw= -github.com/cenkalti/backoff/v4 v4.1.3 h1:cFAlzYUlVYDysBEH2T5hyJZMh3+5+WCBvSnK6Q8UtC4= -github.com/cenkalti/backoff/v4 v4.1.3/go.mod h1:scbssz8iZGpm3xbr14ovlUdkxfGXNInqkPWOWmG2CLw= +github.com/cenkalti/backoff/v4 v4.3.0 h1:MyRJ/UdXutAwSAT+s3wNd7MfTIcy71VQueUuFK343L8= +github.com/cenkalti/backoff/v4 v4.3.0/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= github.com/cespare/xxhash v1.1.0 h1:a6HrQnmkObjyL+Gs60czilIUGqrzKutQD6XZog3p+ko= github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= @@ -350,8 +355,8 @@ github.com/cockroachdb/datadriven v1.0.3-0.20230801171734-e384cf455877 h1:1MLK4Y github.com/cockroachdb/datadriven v1.0.3-0.20230801171734-e384cf455877/go.mod h1:a9RdTaap04u637JoCzcUoIcDmvwSUtcUFtT/C3kJlTU= github.com/cockroachdb/errors v1.11.3 h1:5bA+k2Y6r+oz/6Z/RFlNeVCesGARKuC6YymtcDrbC/I= github.com/cockroachdb/errors v1.11.3/go.mod h1:m4UIW4CDjx+R5cybPsNrRbreomiFqt8o1h1wUVazSd8= -github.com/cockroachdb/fifo v0.0.0-20240606204812-0bbfbd93a7ce h1:giXvy4KSc/6g/esnpM7Geqxka4WSqI1SZc7sMJFd3y4= -github.com/cockroachdb/fifo v0.0.0-20240606204812-0bbfbd93a7ce/go.mod h1:9/y3cnZ5GKakj/H4y9r9GTjCvAFta7KLgSHPJJYc52M= +github.com/cockroachdb/fifo v0.0.0-20240616162244-4768e80dfb9a h1:f52TdbU4D5nozMAhO9TvTJ2ZMCXtN4VIAmfrrZ0JXQ4= +github.com/cockroachdb/fifo v0.0.0-20240616162244-4768e80dfb9a/go.mod h1:9/y3cnZ5GKakj/H4y9r9GTjCvAFta7KLgSHPJJYc52M= github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b h1:r6VH0faHjZeQy818SGhaone5OnYfxFR/+AzdY3sf5aE= github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b/go.mod h1:Vz9DsVWQQhf3vs21MhPMZpMGSht7O/2vFW2xusFUVOs= github.com/cockroachdb/pebble v1.1.1 h1:XnKU22oiCLy2Xn8vp1re67cXg4SAasg/WDt1NtcRFaw= @@ -389,16 +394,18 @@ github.com/cosmos/go-bip39 v1.0.0/go.mod h1:RNJv0H/pOIVgxw6KS7QeX2a0Uo0aKUlfhZ4x github.com/cosmos/gogogateway v1.2.0 h1:Ae/OivNhp8DqBi/sh2A8a1D0y638GpL3tkmLQAiKxTE= github.com/cosmos/gogogateway v1.2.0/go.mod h1:iQpLkGWxYcnCdz5iAdLcRBSw3h7NXeOkZ4GUkT+tbFI= github.com/cosmos/gogoproto v1.4.2/go.mod h1:cLxOsn1ljAHSV527CHOtaIP91kK6cCrZETRBrkzItWU= -github.com/cosmos/gogoproto v1.5.0 h1:SDVwzEqZDDBoslaeZg+dGE55hdzHfgUA40pEanMh52o= -github.com/cosmos/gogoproto v1.5.0/go.mod h1:iUM31aofn3ymidYG6bUR5ZFrk+Om8p5s754eMUcyp8I= -github.com/cosmos/iavl v1.1.2 h1:zL9FK7C4L/P4IF1Dm5fIwz0WXCnn7Bp1M2FxH0ayM7Y= -github.com/cosmos/iavl v1.1.2/go.mod h1:jLeUvm6bGT1YutCaL2fIar/8vGUE8cPZvh/gXEWDaDM= +github.com/cosmos/gogoproto v1.7.0 h1:79USr0oyXAbxg3rspGh/m4SWNyoz/GLaAh0QlCe2fro= +github.com/cosmos/gogoproto v1.7.0/go.mod h1:yWChEv5IUEYURQasfyBW5ffkMHR/90hiHgbNgrtp4j0= +github.com/cosmos/iavl v1.2.0 h1:kVxTmjTh4k0Dh1VNL046v6BXqKziqMDzxo93oh3kOfM= +github.com/cosmos/iavl v1.2.0/go.mod h1:HidWWLVAtODJqFD6Hbne2Y0q3SdxByJepHUOeoH4LiI= github.com/cosmos/ibc-go/modules/capability v1.0.1 h1:ibwhrpJ3SftEEZRxCRkH0fQZ9svjthrX2+oXdZvzgGI= github.com/cosmos/ibc-go/modules/capability v1.0.1/go.mod h1:rquyOV262nGJplkumH+/LeYs04P3eV8oB7ZM4Ygqk4E= github.com/cosmos/ibc-go/v8 v8.4.0 h1:K2PfX0AZ+1XKZytHGEMuSjQXG/MZshPb83RSTQt2+cE= github.com/cosmos/ibc-go/v8 v8.4.0/go.mod h1:zh6x1osR0hNvEcFrC/lhGD08sMfQmr9wHVvZ/mRWMCs= -github.com/cosmos/ics23/go v0.10.0 h1:iXqLLgp2Lp+EdpIuwXTYIQU+AiHj9mOC2X9ab++bZDM= -github.com/cosmos/ics23/go v0.10.0/go.mod h1:ZfJSmng/TBNTBkFemHHHj5YY7VAU/MBU980F4VU1NG0= +github.com/cosmos/ibc-go/v9 v9.0.2 h1:4481uaqY8Asoqqfb2OZC8Cu9Ud8ZgarF9cS3sntBIsY= +github.com/cosmos/ibc-go/v9 v9.0.2/go.mod h1:FeznzlNFQhhu1O8TrWJT+2L1OyKdUEb1kmmjuWod3VI= +github.com/cosmos/ics23/go v0.11.0 h1:jk5skjT0TqX5e5QJbEnwXIS2yI2vnmLOgpQPeM5RtnU= +github.com/cosmos/ics23/go v0.11.0/go.mod h1:A8OjxPE67hHST4Icw94hOxxFEJMBG031xIGF/JHNIY0= github.com/cosmos/ledger-cosmos-go v0.13.3 h1:7ehuBGuyIytsXbd4MP43mLeoN2LTOEnk5nvue4rK+yM= github.com/cosmos/ledger-cosmos-go v0.13.3/go.mod h1:HENcEP+VtahZFw38HZ3+LS3Iv5XV6svsnkk9vdJtLr8= github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= @@ -412,8 +419,8 @@ github.com/creachadair/taskgroup v0.3.2 h1:zlfutDS+5XG40AOxcHDSThxKzns8Tnr9jnr6V github.com/creachadair/taskgroup v0.3.2/go.mod h1:wieWwecHVzsidg2CsUnFinW1faVN4+kq+TDlRJQ0Wbk= github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7DoTY= github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= -github.com/danieljoos/wincred v1.1.2 h1:QLdCxFs1/Yl4zduvBdcHB8goaYk9RARS2SgLLRuAyr0= -github.com/danieljoos/wincred v1.1.2/go.mod h1:GijpziifJoIBfYh+S7BbkdUTU4LfM+QnGqR5Vl2tAx0= +github.com/danieljoos/wincred v1.2.1 h1:dl9cBrupW8+r5250DYkYxocLeZ1Y4vB1kxgtjxw8GQs= +github.com/danieljoos/wincred v1.2.1/go.mod h1:uGaFL9fDn3OLTvzCGulzE+SzjEe5NGlh5FdCcyfPwps= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM= @@ -431,10 +438,11 @@ github.com/decred/dcrd/crypto/blake256 v1.0.1 h1:7PltbUIQB7u/FfZ39+DGa/ShuMyJ5il github.com/decred/dcrd/crypto/blake256 v1.0.1/go.mod h1:2OfgNZ5wDpcsFmHmCK5gZTPcCXqlm2ArzUIkw9czNJo= github.com/decred/dcrd/dcrec/secp256k1/v2 v2.0.1 h1:18HurQ6DfHeNvwIjvOmrgr44bPdtVaQAe/WWwHg9goM= github.com/decred/dcrd/dcrec/secp256k1/v2 v2.0.1/go.mod h1:XmyzkaXBy7ZvHdrTAlXAjpog8qKSAWa3ze7yqzWmgmc= -github.com/decred/dcrd/dcrec/secp256k1/v4 v4.2.0 h1:8UrgZ3GkP4i/CLijOJx79Yu+etlyjdBU4sfcs2WYQMs= -github.com/decred/dcrd/dcrec/secp256k1/v4 v4.2.0/go.mod h1:v57UDF4pDQJcEfFUCRop3lJL149eHGSe9Jvczhzjo/0= -github.com/desertbit/timer v0.0.0-20180107155436-c41aec40b27f h1:U5y3Y5UE0w7amNe7Z5G/twsBW0KEalRQXZzf8ufSh9I= +github.com/decred/dcrd/dcrec/secp256k1/v4 v4.3.0 h1:rpfIENRNNilwHwZeG5+P150SMrnNEcHYvcCuK6dPZSg= +github.com/decred/dcrd/dcrec/secp256k1/v4 v4.3.0/go.mod h1:v57UDF4pDQJcEfFUCRop3lJL149eHGSe9Jvczhzjo/0= github.com/desertbit/timer v0.0.0-20180107155436-c41aec40b27f/go.mod h1:xH/i4TFMt8koVQZ6WFms69WAsDWr2XsYL3Hkl7jkoLE= +github.com/desertbit/timer v1.0.1 h1:yRpYNn5Vaaj6QXecdLMPMJsW81JLiI1eokUft5nBmeo= +github.com/desertbit/timer v1.0.1/go.mod h1:htRrYeY5V/t4iu1xCJ5XsQvp4xve8QulXXctAzxqcwE= github.com/dgraph-io/badger v1.6.2 h1:mNw0qs90GVgGGWylh0umH5iag1j6n/PeJtNvL6KY/x8= github.com/dgraph-io/badger/v2 v2.2007.4 h1:TRWBQg8UrlUhaFdco01nO2uXwzKS7zd+HVdwV/GHc4o= github.com/dgraph-io/badger/v2 v2.2007.4/go.mod h1:vSw/ax2qojzbN6eXHIx6KPKtCSHJN/Uz0X0VPruTIhk= @@ -458,14 +466,14 @@ github.com/dustin/go-humanize v0.0.0-20171111073723-bb3d318650d4/go.mod h1:Htrtb github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= github.com/dustin/go-humanize v1.0.1 h1:GzkhY7T5VNhEkwH0PVJgjz+fX1rhBrR7pRT3mDkpeCY= github.com/dustin/go-humanize v1.0.1/go.mod h1:Mu1zIs6XwVuF/gI1OepvI0qD18qycQx+mFykh5fBlto= -github.com/dvsekhvalnov/jose2go v1.6.0 h1:Y9gnSnP4qEI0+/uQkHvFXeD2PLPJeXEL+ySMEA2EjTY= -github.com/dvsekhvalnov/jose2go v1.6.0/go.mod h1:QsHjhyTlD/lAVqn/NSbVZmSCGeDehTB/mPZadG+mhXU= +github.com/dvsekhvalnov/jose2go v1.7.0 h1:bnQc8+GMnidJZA8zc6lLEAb4xNrIqHwO+9TzqvtQZPo= +github.com/dvsekhvalnov/jose2go v1.7.0/go.mod h1:QsHjhyTlD/lAVqn/NSbVZmSCGeDehTB/mPZadG+mhXU= github.com/eapache/go-resiliency v1.1.0/go.mod h1:kFI+JgMyC7bLPUVY133qvEBtVayf5mFgVsvEsIPBvNs= github.com/eapache/go-xerial-snappy v0.0.0-20180814174437-776d5712da21/go.mod h1:+020luEh2TKB4/GOp8oxxtq0Daoen/Cii55CzbTV6DU= github.com/eapache/queue v1.1.0/go.mod h1:6eCeP0CKFpHLu8blIFXhExK/dRa7WDZfr6jVFPTqq+I= github.com/edsrzf/mmap-go v1.0.0/go.mod h1:YO35OhQPt3KJa3ryjFM5Bs14WD66h8eGKpfaBNrHW5M= -github.com/emicklei/dot v1.6.1 h1:ujpDlBkkwgWUY+qPId5IwapRW/xEoligRSYjioR6DFI= -github.com/emicklei/dot v1.6.1/go.mod h1:DeV7GvQtIw4h2u73RKBkkFdvVAz0D9fzeJrgPW6gy/s= +github.com/emicklei/dot v1.6.2 h1:08GN+DD79cy/tzN6uLCT84+2Wk9u+wvqP+Hkx/dIR8A= +github.com/emicklei/dot v1.6.2/go.mod h1:DeV7GvQtIw4h2u73RKBkkFdvVAz0D9fzeJrgPW6gy/s= github.com/envoyproxy/go-control-plane v0.6.9/go.mod h1:SBwIajubJHhxtWwsL9s8ss4safvEdbitLhGGK48rN6g= github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= @@ -485,8 +493,8 @@ github.com/ethereum/go-verkle v0.1.1-0.20240306133620-7d920df305f0 h1:KrE8I4reeV github.com/ethereum/go-verkle v0.1.1-0.20240306133620-7d920df305f0/go.mod h1:D9AJLVXSyZQXJQVk8oh1EwjISE+sJTn2duYIZC0dy3w= github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= github.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk= -github.com/fatih/color v1.16.0 h1:zmkK9Ngbjj+K0yRhTVONQh1p/HknKYSlNT+vZCzyokM= -github.com/fatih/color v1.16.0/go.mod h1:fL2Sau1YI5c0pdGEVCbKQbLXB6edEj1ZgiY4NijnWvE= +github.com/fatih/color v1.17.0 h1:GlRw1BRJxkpqUCBKzKOw098ed57fEsKeNjpTe3cSjK4= +github.com/fatih/color v1.17.0/go.mod h1:YZ7TlrGPkiz6ku9fK3TLD/pl3CpsiFyu8N92HLgmosI= github.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2Wg= github.com/felixge/httpsnoop v1.0.4/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= github.com/fortytw2/leaktest v1.3.0 h1:u8491cBMTQ8ft8aeV+adlcytMZylmA5nnwwkRZjI8vw= @@ -507,14 +515,11 @@ github.com/gdamore/encoding v1.0.0/go.mod h1:alR0ol34c49FCSBLjhosxzcPHQbf2trDkoo github.com/gdamore/tcell/v2 v2.4.1-0.20210905002822-f057f0a857a1/go.mod h1:Az6Jt+M5idSED2YPGtwnfJV0kXohgdCBPmHGSYc1r04= github.com/gdamore/tcell/v2 v2.7.4 h1:sg6/UnTM9jGpZU+oFYAsDahfchWAFW8Xx2yFinNSAYU= github.com/gdamore/tcell/v2 v2.7.4/go.mod h1:dSXtXTSK0VsW1biw65DZLZ2NKr7j0qP/0J7ONmsraWg= -github.com/getsentry/sentry-go v0.27.0 h1:Pv98CIbtB3LkMWmXi4Joa5OOcwbmnX88sF5qbK3r3Ps= -github.com/getsentry/sentry-go v0.27.0/go.mod h1:lc76E2QywIyW8WuBnwl8Lc4bkmQH4+w1gwTf25trprY= +github.com/getsentry/sentry-go v0.28.1 h1:zzaSm/vHmGllRM6Tpx1492r0YDzauArdBfkJRtY6P5k= +github.com/getsentry/sentry-go v0.28.1/go.mod h1:1fQZ+7l7eeJ3wYi82q5Hg8GqAPgefRq+FP/QhafYVgg= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= -github.com/gin-contrib/sse v0.1.0 h1:Y/yl/+YNO8GZSjAhjMsSuLt29uWRFHdHYUb5lYOV9qE= github.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm+fLHvGI= github.com/gin-gonic/gin v1.6.3/go.mod h1:75u5sXoLsGZoRN5Sgbi1eraJ4GU3++wFwWzhwvtwp4M= -github.com/gin-gonic/gin v1.8.1 h1:4+fr/el88TOO3ewCmQr8cx/CtZ/umlIRIs5M4NTNjf8= -github.com/gin-gonic/gin v1.8.1/go.mod h1:ji8BvRH1azfM+SYow9zQ6SZMvR8qOMZHmsCuWR9tTTk= github.com/go-errors/errors v1.4.2 h1:J6MZopCL4uSllY1OfXM374weqZFFItUbrImctkmUxIA= github.com/go-errors/errors v1.4.2/go.mod h1:sIVyrIiJhuEF+Pj9Ebtd6P/rEYROXFi3BopGUQ5a5Og= github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= @@ -523,8 +528,8 @@ github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2 github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= github.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= github.com/go-kit/kit v0.10.0/go.mod h1:xUsJbQ/Fp4kEt7AFgCuvyX4a71u8h9jB8tj/ORgOZ7o= -github.com/go-kit/kit v0.12.0 h1:e4o3o3IsBfAKQh5Qbbiqyfu97Ku7jrO/JbohvztANh4= -github.com/go-kit/kit v0.12.0/go.mod h1:lHd+EkCZPIwYItmGDDRdhinkzX2A1sj+M9biaEaizzs= +github.com/go-kit/kit v0.13.0 h1:OoneCcHKHQ03LfBpoQCUfCluwd2Vt3ohz+kvbJneZAU= +github.com/go-kit/kit v0.13.0/go.mod h1:phqEHMMUbyrCFCTgH48JueqrM3md2HcAZ8N3XE4FKDg= github.com/go-kit/log v0.1.0/go.mod h1:zbhenjAZHb184qTLMA9ZjW7ThYL0H2mk7Q6pNt4vbaY= github.com/go-kit/log v0.2.1 h1:MRVx0/zhvdseW+Gza6N9rVzU/IVzaeE1SFI4raAhmBU= github.com/go-kit/log v0.2.1/go.mod h1:NwTd00d/i8cPZ3xOwwiv2PO5MOcx78fFErGNcVmBjv0= @@ -543,28 +548,14 @@ github.com/go-ole/go-ole v1.3.0 h1:Dt6ye7+vXGIKZ7Xtk4s6/xVdGDQynvom7xCFEdWr6uE= github.com/go-ole/go-ole v1.3.0/go.mod h1:5LS6F96DhAwUc7C+1HLexzMXY1xGRSryjyPPKW6zv78= github.com/go-playground/assert/v2 v2.0.1/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4= github.com/go-playground/locales v0.13.0/go.mod h1:taPMhCMXrRLJO55olJkUXHZBHCxTMfnGwq/HNwmWNS8= -github.com/go-playground/locales v0.14.0 h1:u50s323jtVGugKlcYeyzC0etD1HifMjqmJqb8WugfUU= -github.com/go-playground/locales v0.14.0/go.mod h1:sawfccIbzZTqEDETgFXqTho0QybSa7l++s0DH+LDiLs= github.com/go-playground/universal-translator v0.17.0/go.mod h1:UkSxE5sNxxRwHyU+Scu5vgOQjsIJAF8j9muTVoKLVtA= -github.com/go-playground/universal-translator v0.18.0 h1:82dyy6p4OuJq4/CByFNOn/jYrnRPArHwAcmLoJZxyho= -github.com/go-playground/universal-translator v0.18.0/go.mod h1:UvRDBj+xPUEGrFYl+lu/H90nyDXpg0fqeB/AQUGNTVA= github.com/go-playground/validator/v10 v10.2.0/go.mod h1:uOYAAleCW8F/7oMFd6aG0GOhaH6EGOAJShg8Id5JGkI= -github.com/go-playground/validator/v10 v10.11.1 h1:prmOlTVv+YjZjmRmNSF3VmspqJIxJWXmqUsHwfTRRkQ= -github.com/go-playground/validator/v10 v10.11.1/go.mod h1:i+3WkQ1FvaUjjxh1kSvIA4dMGDBiPU55YFDl0WbKdWU= github.com/go-sql-driver/mysql v1.4.0/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w= github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0/go.mod h1:fyg7847qk6SyHyPtNmDHnmrv/HOrqktSC+C9fM+CJOE= github.com/gobwas/httphead v0.0.0-20180130184737-2c6c146eadee/go.mod h1:L0fX3K22YWvt/FAX9NnzrNzcI4wNYi9Yku4O0LKYflo= -github.com/gobwas/httphead v0.1.0 h1:exrUm0f4YX0L7EBwZHuCF4GDp8aJfVeBrlLQrs6NqWU= -github.com/gobwas/httphead v0.1.0/go.mod h1:O/RXo79gxV8G+RqlR/otEwx4Q36zl9rqC5u12GKvMCM= github.com/gobwas/pool v0.2.0/go.mod h1:q8bcK0KcYlCgd9e7WYLm9LpyS+YeLd8JVDW6WezmKEw= -github.com/gobwas/pool v0.2.1 h1:xfeeEhW7pwmX8nuLVlqbzVc7udMDrwetjEv+TZIz1og= -github.com/gobwas/pool v0.2.1/go.mod h1:q8bcK0KcYlCgd9e7WYLm9LpyS+YeLd8JVDW6WezmKEw= github.com/gobwas/ws v1.0.2/go.mod h1:szmBTxLgaFppYjEmNtny/v3w89xOydFnnZMcgRRu/EM= -github.com/gobwas/ws v1.2.1 h1:F2aeBZrm2NDsc7vbovKrWSogd4wvfAxg0FQ89/iqOTk= -github.com/gobwas/ws v1.2.1/go.mod h1:hRKAFb8wOxFROYNsT1bqfWnhX+b5MFeJM9r2ZSwg/KY= -github.com/goccy/go-json v0.10.2 h1:CrxCmQqYDkv1z7lO7Wbh2HN93uovUHgrECaO5ZrCXAU= -github.com/goccy/go-json v0.10.2/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I= github.com/godbus/dbus v0.0.0-20190726142602-4481cbc300e2 h1:ZpnhV/YsD2/4cESfV5+Hoeu/iUR3ruzNvZ+yQfO03a0= github.com/godbus/dbus v0.0.0-20190726142602-4481cbc300e2/go.mod h1:bBOAhwG1umN6/6ZUMtDFBMQR8jRg9O75tm9K00oMsK4= github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= @@ -624,8 +615,8 @@ github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Z github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/btree v1.1.2 h1:xf4v41cLI2Z6FxbKm+8Bu+m8ifhj15JuZ9sa0jZCMUU= github.com/google/btree v1.1.2/go.mod h1:qOPhT0dTNdNzV6Z/lhRX0YXUafgPLFUh+gZMl761Gm4= -github.com/google/flatbuffers v1.12.1 h1:MVlul7pQNoDzWRLTw5imwYsl+usrS1TXG2H4jg6ImGw= -github.com/google/flatbuffers v1.12.1/go.mod h1:1AeVuKshWv4vARoZatz6mlQ0JxURH0Kv5+zNeJKJCa8= +github.com/google/flatbuffers v24.3.25+incompatible h1:CX395cjN9Kke9mmalRoL3d81AtFUxJM+yDthflgJGkI= +github.com/google/flatbuffers v24.3.25+incompatible/go.mod h1:1AeVuKshWv4vARoZatz6mlQ0JxURH0Kv5+zNeJKJCa8= github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= @@ -652,8 +643,8 @@ github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXi github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= github.com/google/martian/v3 v3.1.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= github.com/google/martian/v3 v3.2.1/go.mod h1:oBOf6HBosgwRXnUGWUB05QECsc6uvmMiJ3+6W4l/CUk= -github.com/google/martian/v3 v3.3.2 h1:IqNFLAmvJOgVlpdEBiQbDc2EwKW77amAycfTuWKdfvw= -github.com/google/martian/v3 v3.3.2/go.mod h1:oBOf6HBosgwRXnUGWUB05QECsc6uvmMiJ3+6W4l/CUk= +github.com/google/martian/v3 v3.3.3 h1:DIhPTQrbPkgs2yJYdXU/eNACCG5DVQjySNRNlflZ9Fc= +github.com/google/martian/v3 v3.3.3/go.mod h1:iEPrYcgCF7jA9OtScMFQyAlZZ4YXTKEtJ1E6RWzmBA0= github.com/google/orderedcode v0.0.1 h1:UzfcAexk9Vhv8+9pNOgRu41f16lHq725vPwnSeiG/Us= github.com/google/orderedcode v0.0.1/go.mod h1:iVyU4/qPKHY5h/wSd6rZZCDcLJNxiWO6dvsYES2Sb20= github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= @@ -696,8 +687,8 @@ github.com/googleapis/gax-go/v2 v2.3.0/go.mod h1:b8LNqSzNabLiUpXKkY7HAR5jr6bIT99 github.com/googleapis/gax-go/v2 v2.4.0/go.mod h1:XOTVJ59hdnfJLIP/dh8n5CGryZR2LxK9wbMD5+iXC6c= github.com/googleapis/gax-go/v2 v2.5.1/go.mod h1:h6B0KMMFNtI2ddbGJn3T3ZbwkeT6yqEF02fYlzkUCyo= github.com/googleapis/gax-go/v2 v2.6.0/go.mod h1:1mjbznJAPHFpesgE5ucqfYEscaz5kMdcIDwU/6+DDoY= -github.com/googleapis/gax-go/v2 v2.12.3 h1:5/zPPDvw8Q1SuXjrqrZslrqT7dL/uJT2CQii/cLCKqA= -github.com/googleapis/gax-go/v2 v2.12.3/go.mod h1:AKloxT6GtNbaLm8QTNSidHUVsHYcBHwWRvkNFJUQcS4= +github.com/googleapis/gax-go/v2 v2.12.5 h1:8gw9KZK8TiVKB6q3zHY3SBzLnrGp6HQjyfYBYGmXdxA= +github.com/googleapis/gax-go/v2 v2.12.5/go.mod h1:BUDKcWo+RaKq5SC9vVYL0wLADa3VcfswbOMMRmB9H3E= github.com/googleapis/go-type-adapters v1.0.0/go.mod h1:zHW75FOG2aur7gAO2B+MLby+cLsWGBF62rFAi7WjWO4= github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= github.com/gorilla/context v1.1.1/go.mod h1:kBGZzfjB9CEq2AlWe17Uuf7NDRt0dE0s8S51q0aT7Yg= @@ -709,8 +700,8 @@ github.com/gorilla/mux v1.8.1 h1:TuBL49tXwgrFYWhqrNgrUNEY92u81SPhu7sTdzQEiWY= github.com/gorilla/mux v1.8.1/go.mod h1:AKf9I4AEqPTmMytcMc0KkNouC66V3BtZ4qD5fmWSiMQ= github.com/gorilla/websocket v0.0.0-20170926233335-4201258b820c/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= github.com/gorilla/websocket v1.4.1/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= -github.com/gorilla/websocket v1.5.0 h1:PPwGk2jz7EePpoHN/+ClbZu8SPxiqlu12wZP/3sWmnc= -github.com/gorilla/websocket v1.5.0/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= +github.com/gorilla/websocket v1.5.3 h1:saDtZ6Pbx/0u+bgYQ3q96pZgCzfhKXGPqt7kZ72aNNg= +github.com/gorilla/websocket v1.5.3/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= github.com/grpc-ecosystem/go-grpc-middleware v1.0.1-0.20190118093823-f849b5445de4/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= github.com/grpc-ecosystem/go-grpc-middleware v1.2.2/go.mod h1:EaizFBKfUKtMIF5iaDEhniwNedqGo9FuLFzppDr3uwI= github.com/grpc-ecosystem/go-grpc-middleware v1.4.0 h1:UH//fgunKIs4JdUbpDl1VZCDaL56wXCB/5+wF6uHfaI= @@ -737,8 +728,8 @@ github.com/hashicorp/go-cleanhttp v0.5.2 h1:035FKYIWjmULyFRBKPs8TBQoi0x6d9G4xc9n github.com/hashicorp/go-cleanhttp v0.5.2/go.mod h1:kO/YDlP8L1346E6Sodw+PrpBSV4/SoxCXGY6BqNFT48= github.com/hashicorp/go-getter v1.7.4 h1:3yQjWuxICvSpYwqSayAdKRFcvBl1y/vogCxczWSmix0= github.com/hashicorp/go-getter v1.7.4/go.mod h1:W7TalhMmbPmsSMdNjD0ZskARur/9GJ17cfHTRtXV744= -github.com/hashicorp/go-hclog v1.5.0 h1:bI2ocEMgcVlz55Oj1xZNBsVi900c7II+fWDyV9o+13c= -github.com/hashicorp/go-hclog v1.5.0/go.mod h1:W4Qnvbt70Wk/zYJryRzDRU/4r0kIg0PVHBcfoyhpF5M= +github.com/hashicorp/go-hclog v1.6.3 h1:Qr2kF+eVWjTiYmU7Y31tYlP1h0q/X3Nl3tPGdaB11/k= +github.com/hashicorp/go-hclog v1.6.3/go.mod h1:W4Qnvbt70Wk/zYJryRzDRU/4r0kIg0PVHBcfoyhpF5M= github.com/hashicorp/go-immutable-radix v1.0.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= github.com/hashicorp/go-immutable-radix v1.3.1 h1:DKHmCUm2hRBK510BaiZlwvpD40f8bJFeZnpfm2KLowc= github.com/hashicorp/go-immutable-radix v1.3.1/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= @@ -746,8 +737,8 @@ github.com/hashicorp/go-metrics v0.5.3 h1:M5uADWMOGCTUNU1YuC4hfknOeHNaX54LDm4oYS github.com/hashicorp/go-metrics v0.5.3/go.mod h1:KEjodfebIOuBYSAe/bHTm+HChmKSxAOXPBieMLYozDE= github.com/hashicorp/go-msgpack v0.5.3/go.mod h1:ahLV/dePpqEmjfWmKiqvPkv/twdG7iPBM1vqhUKIvfM= github.com/hashicorp/go-multierror v1.0.0/go.mod h1:dHtQlpGsu+cZNNAkkCN/P3hoUDHhCYQXV3UM06sGGrk= -github.com/hashicorp/go-plugin v1.5.2 h1:aWv8eimFqWlsEiMrYZdPYl+FdHaBJSN4AWwGWfT1G2Y= -github.com/hashicorp/go-plugin v1.5.2/go.mod h1:w1sAEES3g3PuV/RzUrgow20W2uErMly84hhD3um1WL4= +github.com/hashicorp/go-plugin v1.6.1 h1:P7MR2UP6gNKGPp+y7EZw2kOiq4IR9WiqLvp0XOsVdwI= +github.com/hashicorp/go-plugin v1.6.1/go.mod h1:XPHFku2tFo3o3QKFgSYo+cghcUhw1NA1hZyMK0PWAw0= github.com/hashicorp/go-retryablehttp v0.5.3/go.mod h1:9B5zBasrRhHXnJnui7y6sL7es7NDiJgTc6Er0maI1Xs= github.com/hashicorp/go-rootcerts v1.0.0/go.mod h1:K6zTfqpRlCUIjkwsN4Z+hiSfzSTQa6eBIzfwKfwNnHU= github.com/hashicorp/go-safetemp v1.0.0 h1:2HR189eFNrjHQyENnQMMpCiBAsRxzbTMIgBhEyExpmo= @@ -777,8 +768,8 @@ github.com/hashicorp/memberlist v0.1.3/go.mod h1:ajVTdAv/9Im8oMAAj5G31PhhMCZJV2p github.com/hashicorp/serf v0.8.2/go.mod h1:6hOLApaqBFA1NXqRQAsxw9QxuDEvNxSQRwA/JwenrHc= github.com/hashicorp/yamux v0.1.1 h1:yrQxtgseBDrq9Y652vSRDvsKCJKOUD+GzTS4Y0Y8pvE= github.com/hashicorp/yamux v0.1.1/go.mod h1:CtWFDAQgb7dxtzFs4tWbplKIe2jSi3+5vKbgIO0SLnQ= -github.com/hdevalence/ed25519consensus v0.1.0 h1:jtBwzzcHuTmFrQN6xQZn6CQEO/V9f7HsjsjeEZ6auqU= -github.com/hdevalence/ed25519consensus v0.1.0/go.mod h1:w3BHWjwJbFU29IRHL1Iqkw3sus+7FctEyM4RqDxYNzo= +github.com/hdevalence/ed25519consensus v0.2.0 h1:37ICyZqdyj0lAZ8P4D1d1id3HqbbG1N3iBb1Tb4rdcU= +github.com/hdevalence/ed25519consensus v0.2.0/go.mod h1:w3BHWjwJbFU29IRHL1Iqkw3sus+7FctEyM4RqDxYNzo= github.com/holiman/billy v0.0.0-20240216141850-2abb0c79d3c4 h1:X4egAf/gcS1zATw6wn4Ej8vjuVGxeHdan+bRb2ebyv4= github.com/holiman/billy v0.0.0-20240216141850-2abb0c79d3c4/go.mod h1:5GuXa7vkL8u9FkFuWdVvfR5ix8hRB7DbOAaYULamFpc= github.com/holiman/bloomfilter/v2 v2.0.3 h1:73e0e/V0tCydx14a0SCYS/EWCxgwLZ18CZcZKVu0fao= @@ -825,8 +816,6 @@ github.com/json-iterator/go v1.1.7/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/u github.com/json-iterator/go v1.1.8/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/json-iterator/go v1.1.10/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= -github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= -github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk= github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= @@ -837,8 +826,8 @@ github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+o github.com/klauspost/compress v1.10.3/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= github.com/klauspost/compress v1.11.7/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= github.com/klauspost/compress v1.15.11/go.mod h1:QPwzmACJjUTFsnSHH934V6woptycfrDDJnH7hvFVbGM= -github.com/klauspost/compress v1.17.7 h1:ehO88t2UGzQK66LMdE8tibEd1ErmzZjNEqWkjLAKQQg= -github.com/klauspost/compress v1.17.7/go.mod h1:Di0epgTjJY877eYKx5yC51cX2A2Vl2ibi7bDH9ttBbw= +github.com/klauspost/compress v1.17.9 h1:6KIumPrER1LHsvBVuDa0r5xaG0Es51mhhB9BQB2qeMA= +github.com/klauspost/compress v1.17.9/go.mod h1:Di0epgTjJY877eYKx5yC51cX2A2Vl2ibi7bDH9ttBbw= github.com/klauspost/cpuid/v2 v2.2.7 h1:ZWSB3igEs+d0qvnxR/ZBzXVmxkgt8DdzP6m9pfuVLDM= github.com/klauspost/cpuid/v2 v2.2.7/go.mod h1:Lcz8mBdAVJIBVzewtcLocK12l3Y+JytZYpaMropDUws= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= @@ -856,8 +845,6 @@ github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+ github.com/leanovate/gopter v0.2.9 h1:fQjYxZaynp97ozCzfOyOuAGOU4aU/z37zf/tOujFk7c= github.com/leanovate/gopter v0.2.9/go.mod h1:U2L/78B+KVFIx2VmW6onHJQzXtFb+p5y3y2Sh+Jxxv8= github.com/leodido/go-urn v1.2.0/go.mod h1:+8+nEpDfqqsY+g338gtMEUOtuK+4dEMhiQEgxpxOKII= -github.com/leodido/go-urn v1.2.1 h1:BqpAaACuzVSgi/VLzGZIobT2z4v53pjosyNd9Yv6n/w= -github.com/leodido/go-urn v1.2.1/go.mod h1:zt4jvISO2HfUBqxjfIshjdMTYS56ZS/qv49ictyFfxY= github.com/lib/pq v1.10.7 h1:p7ZhMD+KsSRozJr34udlUrhboJwWAgCg34+/ZZNvZZw= github.com/lib/pq v1.10.7/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= github.com/libp2p/go-buffer-pool v0.1.0 h1:oK4mSFcQz7cTQIfqbe4MIj9gLW+mnanjyFtc6cdF0Y8= @@ -866,8 +853,8 @@ github.com/libp2p/go-libp2p v0.31.0 h1:LFShhP8F6xthWiBBq3euxbKjZsoRajVEyBS9snfHx github.com/libp2p/go-libp2p v0.31.0/go.mod h1:W/FEK1c/t04PbRH3fA9i5oucu5YcgrG0JVoBWT1B7Eg= github.com/lightstep/lightstep-tracer-common/golang/gogo v0.0.0-20190605223551-bc2310a04743/go.mod h1:qklhhLq1aX+mtWk9cPHPzaBjWImj5ULL6C7HFJtXQMM= github.com/lightstep/lightstep-tracer-go v0.18.1/go.mod h1:jlF1pusYV4pidLvZ+XD0UBX0ZE6WURAspgAczcDHrL4= -github.com/linxGnu/grocksdb v1.8.14 h1:HTgyYalNwBSG/1qCQUIott44wU5b2Y9Kr3z7SK5OfGQ= -github.com/linxGnu/grocksdb v1.8.14/go.mod h1:QYiYypR2d4v63Wj1adOOfzglnoII0gLj3PNh4fZkcFA= +github.com/linxGnu/grocksdb v1.9.2 h1:O3mzvO0wuzQ9mtlHbDrShixyVjVbmuqTjFrzlf43wZ8= +github.com/linxGnu/grocksdb v1.9.2/go.mod h1:QYiYypR2d4v63Wj1adOOfzglnoII0gLj3PNh4fZkcFA= github.com/lucasb-eyer/go-colorful v1.2.0 h1:1nnpGOrhyZZuNyfu1QjKiUICQ74+3FNCN69Aj6K7nkY= github.com/lucasb-eyer/go-colorful v1.2.0/go.mod h1:R4dSotOR9KMtayYi1e77YzuveK+i7ruzyGqttikkLy0= github.com/lyft/protoc-gen-validate v0.0.13/go.mod h1:XbGvPuh87YZc5TdIa2/I4pLk0QoUACkjt2znoq26NVQ= @@ -925,12 +912,9 @@ github.com/mmcloughlin/profile v0.1.1/go.mod h1:IhHD7q1ooxgwTgjxQYkACGA77oFTDdFV github.com/moby/term v0.0.0-20221205130635-1aeaba878587 h1:HfkjXDfhgVaN5rmueG8cL8KKeFNecRCXFhaJ2qZ5SKA= github.com/moby/term v0.0.0-20221205130635-1aeaba878587/go.mod h1:8FzsFHVUBGZdbDsJw/ot+X+d5HLUbvklYLJ9uGfcI3Y= github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= -github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= -github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M= -github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= github.com/morikuni/aec v1.0.0 h1:nP9CBfwrvYnBRgY6qfDQkygYDmYwOilePFkwzv4dU8A= github.com/morikuni/aec v1.0.0/go.mod h1:BbKIizmSmc5MMPqRYbxO4ZU0S0+P200+tUnFx7PXmsc= github.com/mr-tron/base58 v1.2.0 h1:T/HDJBh4ZCPbU39/+c3rRvE0uKBQlU27+QI8LJ4t64o= @@ -951,6 +935,8 @@ github.com/multiformats/go-multihash v0.2.3 h1:7Lyc8XfX/IY2jWb/gI7JP+o7JEq9hOa7B github.com/multiformats/go-multihash v0.2.3/go.mod h1:dXgKXCXjBzdscBLk9JkjINiEsCKRVch90MdaGiKsvSM= github.com/multiformats/go-varint v0.0.7 h1:sWSGR+f/eu5ABZA2ZpYKBILXTTs9JWpdEM/nEGOHFS8= github.com/multiformats/go-varint v0.0.7/go.mod h1:r8PUYw/fD/SjBCiKOoDlGF6QawOELpZAu9eioSos/OU= +github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA= +github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f h1:KUppIJq7/+SVif2QVs3tOP0zanoHgBEVAwHxUSIzRqU= github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= @@ -966,8 +952,9 @@ github.com/ncruces/go-strftime v0.1.9 h1:bY0MQC28UADQmHmaF5dgpLmImcShSi2kHU9XLdh github.com/ncruces/go-strftime v0.1.9/go.mod h1:Fwc5htZGVVkseilnfgOVb9mKy6w1naJmn9CehxcKcls= github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A= -github.com/nxadm/tail v1.4.8 h1:nPr65rt6Y5JFSKQO7qToXr7pePgD6Gwiw05lkbyAQTE= github.com/nxadm/tail v1.4.8/go.mod h1:+ncqLTQzXmGhMZNUePPaPqPvBxHAIsmXswZKocGu+AU= +github.com/nxadm/tail v1.4.11 h1:8feyoE3OzPrcshW5/MJ4sGESc5cqmGkGCWlco4l0bqY= +github.com/nxadm/tail v1.4.11/go.mod h1:OTaG3NK980DZzxbRq6lEuzgU+mug70nY11sMd4JXXHc= github.com/oasisprotocol/curve25519-voi v0.0.0-20230904125328-1f23a7beb09a h1:dlRvE5fWabOchtH7znfiFCcOvmIYgOeAS5ifBXBlh9Q= github.com/oasisprotocol/curve25519-voi v0.0.0-20230904125328-1f23a7beb09a/go.mod h1:hVoHR2EVESiICEMbg137etN/Lx+lSrHPTD39Z/uE+2s= github.com/oklog/oklog v0.3.2/go.mod h1:FCV+B7mhrz4o+ueLpx+KqkyXRGMWOYEvfiXtdGtbWGs= @@ -1019,8 +1006,8 @@ github.com/pelletier/go-toml/v2 v2.2.2 h1:aYUidT7k73Pcl9nb2gScu7NSrKCSHIDE89b3+6 github.com/pelletier/go-toml/v2 v2.2.2/go.mod h1:1t835xjRzz80PqgE6HHgN2JOsmgYu/h4qDAS4n929Rs= github.com/performancecopilot/speed v3.0.0+incompatible/go.mod h1:/CLtqpZ5gBg1M9iaPbIdPPGyKcA8hKdoy6hAWba7Yac= github.com/petermattis/goid v0.0.0-20180202154549-b0b1615b78e5/go.mod h1:jvVRKCrJTQWu0XVbaOlby/2lO20uSCHEMzzplHXte1o= -github.com/petermattis/goid v0.0.0-20231207134359-e60b3f734c67 h1:jik8PHtAIsPlCRJjJzl4udgEf7hawInF9texMeO2jrU= -github.com/petermattis/goid v0.0.0-20231207134359-e60b3f734c67/go.mod h1:pxMtw7cyUw6B2bRH0ZBANSPg+AoSud1I1iyJHI69jH4= +github.com/petermattis/goid v0.0.0-20240607163614-bb94eb51e7a7 h1:CtBLeckhC0zAXgp5V8uR30CNYH0JgCJoxCg5+6i2zQk= +github.com/petermattis/goid v0.0.0-20240607163614-bb94eb51e7a7/go.mod h1:pxMtw7cyUw6B2bRH0ZBANSPg+AoSud1I1iyJHI69jH4= github.com/pierrec/lz4 v1.0.2-0.20190131084431-473cd7ce01a1/go.mod h1:3/3N9NVKO0jef7pBehbT1qWhCMrIgbYNnFAZCqQ5LRc= github.com/pierrec/lz4 v2.0.5+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY= github.com/pierrec/xxHash v0.1.5 h1:n/jBpwTHiER4xYvK3/CdPVnLDPchj8eTJFFLUb4QHBo= @@ -1043,8 +1030,8 @@ github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5Fsn github.com/prometheus/client_golang v1.3.0/go.mod h1:hJaj2vgQTGQmVCsAACORcieXFeDPbaTKGT+JTgUa3og= github.com/prometheus/client_golang v1.4.0/go.mod h1:e9GMxYsXl05ICDXkRhurwBS4Q3OK1iX/F2sw+iXX5zU= github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M= -github.com/prometheus/client_golang v1.19.0 h1:ygXvpU1AoN1MhdzckN+PyD9QJOSD4x7kmXYlnfbA6JU= -github.com/prometheus/client_golang v1.19.0/go.mod h1:ZRM9uEAypZakd+q/x7+gmsvXdURP+DABIEIjnmDdp+k= +github.com/prometheus/client_golang v1.19.1 h1:wZWJDwK+NameRJuPGDhlnFgx8e8HN3XHQeLaYJFJBOE= +github.com/prometheus/client_golang v1.19.1/go.mod h1:mP78NwGzrVks5S2H6ab8+ZZGJLZUq1hoULYBAYBw1Ho= github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20190115171406-56726106282f/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= @@ -1059,16 +1046,16 @@ github.com/prometheus/common v0.7.0/go.mod h1:DjGbpBbp5NYNiECxcL/VnbXCCaQpKd3tt2 github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8bs7vj7HSQ4= github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo= github.com/prometheus/common v0.15.0/go.mod h1:U+gB1OBLb1lF3O42bTCL+FK18tX9Oar16Clt/msog/s= -github.com/prometheus/common v0.52.2 h1:LW8Vk7BccEdONfrJBDffQGRtpSzi5CQaRZGtboOO2ck= -github.com/prometheus/common v0.52.2/go.mod h1:lrWtQx+iDfn2mbH5GUzlH9TSHyfZpHkSiG1W7y3sF2Q= +github.com/prometheus/common v0.55.0 h1:KEi6DK7lXW/m7Ig5i47x0vRzuBsHuvJdi5ee6Y3G1dc= +github.com/prometheus/common v0.55.0/go.mod h1:2SECS4xJG1kd8XF9IcM1gMX6510RAEL65zxzNImwdc8= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.0-20190117184657-bf6a532e95b1/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A= github.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= github.com/prometheus/procfs v0.3.0/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= -github.com/prometheus/procfs v0.13.0 h1:GqzLlQyfsPbaEHaQkO7tbDlriv/4o5Hudv6OXHGKX7o= -github.com/prometheus/procfs v0.13.0/go.mod h1:cd4PFCR54QLnGKPaKGA6l+cfuNXtht43ZKY6tow0Y1g= +github.com/prometheus/procfs v0.15.1 h1:YagwOFzUgYfKKHX6Dr+sHT7km/hxC76UB0learggepc= +github.com/prometheus/procfs v0.15.1/go.mod h1:fB45yRUv8NstnjriLhBQLuOUt+WW4BsoGhij/e3PBqk= github.com/rcrowley/go-metrics v0.0.0-20181016184325-3113b8401b8a/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 h1:N/ElC8H3+5XpJzTSTfLsJV/mx9Q9g7kxmchpfZyxgzM= github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= @@ -1088,18 +1075,18 @@ github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/f github.com/rogpeppe/go-internal v1.12.0 h1:exVL4IDcn6na9z1rAb56Vxr+CgyK3nn3O+epU5NdKM8= github.com/rogpeppe/go-internal v1.12.0/go.mod h1:E+RYuTGaKKdloAfM02xzb0FW3Paa99yedzYV+kq4uf4= github.com/rs/cors v1.7.0/go.mod h1:gFx+x8UowdsKA9AchylcLynDq+nNFfI8FkUZdN/jGCU= -github.com/rs/cors v1.8.3 h1:O+qNyWn7Z+F9M0ILBHgMVPuB1xTOucVd5gtaYyXBpRo= -github.com/rs/cors v1.8.3/go.mod h1:XyqrcTp5zjWr1wsJ8PIRZssZ8b/WMcMf71DJnit4EMU= +github.com/rs/cors v1.11.0 h1:0B9GE/r9Bc2UxRMMtymBkHTenPkHDv0CW4Y98GBY+po= +github.com/rs/cors v1.11.0/go.mod h1:XyqrcTp5zjWr1wsJ8PIRZssZ8b/WMcMf71DJnit4EMU= github.com/rs/xid v1.5.0/go.mod h1:trrq9SKmegXys3aeAKXMUTdJsYXVwGY3RLcfgqegfbg= -github.com/rs/zerolog v1.32.0 h1:keLypqrlIjaFsbmJOBdB/qvyF8KEtCWHwobLp5l/mQ0= -github.com/rs/zerolog v1.32.0/go.mod h1:/7mN4D5sKwJLZQ2b/znpjC3/GQWY/xaDXUM0kKWRHss= +github.com/rs/zerolog v1.33.0 h1:1cU2KZkvPxNyfgEmhHAz/1A9Bz+llsdYzklWFzgp0r8= +github.com/rs/zerolog v1.33.0/go.mod h1:/7mN4D5sKwJLZQ2b/znpjC3/GQWY/xaDXUM0kKWRHss= github.com/russross/blackfriday v1.6.0 h1:KqfZb0pUVN2lYqZUYRddxF4OR8ZMURnJIG5Y3VRLtww= github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= -github.com/sagikazarmark/locafero v0.4.0 h1:HApY1R9zGo4DBgr7dqsTH/JJxLTTsOt7u6keLGt6kNQ= -github.com/sagikazarmark/locafero v0.4.0/go.mod h1:Pe1W6UlPYUk/+wc/6KFhbORCfqzgYEpgQ3O5fPuL3H4= +github.com/sagikazarmark/locafero v0.6.0 h1:ON7AQg37yzcRPU69mt7gwhFEBwxI6P9T4Qu3N51bwOk= +github.com/sagikazarmark/locafero v0.6.0/go.mod h1:77OmuIc6VTraTXKXIs/uvUxKGUXjE1GbemJYHqdNjX0= github.com/sagikazarmark/slog-shim v0.1.0 h1:diDBnUNK9N/354PgrxMywXnAwEr1QZcOr6gto+ugjYE= github.com/sagikazarmark/slog-shim v0.1.0/go.mod h1:SrcSrq8aKtyuqEI1uvTDTK1arOWRIczQRv+GVI1AkeQ= github.com/samuel/go-zookeeper v0.0.0-20190923202752-2cc03de413da/go.mod h1:gi+0XIa01GRL2eRQVjQkKGqKF3SF9vZR/HnPullcV2E= @@ -1193,11 +1180,8 @@ github.com/tyler-smith/go-bip32 v1.0.0 h1:sDR9juArbUgX+bO/iblgZnMPeWY1KZMUC2AFUJ github.com/tyler-smith/go-bip32 v1.0.0/go.mod h1:onot+eHknzV4BVPwrzqY5OoVpyCvnwD7lMawL5aQupE= github.com/tyler-smith/go-bip39 v1.1.0 h1:5eUemwrMargf3BSLRRCalXT93Ns6pQJIjYQN2nyfOP8= github.com/tyler-smith/go-bip39 v1.1.0/go.mod h1:gUYDtqQw1JS3ZJ8UWVcGTGqqr6YIN3CWg+kkNaLt55U= -github.com/ugorji/go v1.1.7 h1:/68gy2h+1mWMrwZFeD1kQialdSzAb432dtpeJ42ovdo= github.com/ugorji/go v1.1.7/go.mod h1:kZn38zHttfInRq0xu/PH0az30d+z6vm202qpg1oXVMw= github.com/ugorji/go/codec v1.1.7/go.mod h1:Ax+UKWsSmolVDwsd+7N3ZtXu+yMGCf907BLYF3GoBXY= -github.com/ugorji/go/codec v1.2.11 h1:BMaWp1Bb6fHwEtbplGBGJ498wD+LKlNSl25MjdZY4dU= -github.com/ugorji/go/codec v1.2.11/go.mod h1:UNopzCgEMSXjBc6AOMqYvWC1ktqTAfzJZUZgYf6w6lg= github.com/ulikunitz/xz v0.5.10/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14= github.com/ulikunitz/xz v0.5.11 h1:kpFauv27b6ynzBNT/Xy+1k+fK4WswhN/6PN5WhFAGw8= github.com/ulikunitz/xz v0.5.11/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14= @@ -1220,8 +1204,8 @@ github.com/zondax/hid v0.9.2/go.mod h1:l5wttcP0jwtdLjqjMMWFVEE7d1zO0jvSPA9OPZxWp github.com/zondax/ledger-go v0.14.3 h1:wEpJt2CEcBJ428md/5MgSLsXLBos98sBOyxNmCjfUCw= github.com/zondax/ledger-go v0.14.3/go.mod h1:IKKaoxupuB43g4NxeQmbLXv7T9AlQyie1UpHb342ycI= go.etcd.io/bbolt v1.3.3/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= -go.etcd.io/bbolt v1.4.0-alpha.0.0.20240404170359-43604f3112c5 h1:qxen9oVGzDdIRP6ejyAJc760RwW4SnVDiTYTzwnXuxo= -go.etcd.io/bbolt v1.4.0-alpha.0.0.20240404170359-43604f3112c5/go.mod h1:eW0HG9/oHQhvRCvb1/pIXW4cOvtDqeQK+XSi3TnwaXY= +go.etcd.io/bbolt v1.4.0-alpha.1 h1:3yrqQzbRRPFPdOMWS/QQIVxVnzSkAZQYeWlZFv1kbj4= +go.etcd.io/bbolt v1.4.0-alpha.1/go.mod h1:S/Z/Nm3iuOnyO1W4XuFfPci51Gj6F1Hv0z8hisyYYOw= go.etcd.io/etcd v0.0.0-20191023171146-3cf2f69b5738/go.mod h1:dnLIgRNXwCJa5e+c6mIZCrds/GIG4ncV9HhK5PX7jPg= go.opencensus.io v0.20.1/go.mod h1:6WKK9ahsWS3RSO+PY9ZHZUfv2irvY6gN279GOPZjmmk= go.opencensus.io v0.20.2/go.mod h1:6WKK9ahsWS3RSO+PY9ZHZUfv2irvY6gN279GOPZjmmk= @@ -1242,8 +1226,8 @@ go.opentelemetry.io/otel v1.24.0 h1:0LAOdjNmQeSTzGBzduGe/rU4tZhMwL5rWgtp9Ku5Jfo= go.opentelemetry.io/otel v1.24.0/go.mod h1:W7b9Ozg4nkF5tWI5zsXkaKKDjdVjpD4oAt9Qi/MArHo= go.opentelemetry.io/otel/metric v1.24.0 h1:6EhoGWWK28x1fbpA4tYTOWBkPefTDQnb8WSGXlc88kI= go.opentelemetry.io/otel/metric v1.24.0/go.mod h1:VYhLe1rFfxuTXLgj4CBiyz+9WYBA8pNGJgDcSFRKBco= -go.opentelemetry.io/otel/sdk v1.22.0 h1:6coWHw9xw7EfClIC/+O31R8IY3/+EiRFHevmHafB2Gw= -go.opentelemetry.io/otel/sdk v1.22.0/go.mod h1:iu7luyVGYovrRpe2fmj3CVKouQNdTOkxtLzPvPz1DOc= +go.opentelemetry.io/otel/sdk v1.24.0 h1:YMPPDNymmQN3ZgczicBY3B6sf9n62Dlj9pWD3ucgoDw= +go.opentelemetry.io/otel/sdk v1.24.0/go.mod h1:KVrIYw6tEubO9E96HQpcmpTKDVn9gdv35HoYiQWGDFg= go.opentelemetry.io/otel/trace v1.24.0 h1:CsKnnL4dUAr/0llH9FKuc698G04IrpWV0MQA/Y1YELI= go.opentelemetry.io/otel/trace v1.24.0/go.mod h1:HPc3Xr/cOApsBI154IU0OI0HJexz+aw5uPdbs3UCjNU= go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= @@ -1277,8 +1261,8 @@ golang.org/x/crypto v0.0.0-20191206172530-e9b2fee46413/go.mod h1:LzIPMQfyMNhhGPh golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200728195943-123391ffb6de/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= -golang.org/x/crypto v0.25.0 h1:ypSNr+bnYL2YhwoMt2zPxHFmbAN1KZs/njMG3hxUp30= -golang.org/x/crypto v0.25.0/go.mod h1:T+wALwcMOSE0kXgUAnPAHqTLW+XHgcELELW8VaDgm/M= +golang.org/x/crypto v0.26.0 h1:RrRspgV4mU+YwB4FYnuBoKsUapNIL5cohGAmSH3azsw= +golang.org/x/crypto v0.26.0/go.mod h1:GY7jblb9wI+FOo5y8/S2oY4zWP07AkOJ4+jxCqdqn54= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= @@ -1290,8 +1274,8 @@ golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u0 golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM= golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= golang.org/x/exp v0.0.0-20200331195152-e8c3332aa8e5/go.mod h1:4M0jN8W1tt0AVLNr8HDosyJCDCDuyL9N9+3m7wDWgKw= -golang.org/x/exp v0.0.0-20240404231335-c0f41cb1a7a0 h1:985EYyeCOxTpcgOTJpflJUwOeEz0CQOdPt73OzpE9F8= -golang.org/x/exp v0.0.0-20240404231335-c0f41cb1a7a0/go.mod h1:/lliqkxwWAhPjf5oSOIJup2XcqJaw8RGS6k3TGEc7GI= +golang.org/x/exp v0.0.0-20240613232115-7f521ea00fb8 h1:yixxcjnhBmY0nkL253HFVIm0JsFHwrHdT3Yh6szTnfY= +golang.org/x/exp v0.0.0-20240613232115-7f521ea00fb8/go.mod h1:jj3sYF3dwk5D+ghuXyeI3r5MFf+NT2An6/9dOA95KSI= golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= @@ -1408,8 +1392,8 @@ golang.org/x/oauth2 v0.0.0-20220822191816-0ebed06d0094/go.mod h1:h4gKUeWbJ4rQPri golang.org/x/oauth2 v0.0.0-20220909003341-f21342109be1/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= golang.org/x/oauth2 v0.0.0-20221014153046-6fdb5e3db783/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= golang.org/x/oauth2 v0.1.0/go.mod h1:G9FE4dLTsbXUu90h/Pf85g4w1D+SSAgR+q46nJZ8M4A= -golang.org/x/oauth2 v0.20.0 h1:4mQdhULixXKP1rwYBW0vAijoXnkTG0BLCDRzfe1idMo= -golang.org/x/oauth2 v0.20.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= +golang.org/x/oauth2 v0.21.0 h1:tsimM75w1tF/uws5rbeHzIWxEqElMehnc+iW793zsZs= +golang.org/x/oauth2 v0.21.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -1425,8 +1409,8 @@ golang.org/x/sync v0.0.0-20220601150217-0de741cfad7f/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20220929204114-8fcdb60fdcc0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.7.0 h1:YsImfSBoP9QPYL0xyKJPq0gcaJdG3rInoqxTWbfQu9M= -golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sync v0.8.0 h1:3NFvSEYkUoMifnESzZl15y791HH1qU2xm6eCJU5ZPXQ= +golang.org/x/sync v0.8.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -1495,7 +1479,6 @@ golang.org/x/sys v0.0.0-20210616094352-59db8d763f22/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210806184541-e5e7981a1069/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210809222454-d867a43fc93e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210819135213-f52c844e1c1c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210823070655-63515b42dcdf/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210908233432-aa78b53d3365/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= @@ -1527,8 +1510,8 @@ golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.11.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/sys v0.22.0 h1:RI27ohtqKCnwULzJLqkv897zojh5/DwS/ENaMzUOaWI= -golang.org/x/sys v0.22.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.24.0 h1:Twjiwq9dn6R1fQcyiK+wQyHWfaz/BJB+YIpzU/Cv3Xg= +golang.org/x/sys v0.24.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20201210144234-2321bbc49cbf/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210220032956-6a3ed077a48d/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= @@ -1536,8 +1519,8 @@ golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuX golang.org/x/term v0.1.0/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= golang.org/x/term v0.17.0/go.mod h1:lLRBjIVuehSbZlaOtGMbcMncT+aqLLLmKrsjNrUguwk= -golang.org/x/term v0.22.0 h1:BbsgPEJULsl2fV/AT3v15Mjva5yXKQDyKf+TbDz7QJk= -golang.org/x/term v0.22.0/go.mod h1:F3qCibpT5AMpCRfhfT53vVJwhLtIVHhB9XDjfFvnMI4= +golang.org/x/term v0.23.0 h1:F6D4vR+EHoL9/sWAWgAR1H2DcHr4PareCbAaCo1RpuU= +golang.org/x/term v0.23.0/go.mod h1:DgV24QBUrK6jhZXl+20l6UWznPlwAHm1Q1mGHtydmSk= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= @@ -1550,8 +1533,8 @@ golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= -golang.org/x/text v0.16.0 h1:a94ExnEXNtEwYLGJSIUxnWoxoRz/ZcCsV63ROupILh4= -golang.org/x/text v0.16.0/go.mod h1:GhwF1Be+LQoKShO3cGOHzqOgRrGaYc9AvblQOmPVHnI= +golang.org/x/text v0.17.0 h1:XtiM5bkSOt+ewxlOE/aE/AKEHibwj/6gvWMl9Rsh0Qc= +golang.org/x/text v0.17.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY= golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= @@ -1681,8 +1664,8 @@ google.golang.org/api v0.96.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ google.golang.org/api v0.97.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ13s= google.golang.org/api v0.98.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ13s= google.golang.org/api v0.100.0/go.mod h1:ZE3Z2+ZOr87Rx7dqFsdRQkRBk36kDtp/h+QpHbB7a70= -google.golang.org/api v0.171.0 h1:w174hnBPqut76FzW5Qaupt7zY8Kql6fiVjgys4f58sU= -google.golang.org/api v0.171.0/go.mod h1:Hnq5AHm4OTMt2BUVjael2CWZFD6vksJdWCWiUAmjC9o= +google.golang.org/api v0.186.0 h1:n2OPp+PPXX0Axh4GuSsL5QL8xQCTb2oDwyzPnQvqUug= +google.golang.org/api v0.186.0/go.mod h1:hvRbBmgoje49RV3xqVXrmP6w93n6ehGgIVPYrGtBFFc= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= google.golang.org/appengine v1.2.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= @@ -1798,10 +1781,10 @@ google.golang.org/genproto v0.0.0-20221010155953-15ba04fc1c0e/go.mod h1:3526vdqw google.golang.org/genproto v0.0.0-20221014173430-6e2ab493f96b/go.mod h1:1vXfmgAz9N9Jx0QA82PqRVauvCz1SGSz739p0f183jM= google.golang.org/genproto v0.0.0-20221014213838-99cd37c6964a/go.mod h1:1vXfmgAz9N9Jx0QA82PqRVauvCz1SGSz739p0f183jM= google.golang.org/genproto v0.0.0-20221025140454-527a21cfbd71/go.mod h1:9qHF0xnpdSfF6knlcsnpzUu5y+rpwgbvsyGAZPBMg4s= -google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de h1:F6qOa9AZTYJXOUEr4jDysRDLrm4PHePlge4v4TGAlxY= -google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de/go.mod h1:VUhTRKeHn9wwcdrk73nvdC9gF178Tzhmt/qyaFcPLSo= -google.golang.org/genproto/googleapis/api v0.0.0-20240528184218-531527333157 h1:7whR9kGa5LUwFtpLm2ArCEejtnxlGeLbAyjFY8sGNFw= -google.golang.org/genproto/googleapis/api v0.0.0-20240528184218-531527333157/go.mod h1:99sLkeliLXfdj2J75X3Ho+rrVCaJze0uwN7zDDkjPVU= +google.golang.org/genproto v0.0.0-20240701130421-f6361c86f094 h1:6whtk83KtD3FkGrVb2hFXuQ+ZMbCNdakARIn/aHMmG8= +google.golang.org/genproto v0.0.0-20240701130421-f6361c86f094/go.mod h1:Zs4wYw8z1zr6RNF4cwYb31mvN/EGaKAdQjNCF3DW6K4= +google.golang.org/genproto/googleapis/api v0.0.0-20240701130421-f6361c86f094 h1:0+ozOGcrp+Y8Aq8TLNN2Aliibms5LEzsq99ZZmAGYm0= +google.golang.org/genproto/googleapis/api v0.0.0-20240701130421-f6361c86f094/go.mod h1:fJ/e3If/Q67Mj99hin0hMhiNyCRmt6BQ2aWIJshUSJw= google.golang.org/genproto/googleapis/rpc v0.0.0-20240709173604-40e1e62336c5 h1:SbSDUWW1PAO24TNpLdeheoYPd7kllICcLU52x6eD4kQ= google.golang.org/genproto/googleapis/rpc v0.0.0-20240709173604-40e1e62336c5/go.mod h1:Ue6ibwXGpU+dqIcODieyLOcgj7z8+IcskoNIgZxtrFY= google.golang.org/grpc v1.17.0/go.mod h1:6QZJwpn2B+Zp71q/5VxRsJ6NXXVCE5NRUHRo+f3cWCs= @@ -1942,8 +1925,8 @@ modernc.org/strutil v1.2.0/go.mod h1:/mdcBmfOibveCTBxUl5B5l6W+TTH1FXPLHZE6bTosX0 modernc.org/token v1.1.0 h1:Xl7Ap9dKaEs5kLoOQeQmPWevfnk/DM5qcLcYlA8ys6Y= modernc.org/token v1.1.0/go.mod h1:UGzOrNV1mAFSEB63lOFHIpNRUVMvYTc6yu1SMY/XTDM= nhooyr.io/websocket v1.8.6/go.mod h1:B70DZP8IakI65RVQ51MsWP/8jndNma26DVA/nFSCgW0= -nhooyr.io/websocket v1.8.7 h1:usjR2uOr/zjjkVMy0lW+PPohFok7PCow5sDjLgX4P4g= -nhooyr.io/websocket v1.8.7/go.mod h1:B70DZP8IakI65RVQ51MsWP/8jndNma26DVA/nFSCgW0= +nhooyr.io/websocket v1.8.11 h1:f/qXNc2/3DpoSZkHt1DQu6rj4zGC8JmkkLkWss0MgN0= +nhooyr.io/websocket v1.8.11/go.mod h1:rN9OFWIUwuxg4fR5tELlYC04bXYowCP9GX47ivo2l+c= pgregory.net/rapid v1.1.0 h1:CMa0sjHSru3puNx+J0MIAuiiEV4N0qj8/cMWGBBCsjw= pgregory.net/rapid v1.1.0/go.mod h1:PY5XlDGj0+V1FCq0o192FdRhpKHGTRIWBgqjDBTrq04= rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= diff --git a/ibc/packet.go b/ibc/packet.go index 1b018cd87..43b3793a2 100644 --- a/ibc/packet.go +++ b/ibc/packet.go @@ -7,7 +7,7 @@ import ( "go.uber.org/multierr" - host "github.com/cosmos/ibc-go/v8/modules/core/24-host" + host "github.com/cosmos/ibc-go/v9/modules/core/24-host" ) type Nanoseconds uint64 diff --git a/ibc/relayer.go b/ibc/relayer.go index 553077fa4..67fa508ec 100644 --- a/ibc/relayer.go +++ b/ibc/relayer.go @@ -5,9 +5,9 @@ import ( "fmt" "time" - chantypes "github.com/cosmos/ibc-go/v8/modules/core/04-channel/types" - ptypes "github.com/cosmos/ibc-go/v8/modules/core/05-port/types" - host "github.com/cosmos/ibc-go/v8/modules/core/24-host" + chantypes "github.com/cosmos/ibc-go/v9/modules/core/04-channel/types" + ptypes "github.com/cosmos/ibc-go/v9/modules/core/05-port/types" + host "github.com/cosmos/ibc-go/v9/modules/core/24-host" ) // Relayer represents an instance of a relayer that can be support IBC. diff --git a/ibc/relayer_test.go b/ibc/relayer_test.go index 779be0836..8c5c8a2ec 100644 --- a/ibc/relayer_test.go +++ b/ibc/relayer_test.go @@ -5,7 +5,7 @@ import ( "github.com/stretchr/testify/require" - chantypes "github.com/cosmos/ibc-go/v8/modules/core/04-channel/types" + chantypes "github.com/cosmos/ibc-go/v9/modules/core/04-channel/types" ) func TestChannelOptsConfigured(t *testing.T) { diff --git a/ibc/types.go b/ibc/types.go index 917bbcaad..c243b491d 100644 --- a/ibc/types.go +++ b/ibc/types.go @@ -15,7 +15,7 @@ import ( "cosmossdk.io/math" - ibcexported "github.com/cosmos/ibc-go/v8/modules/core/03-connection/types" + ibcexported "github.com/cosmos/ibc-go/v9/modules/core/03-connection/types" sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/types/module/testutil" diff --git a/interchain_test.go b/interchain_test.go index 54ea848c8..ff5107fb3 100644 --- a/interchain_test.go +++ b/interchain_test.go @@ -12,8 +12,8 @@ import ( "cosmossdk.io/math" - transfertypes "github.com/cosmos/ibc-go/v8/modules/apps/transfer/types" - clienttypes "github.com/cosmos/ibc-go/v8/modules/core/02-client/types" // nolint:staticcheck + transfertypes "github.com/cosmos/ibc-go/v9/modules/apps/transfer/types" + clienttypes "github.com/cosmos/ibc-go/v9/modules/core/02-client/types" // nolint:staticcheck "github.com/cosmos/cosmos-sdk/codec" codectypes "github.com/cosmos/cosmos-sdk/codec/types" diff --git a/relayer/hermes/hermes_commander.go b/relayer/hermes/hermes_commander.go index d4d78b5f6..02900803e 100644 --- a/relayer/hermes/hermes_commander.go +++ b/relayer/hermes/hermes_commander.go @@ -7,8 +7,8 @@ import ( "go.uber.org/zap" - ibcexported "github.com/cosmos/ibc-go/v8/modules/core/03-connection/types" - "github.com/cosmos/ibc-go/v8/modules/core/23-commitment/types" + ibcexported "github.com/cosmos/ibc-go/v9/modules/core/03-connection/types" + "github.com/cosmos/ibc-go/v9/modules/core/23-commitment/types" "github.com/strangelove-ventures/interchaintest/v9/ibc" "github.com/strangelove-ventures/interchaintest/v9/relayer" diff --git a/relayer/hyperspace/hyperspace_commander.go b/relayer/hyperspace/hyperspace_commander.go index b025ee727..bf76058ec 100644 --- a/relayer/hyperspace/hyperspace_commander.go +++ b/relayer/hyperspace/hyperspace_commander.go @@ -11,8 +11,8 @@ import ( "github.com/pelletier/go-toml/v2" "go.uber.org/zap" - ibcexported "github.com/cosmos/ibc-go/v8/modules/core/03-connection/types" - types23 "github.com/cosmos/ibc-go/v8/modules/core/23-commitment/types" + ibcexported "github.com/cosmos/ibc-go/v9/modules/core/03-connection/types" + types23 "github.com/cosmos/ibc-go/v9/modules/core/23-commitment/types" "github.com/strangelove-ventures/interchaintest/v9/chain/polkadot" "github.com/strangelove-ventures/interchaintest/v9/ibc" From ae6e25b306c79ffd0cf68e5104db95a738fabe03 Mon Sep 17 00:00:00 2001 From: mmsqe Date: Fri, 24 Jan 2025 13:14:11 +0800 Subject: [PATCH 05/10] resolve --- chain/penumbra/penumbra_client_node.go | 7 ++++--- conformance/test.go | 16 ++++------------ examples/hyperspace/hyperspace_test.go | 4 ++-- examples/ibc/ics_test.go | 5 +---- examples/ibc/learn_ibc_test.go | 4 +--- examples/penumbra/penumbra_ibc_test.go | 15 ++++----------- interchain_test.go | 5 +---- 7 files changed, 17 insertions(+), 39 deletions(-) diff --git a/chain/penumbra/penumbra_client_node.go b/chain/penumbra/penumbra_client_node.go index 0aae556f0..5fe055b0c 100644 --- a/chain/penumbra/penumbra_client_node.go +++ b/chain/penumbra/penumbra_client_node.go @@ -20,7 +20,6 @@ import ( sdkmath "cosmossdk.io/math" - transfertypes "github.com/cosmos/ibc-go/v9/modules/apps/transfer/types" //nolint:staticcheck clienttypes "github.com/cosmos/ibc-go/v9/modules/core/02-client/types" @@ -647,9 +646,11 @@ func ibcTransferTimeouts(options ibc.TransferOptions) (clienttypes.Height, uint6 // based timeouts. // see: https://github.com/cosmos/ibc-go/blob/0364aae96f0326651c411ed0f3486be570280e5c/modules/apps/transfer/types/packet.go#L22-L33 func defaultTransferTimeouts() (clienttypes.Height, uint64) { - t, err := clienttypes.ParseHeight(transfertypes.DefaultRelativePacketTimeoutHeight) + // https://github.com/cosmos/ibc-go/blob/v9.0.2/modules/apps/transfer/client/cli/tx.go#L138 + t, err := clienttypes.ParseHeight("0-0") if err != nil { panic(fmt.Errorf("cannot parse packet timeout height string when retrieving default value: %w", err)) } - return t, transfertypes.DefaultRelativePacketTimeoutTimestamp + // https://github.com/cosmos/ibc-go/blob/v9.0.2/modules/apps/transfer/client/cli/tx.go#L34 + return t, uint64((time.Duration(10) * time.Minute).Nanoseconds()) } diff --git a/conformance/test.go b/conformance/test.go index c65a7a4fd..15dfecfc0 100644 --- a/conformance/test.go +++ b/conformance/test.go @@ -421,9 +421,7 @@ func testPacketRelaySuccess( req.NoError(srcAck.Validate(), "invalid acknowledgement on source chain") // get ibc denom for src denom on dst chain - srcDenomTrace := transfertypes.ParseDenomTrace(transfertypes.GetPrefixedDenom(channels[i].Counterparty.PortID, channels[i].Counterparty.ChannelID, srcDenom)) - dstIbcDenom := srcDenomTrace.IBCDenom() - + dstIbcDenom := transfertypes.NewDenom(srcDenom, transfertypes.NewHop(channels[i].Counterparty.PortID, channels[i].Counterparty.ChannelID)).IBCDenom() srcFinalBalance, err := srcChain.GetBalance(ctx, srcUser.(*cosmos.CosmosWallet).FormattedAddressWithPrefix(srcChainCfg.Bech32Prefix), srcDenom) req.NoError(err, "failed to get balance from source chain") @@ -457,9 +455,7 @@ func testPacketRelaySuccess( require.NoError(t, testutil.WaitForBlocks(ctx, 5, srcChain, dstChain)) // get ibc denom for dst denom on src chain - dstDenomTrace := transfertypes.ParseDenomTrace(transfertypes.GetPrefixedDenom(channels[i].PortID, channels[i].ChannelID, dstDenom)) - srcIbcDenom := dstDenomTrace.IBCDenom() - + srcIbcDenom := transfertypes.NewDenom(dstDenom, transfertypes.NewHop(channels[i].PortID, channels[i].ChannelID)).IBCDenom() srcFinalBalance, err := srcChain.GetBalance(ctx, dstUser.(*cosmos.CosmosWallet).FormattedAddressWithPrefix(srcChainCfg.Bech32Prefix), srcIbcDenom) req.NoError(err, "failed to get balance from source chain") @@ -512,9 +508,7 @@ func testPacketRelayFail( require.NoError(t, testutil.WaitForBlocks(ctx, 5, srcChain, dstChain)) // get ibc denom for src denom on dst chain - srcDenomTrace := transfertypes.ParseDenomTrace(transfertypes.GetPrefixedDenom(channels[i].Counterparty.PortID, channels[i].Counterparty.ChannelID, srcDenom)) - dstIbcDenom := srcDenomTrace.IBCDenom() - + dstIbcDenom := transfertypes.NewDenom(srcDenom, transfertypes.NewHop(channels[i].Counterparty.PortID, channels[i].Counterparty.ChannelID)).IBCDenom() srcFinalBalance, err := srcChain.GetBalance(ctx, srcUser.(*cosmos.CosmosWallet).FormattedAddressWithPrefix(srcChainCfg.Bech32Prefix), srcDenom) req.NoError(err, "failed to get balance from source chain") @@ -543,9 +537,7 @@ func testPacketRelayFail( require.NoError(t, testutil.WaitForBlocks(ctx, 5, srcChain, dstChain)) // get ibc denom for dst denom on src chain - dstDenomTrace := transfertypes.ParseDenomTrace(transfertypes.GetPrefixedDenom(channels[i].PortID, channels[i].ChannelID, dstDenom)) - srcIbcDenom := dstDenomTrace.IBCDenom() - + srcIbcDenom := transfertypes.NewDenom(dstDenom, transfertypes.NewHop(channels[i].PortID, channels[i].ChannelID)).IBCDenom() srcFinalBalance, err := srcChain.GetBalance(ctx, dstUser.(*cosmos.CosmosWallet).FormattedAddressWithPrefix(srcChainCfg.Bech32Prefix), srcIbcDenom) req.NoError(err, "failed to get balance from source chain") diff --git a/examples/hyperspace/hyperspace_test.go b/examples/hyperspace/hyperspace_test.go index e62a9da0f..5f0230898 100644 --- a/examples/hyperspace/hyperspace_test.go +++ b/examples/hyperspace/hyperspace_test.go @@ -309,8 +309,8 @@ func TestHyperspace(t *testing.T) { require.True(t, cosmosUserStakeBal.Equal(finalStakeBal)) // Verify cosmos user's final "unit" balance - unitDenomTrace := transfertypes.ParseDenomTrace(transfertypes.GetPrefixedDenom("transfer", "channel-0", "UNIT")) - cosmosUserUnitBal, err := cosmosChain.GetBalance(ctx, cosmosUser.FormattedAddress(), unitDenomTrace.IBCDenom()) + unitDenom := transfertypes.NewDenom("UNIT", transfertypes.NewHop("transfer", "channel-0")).IBCDenom() + cosmosUserUnitBal, err := cosmosChain.GetBalance(ctx, cosmosUser.FormattedAddress(), unitDenom) require.NoError(t, err) require.True(t, cosmosUserUnitBal.Equal(amountUnits)) diff --git a/examples/ibc/ics_test.go b/examples/ibc/ics_test.go index c76717dfe..d292e22d6 100644 --- a/examples/ibc/ics_test.go +++ b/examples/ibc/ics_test.go @@ -181,10 +181,7 @@ func icsTest(t *testing.T, version string, rly ibc.RelayerImplementation) { require.NoError(t, tx.Validate()) require.NoError(t, r.Flush(ctx, eRep, ibcPath, channelID)) - - srcDenomTrace := transfertypes.ParseDenomTrace(transfertypes.GetPrefixedDenom("transfer", consumerChannelID, provider.Config().Denom)) - dstIbcDenom := srcDenomTrace.IBCDenom() - + dstIbcDenom := transfertypes.NewDenom(provider.Config().Denom, transfertypes.NewHop("transfer", consumerChannelID)).IBCDenom() consumerBal, err := consumer.BankQueryBalance(ctx, consumerUser.FormattedAddress(), dstIbcDenom) require.NoError(t, err) require.EqualValues(t, sendAmt, consumerBal) diff --git a/examples/ibc/learn_ibc_test.go b/examples/ibc/learn_ibc_test.go index 17a3e74a8..66aee56b1 100644 --- a/examples/ibc/learn_ibc_test.go +++ b/examples/ibc/learn_ibc_test.go @@ -122,9 +122,7 @@ func TestLearn(t *testing.T) { require.True(t, gaiaUserBalNew.Equal(expectedBal)) // Trace IBC Denom - srcDenomTrace := transfertypes.ParseDenomTrace(transfertypes.GetPrefixedDenom("transfer", osmoChannelID, gaia.Config().Denom)) - dstIbcDenom := srcDenomTrace.IBCDenom() - + dstIbcDenom := transfertypes.NewDenom(gaia.Config().Denom, transfertypes.NewHop("transfer", osmoChannelID)).IBCDenom() // Test destination wallet has increased funds osmosUserBalNew, err := osmosis.GetBalance(ctx, osmosisUser.FormattedAddress(), dstIbcDenom) require.NoError(t, err) diff --git a/examples/penumbra/penumbra_ibc_test.go b/examples/penumbra/penumbra_ibc_test.go index e74cf5866..a558b70bd 100644 --- a/examples/penumbra/penumbra_ibc_test.go +++ b/examples/penumbra/penumbra_ibc_test.go @@ -179,8 +179,7 @@ func TestPenumbraToPenumbraIBC(t *testing.T) { require.True(t, aliceBal.Equal(expectedBal), fmt.Sprintf("incorrect balance, got (%s) expected (%s)", aliceBal, expectedBal)) // Compose IBC token denom information for Chain A's native token denom represented on Chain B - ibcDenom := transfertypes.GetPrefixedDenom(abChan.Counterparty.PortID, abChan.Counterparty.ChannelID, chainA.Config().Denom) - + ibcDenom := transfertypes.NewDenom(chainA.Config().Denom, transfertypes.NewHop(abChan.Counterparty.PortID, abChan.Counterparty.ChannelID)).IBCDenom() bobBal, err = chainB.GetBalance(ctx, bob.KeyName(), ibcDenom) require.NoError(t, err) require.True(t, bobBal.Equal(transferAmount), fmt.Sprintf("incorrect balance, got (%s) expected (%s)", bobBal, transferAmount)) @@ -436,10 +435,7 @@ func TestPenumbraToCosmosIBC(t *testing.T) { require.True(t, aliceBal.Equal(expectedBal), fmt.Sprintf("incorrect balance, got (%s) expected (%s)", aliceBal, expectedBal)) // Compose IBC token denom information for Chain A's native token denom represented on Chain B - ibcDenom := transfertypes.GetPrefixedDenom(abChan.Counterparty.PortID, abChan.Counterparty.ChannelID, chainA.Config().Denom) - ibcDenomTrace := transfertypes.ParseDenomTrace(ibcDenom) - chainADenomOnChainB := ibcDenomTrace.IBCDenom() - + chainADenomOnChainB := transfertypes.NewDenom(chainA.Config().Denom, transfertypes.NewHop(abChan.Counterparty.PortID, abChan.Counterparty.ChannelID)).IBCDenom() bobBal, err = chainB.GetBalance(ctx, bob.FormattedAddress(), chainADenomOnChainB) require.NoError(t, err) require.True(t, bobBal.Equal(transferAmount), fmt.Sprintf("incorrect balance, got (%s) expected (%s)", bobBal, transferAmount)) @@ -449,7 +445,7 @@ func TestPenumbraToCosmosIBC(t *testing.T) { transfer = ibc.WalletAmount{ Address: string(aliceAddr), - Denom: ibcDenomTrace.IBCDenom(), + Denom: chainADenomOnChainB, Amount: transferAmount, } @@ -558,10 +554,7 @@ func TestPenumbraToCosmosIBC(t *testing.T) { require.NoError(t, err) // Compose IBC token denom information for Chain B's native token denom represented on Chain A - chainBIbcDenom := transfertypes.GetPrefixedDenom(abChan.PortID, abChan.ChannelID, chainB.Config().Denom) - chainBIbcDenomTrace := transfertypes.ParseDenomTrace(chainBIbcDenom) - chainBDenomOnChainA := chainBIbcDenomTrace.IBCDenom() - + chainBDenomOnChainA := transfertypes.NewDenom(chainB.Config().Denom, transfertypes.NewHop(abChan.PortID, abChan.ChannelID)).IBCDenom() transfer = ibc.WalletAmount{ Address: string(aliceAddr), Denom: chainB.Config().Denom, diff --git a/interchain_test.go b/interchain_test.go index ff5107fb3..0c2f7200f 100644 --- a/interchain_test.go +++ b/interchain_test.go @@ -438,10 +438,7 @@ func broadcastTxCosmosChainTest(t *testing.T, relayerImpl ibc.RelayerImplementat t.Run("transfer success", func(t *testing.T) { require.NoError(t, testutil.WaitForBlocks(ctx, 5, chain0, chain1)) - - srcDenomTrace := transfertypes.ParseDenomTrace(transfertypes.GetPrefixedDenom("transfer", "channel-0", chain0.Config().Denom)) - dstIbcDenom := srcDenomTrace.IBCDenom() - + dstIbcDenom := transfertypes.NewDenom(chain0.Config().Denom, transfertypes.NewHop("transfer", "channel-0")).IBCDenom() dstFinalBalance, err := chain1.GetBalance(ctx, testUser.(*cosmos.CosmosWallet).FormattedAddressWithPrefix(chain1.Config().Bech32Prefix), dstIbcDenom) require.NoError(t, err, "failed to get balance from dest chain") require.True(t, dstFinalBalance.Equal(sendAmount)) From 8ecae534bfd5645e2b60dc7a85a680a9d8288c39 Mon Sep 17 00:00:00 2001 From: mmsqe Date: Fri, 24 Jan 2025 13:14:15 +0800 Subject: [PATCH 06/10] avoid v8 --- go.mod | 4 +++- go.sum | 8 ++++---- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/go.mod b/go.mod index 3d025cf3f..2e9ca3ac7 100644 --- a/go.mod +++ b/go.mod @@ -77,7 +77,7 @@ require ( cosmossdk.io/core v0.11.1 // indirect cosmossdk.io/depinject v1.0.0 // indirect cosmossdk.io/errors v1.0.1 // indirect - cosmossdk.io/log v1.3.1 // indirect + cosmossdk.io/log v1.4.0 // indirect cosmossdk.io/x/tx v0.13.4 // indirect filippo.io/edwards25519 v1.1.0 // indirect github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 // indirect @@ -293,3 +293,5 @@ require ( rsc.io/tmplfunc v0.0.3 // indirect sigs.k8s.io/yaml v1.4.0 // indirect ) + +replace github.com/misko9/go-substrate-rpc-client/v4 => github.com/mmsqe/go-substrate-rpc-client/v4 v4.0.0-20250123090201-90ee8052ef5c diff --git a/go.sum b/go.sum index 07f406706..ab4b52238 100644 --- a/go.sum +++ b/go.sum @@ -198,8 +198,8 @@ cosmossdk.io/depinject v1.0.0 h1:dQaTu6+O6askNXO06+jyeUAnF2/ssKwrrszP9t5q050= cosmossdk.io/depinject v1.0.0/go.mod h1:zxK/h3HgHoA/eJVtiSsoaRaRA2D5U4cJ5thIG4ssbB8= cosmossdk.io/errors v1.0.1 h1:bzu+Kcr0kS/1DuPBtUFdWjzLqyUuCiyHjyJB6srBV/0= cosmossdk.io/errors v1.0.1/go.mod h1:MeelVSZThMi4bEakzhhhE/CKqVv3nOJDA25bIqRDu/U= -cosmossdk.io/log v1.3.1 h1:UZx8nWIkfbbNEWusZqzAx3ZGvu54TZacWib3EzUYmGI= -cosmossdk.io/log v1.3.1/go.mod h1:2/dIomt8mKdk6vl3OWJcPk2be3pGOS8OQaLUM/3/tCM= +cosmossdk.io/log v1.4.0 h1:Ttt9d6fQ0GlktwhcysOeNiIjixW7l0rYBocmoXOb11k= +cosmossdk.io/log v1.4.0/go.mod h1:k08v0Pyq+gCP6phvdI6RCGhLf/r425UT6Rk/m+o74rU= cosmossdk.io/math v1.3.0 h1:RC+jryuKeytIiictDslBP9i1fhkVm6ZDmZEoNP316zE= cosmossdk.io/math v1.3.0/go.mod h1:vnRTxewy+M7BtXBNFybkuhSH4WfedVAAnERHgVFhp3k= cosmossdk.io/store v1.1.0 h1:LnKwgYMc9BInn9PhpTFEQVbL9UK475G2H911CGGnWHk= @@ -889,8 +889,6 @@ github.com/minio/highwayhash v1.0.2 h1:Aak5U0nElisjDCfPSG79Tgzkn2gl66NxOMspRrKnA github.com/minio/highwayhash v1.0.2/go.mod h1:BQskDq+xkJ12lmlUUi7U0M5Swg3EWR+dLTk+kldvVxY= github.com/minio/sha256-simd v1.0.1 h1:6kaan5IFmwTNynnKKpDHe6FWHohJOHhCPchzK49dzMM= github.com/minio/sha256-simd v1.0.1/go.mod h1:Pz6AKMiUdngCLpeTL/RJY1M9rUuPMYujV5xJjtbRSN8= -github.com/misko9/go-substrate-rpc-client/v4 v4.0.0-20240603204351-26b456ae3afe h1:0fcCSfvBgbagEsEMkZuxgA3Ex7IN9i1Hon0fwgMLpQw= -github.com/misko9/go-substrate-rpc-client/v4 v4.0.0-20240603204351-26b456ae3afe/go.mod h1:Q5BxOd9FxJqYp4vCiLGVdetecPcWTmUQIu0bRigYosU= github.com/mitchellh/cli v1.0.0/go.mod h1:hNIlj7HEI86fIcpObd7a0FcrxTWetlwJDGcceTlRvqc= github.com/mitchellh/go-homedir v1.0.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y= @@ -909,6 +907,8 @@ github.com/mitchellh/pointerstructure v1.2.0/go.mod h1:BRAsLI5zgXmw97Lf6s25bs8oh github.com/mmcloughlin/addchain v0.4.0 h1:SobOdjm2xLj1KkXN5/n0xTIWyZA2+s99UCY1iPfkHRY= github.com/mmcloughlin/addchain v0.4.0/go.mod h1:A86O+tHqZLMNO4w6ZZ4FlVQEadcoqkyU72HC5wJ4RlU= github.com/mmcloughlin/profile v0.1.1/go.mod h1:IhHD7q1ooxgwTgjxQYkACGA77oFTDdFVejUS1/tS/qU= +github.com/mmsqe/go-substrate-rpc-client/v4 v4.0.0-20250123090201-90ee8052ef5c h1:oCt2SvNR+Je60k0KtK72uAeNdJRMH9gF0P4cH3Ne+SE= +github.com/mmsqe/go-substrate-rpc-client/v4 v4.0.0-20250123090201-90ee8052ef5c/go.mod h1:dEVjyUJRwrKxcUQa4hYOujQxmepRx1myUTr+0qj+7Qk= github.com/moby/term v0.0.0-20221205130635-1aeaba878587 h1:HfkjXDfhgVaN5rmueG8cL8KKeFNecRCXFhaJ2qZ5SKA= github.com/moby/term v0.0.0-20221205130635-1aeaba878587/go.mod h1:8FzsFHVUBGZdbDsJw/ot+X+d5HLUbvklYLJ9uGfcI3Y= github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= From 90100c337558e34d532c7470732449ce31551b63 Mon Sep 17 00:00:00 2001 From: mmsqe Date: Fri, 24 Jan 2025 13:14:19 +0800 Subject: [PATCH 07/10] avoid invalid duration for client-tp --- ibc/relayer.go | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/ibc/relayer.go b/ibc/relayer.go index 67fa508ec..18ff2b0d3 100644 --- a/ibc/relayer.go +++ b/ibc/relayer.go @@ -292,7 +292,9 @@ type CreateClientOptions struct { // empty values will use the relayer defaults. func DefaultClientOpts() CreateClientOptions { - return CreateClientOptions{} + return CreateClientOptions{ + TrustingPeriod: "0", + } } func (opts CreateClientOptions) Validate() error { From c827eefb06aacdebe5521f857344c5418a3349f9 Mon Sep 17 00:00:00 2001 From: mmsqe Date: Fri, 24 Jan 2025 13:14:27 +0800 Subject: [PATCH 08/10] fix namada --- chain/namada/namada_chain.go | 2 +- chain/namada/namada_node.go | 6 +++--- go.mod | 2 -- go.sum | 14 -------------- 4 files changed, 4 insertions(+), 20 deletions(-) diff --git a/chain/namada/namada_chain.go b/chain/namada/namada_chain.go index e5da10cf5..d6ea1eb00 100644 --- a/chain/namada/namada_chain.go +++ b/chain/namada/namada_chain.go @@ -504,7 +504,7 @@ func (c *NamadaChain) SendIBCTransfer(ctx context.Context, channelID, keyName st return ibc.Tx{}, fmt.Errorf("checking the events failed: %v", err) } const evType = "send_packet" - tendermintEvents := results.EndBlockEvents + tendermintEvents := results.FinalizeBlockEvents var events []cometbft.Event for _, event := range tendermintEvents { if event.Type != evType { diff --git a/chain/namada/namada_node.go b/chain/namada/namada_node.go index fc85eb4f1..0c8f57eda 100644 --- a/chain/namada/namada_node.go +++ b/chain/namada/namada_node.go @@ -15,9 +15,9 @@ import ( "github.com/docker/go-connections/nat" // To use a legacy tendermint client. - rpcclient "github.com/tendermint/tendermint/rpc/client" - rpchttp "github.com/tendermint/tendermint/rpc/client/http" - libclient "github.com/tendermint/tendermint/rpc/jsonrpc/client" + rpcclient "github.com/cometbft/cometbft/rpc/client" + rpchttp "github.com/cometbft/cometbft/rpc/client/http" + libclient "github.com/cometbft/cometbft/rpc/jsonrpc/client" "go.uber.org/zap" "github.com/strangelove-ventures/interchaintest/v9/dockerutil" diff --git a/go.mod b/go.mod index 2e9ca3ac7..0cb7cd2df 100644 --- a/go.mod +++ b/go.mod @@ -50,7 +50,6 @@ require ( github.com/rivo/tview v0.0.0-20220307222120-9994674d60a8 github.com/spf13/cobra v1.8.1 github.com/stretchr/testify v1.9.0 - github.com/tendermint/tendermint v0.38.0-dev github.com/tidwall/gjson v1.17.1 github.com/tyler-smith/go-bip32 v1.0.0 github.com/tyler-smith/go-bip39 v1.1.0 @@ -95,7 +94,6 @@ require ( github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d // indirect github.com/bgentry/speakeasy v0.2.0 // indirect github.com/bits-and-blooms/bitset v1.10.0 // indirect - github.com/btcsuite/btcd v0.22.1 // indirect github.com/btcsuite/btcd/btcec/v2 v2.3.4 // indirect github.com/cenkalti/backoff/v4 v4.3.0 // indirect github.com/cespare/xxhash/v2 v2.3.0 // indirect diff --git a/go.sum b/go.sum index ab4b52238..ae769035a 100644 --- a/go.sum +++ b/go.sum @@ -299,8 +299,6 @@ github.com/bgentry/speakeasy v0.2.0 h1:tgObeVOf8WAvtuAX6DhJ4xks4CFNwPDZiqzGqIHE5 github.com/bgentry/speakeasy v0.2.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= github.com/bits-and-blooms/bitset v1.10.0 h1:ePXTeiPEazB5+opbv5fr8umg2R/1NlzgDsyepwsSr88= github.com/bits-and-blooms/bitset v1.10.0/go.mod h1:7hO7Gc7Pp1vODcmWvKMRA9BNmbv6a/7QIWpPxHddWR8= -github.com/btcsuite/btcd v0.22.1 h1:CnwP9LM/M9xuRrGSCGeMVs9iv09uMqwsVX7EeIpgV2c= -github.com/btcsuite/btcd v0.22.1/go.mod h1:wqgTSL29+50LRkmOVknEdmt8ZojIzhuWvgu/iptuN7Y= github.com/btcsuite/btcd/btcec/v2 v2.3.3 h1:6+iXlDKE8RMtKsvK0gshlXIuPbyWM/h84Ensb7o3sC0= github.com/btcsuite/btcd/btcec/v2 v2.3.3/go.mod h1:zYzJ8etWJQIv1Ogk7OzpWjowwOdXY1W/17j2MW85J04= github.com/btcsuite/btcd/btcutil v1.1.3 h1:xfbtw8lwpp0G6NwSHb+UE67ryTFHJAiNuipusjXSohQ= @@ -318,7 +316,6 @@ github.com/cenkalti/backoff/v4 v4.1.1/go.mod h1:scbssz8iZGpm3xbr14ovlUdkxfGXNInq github.com/cenkalti/backoff/v4 v4.3.0 h1:MyRJ/UdXutAwSAT+s3wNd7MfTIcy71VQueUuFK343L8= github.com/cenkalti/backoff/v4 v4.3.0/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= -github.com/cespare/xxhash v1.1.0 h1:a6HrQnmkObjyL+Gs60czilIUGqrzKutQD6XZog3p+ko= github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs= @@ -415,8 +412,6 @@ github.com/crate-crypto/go-ipa v0.0.0-20240223125850-b1e8a79f509c h1:uQYC5Z1mdLR github.com/crate-crypto/go-ipa v0.0.0-20240223125850-b1e8a79f509c/go.mod h1:geZJZH3SzKCqnz5VT0q/DyIG/tvu/dZk+VIfXicupJs= github.com/crate-crypto/go-kzg-4844 v1.0.0 h1:TsSgHwrkTKecKJ4kadtHi4b3xHW5dCFUDFnUp1TsawI= github.com/crate-crypto/go-kzg-4844 v1.0.0/go.mod h1:1kMhvPgI0Ky3yIa+9lFySEBUBXkYxeOi8ZF1sYioxhc= -github.com/creachadair/taskgroup v0.3.2 h1:zlfutDS+5XG40AOxcHDSThxKzns8Tnr9jnr6VqkYlkM= -github.com/creachadair/taskgroup v0.3.2/go.mod h1:wieWwecHVzsidg2CsUnFinW1faVN4+kq+TDlRJQ0Wbk= github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7DoTY= github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/danieljoos/wincred v1.2.1 h1:dl9cBrupW8+r5250DYkYxocLeZ1Y4vB1kxgtjxw8GQs= @@ -443,9 +438,6 @@ github.com/decred/dcrd/dcrec/secp256k1/v4 v4.3.0/go.mod h1:v57UDF4pDQJcEfFUCRop3 github.com/desertbit/timer v0.0.0-20180107155436-c41aec40b27f/go.mod h1:xH/i4TFMt8koVQZ6WFms69WAsDWr2XsYL3Hkl7jkoLE= github.com/desertbit/timer v1.0.1 h1:yRpYNn5Vaaj6QXecdLMPMJsW81JLiI1eokUft5nBmeo= github.com/desertbit/timer v1.0.1/go.mod h1:htRrYeY5V/t4iu1xCJ5XsQvp4xve8QulXXctAzxqcwE= -github.com/dgraph-io/badger v1.6.2 h1:mNw0qs90GVgGGWylh0umH5iag1j6n/PeJtNvL6KY/x8= -github.com/dgraph-io/badger/v2 v2.2007.4 h1:TRWBQg8UrlUhaFdco01nO2uXwzKS7zd+HVdwV/GHc4o= -github.com/dgraph-io/badger/v2 v2.2007.4/go.mod h1:vSw/ax2qojzbN6eXHIx6KPKtCSHJN/Uz0X0VPruTIhk= github.com/dgraph-io/badger/v4 v4.2.0 h1:kJrlajbXXL9DFTNuhhu9yCx7JJa4qpYWxtE8BzuWsEs= github.com/dgraph-io/badger/v4 v4.2.0/go.mod h1:qfCqhPoWDFJRx1gp5QwwyGo8xk1lbHUxvK9nK0OGAak= github.com/dgraph-io/ristretto v0.1.1 h1:6CWw5tJNgpegArSHpNHJKldNeq03FQCwYvfMVWajOK8= @@ -1154,14 +1146,8 @@ github.com/supranational/blst v0.3.11 h1:LyU6FolezeWAhvQk0k6O/d49jqgO52MSDDfYgbe github.com/supranational/blst v0.3.11/go.mod h1:jZJtfjgudtNl4en1tzwPIV3KjUnQUvG3/j+w+fVonLw= github.com/syndtr/goleveldb v1.0.1-0.20220721030215-126854af5e6d h1:vfofYNRScrDdvS342BElfbETmL1Aiz3i2t0zfRj16Hs= github.com/syndtr/goleveldb v1.0.1-0.20220721030215-126854af5e6d/go.mod h1:RRCYJbIwD5jmqPI9XoAFR0OcDxqUctll6zUj/+B4S48= -github.com/tecbot/gorocksdb v0.0.0-20191217155057-f0fad39f321c h1:g+WoO5jjkqGAzHWCjJB1zZfXPIAaDpzXIEJ0eS6B5Ok= -github.com/tecbot/gorocksdb v0.0.0-20191217155057-f0fad39f321c/go.mod h1:ahpPrc7HpcfEWDQRZEmnXMzHY03mLDYMCxeDzy46i+8= github.com/tendermint/go-amino v0.16.0 h1:GyhmgQKvqF82e2oZeuMSp9JTN0N09emoSZlb2lyGa2E= github.com/tendermint/go-amino v0.16.0/go.mod h1:TQU0M1i/ImAo+tYpZi73AU3V/dKeCoMC9Sphe2ZwGME= -github.com/tendermint/tendermint v0.38.0-dev h1:yX4zsEgTF9PxlLmhx9XAPTGH2E9FSlqSpHcY7sW7Vb8= -github.com/tendermint/tendermint v0.38.0-dev/go.mod h1:EHKmaqObmcGysoRr7krxXoxxhUDyYWbKvvRYJ9tCGWY= -github.com/tendermint/tm-db v0.6.6 h1:EzhaOfR0bdKyATqcd5PNeyeq8r+V4bRPHBfyFdD9kGM= -github.com/tendermint/tm-db v0.6.6/go.mod h1:wP8d49A85B7/erz/r4YbKssKw6ylsO/hKtFk7E1aWZI= github.com/tidwall/btree v1.7.0 h1:L1fkJH/AuEh5zBnnBbmTwQ5Lt+bRJ5A8EWecslvo9iI= github.com/tidwall/btree v1.7.0/go.mod h1:twD9XRA5jj9VUQGELzDO4HPQTNJsoWWfYEL+EUQ2cKY= github.com/tidwall/gjson v1.17.1 h1:wlYEnwqAHgzmhNUFfw7Xalt2JzQvsMx2Se4PcoFCT/U= From c45346d19b9054ff9a1612180252df6b578349a2 Mon Sep 17 00:00:00 2001 From: mmsqe Date: Tue, 28 Jan 2025 15:23:35 +0800 Subject: [PATCH 09/10] bump wasmd --- go.mod | 95 ++++++++++++++------------ go.sum | 202 ++++++++++++++++++++++++++++++-------------------------- go.work | 8 +-- 3 files changed, 164 insertions(+), 141 deletions(-) diff --git a/go.mod b/go.mod index 0cb7cd2df..ab26b19c1 100644 --- a/go.mod +++ b/go.mod @@ -1,8 +1,8 @@ module github.com/strangelove-ventures/interchaintest/v9 -go 1.22.5 +go 1.23.1 -toolchain go1.23.0 +toolchain go1.23.4 replace ( github.com/ChainSafe/go-schnorrkel => github.com/ChainSafe/go-schnorrkel v0.0.0-20200405005733-88cbf1b4c40d @@ -14,19 +14,19 @@ replace ( ) require ( - cosmossdk.io/math v1.3.0 - cosmossdk.io/store v1.1.0 - cosmossdk.io/x/feegrant v0.1.0 + cosmossdk.io/math v1.5.0 + cosmossdk.io/store v1.1.1 + cosmossdk.io/x/feegrant v0.1.1 cosmossdk.io/x/upgrade v0.1.4 github.com/99designs/keyring v1.2.2 github.com/BurntSushi/toml v1.4.0 github.com/ChainSafe/go-schnorrkel/1 v0.0.0-00010101000000-000000000000 - github.com/CosmWasm/wasmd v0.42.1-0.20230928145107-894076a25cb2 + github.com/CosmWasm/wasmd v0.42.1-0.20250127193122-dee9c151137f github.com/StirlingMarketingGroup/go-namecase v1.0.0 github.com/atotto/clipboard v0.1.4 github.com/avast/retry-go/v4 v4.5.1 - github.com/cometbft/cometbft v0.38.11 - github.com/cosmos/cosmos-sdk v0.50.9 + github.com/cometbft/cometbft v0.38.15 + github.com/cosmos/cosmos-sdk v0.50.11 github.com/cosmos/go-bip39 v1.0.0 github.com/cosmos/gogoproto v1.7.0 github.com/cosmos/ibc-go/modules/capability v1.0.1 @@ -49,17 +49,17 @@ require ( github.com/pelletier/go-toml/v2 v2.2.2 github.com/rivo/tview v0.0.0-20220307222120-9994674d60a8 github.com/spf13/cobra v1.8.1 - github.com/stretchr/testify v1.9.0 + github.com/stretchr/testify v1.10.0 github.com/tidwall/gjson v1.17.1 github.com/tyler-smith/go-bip32 v1.0.0 github.com/tyler-smith/go-bip39 v1.1.0 go.uber.org/multierr v1.11.0 go.uber.org/zap v1.27.0 - golang.org/x/crypto v0.26.0 + golang.org/x/crypto v0.31.0 golang.org/x/mod v0.19.0 - golang.org/x/sync v0.8.0 + golang.org/x/sync v0.10.0 golang.org/x/tools v0.23.0 - google.golang.org/grpc v1.65.0 + google.golang.org/grpc v1.67.1 gopkg.in/yaml.v3 v3.0.1 modernc.org/sqlite v1.31.1 ) @@ -68,21 +68,21 @@ require ( cloud.google.com/go v0.115.0 // indirect cloud.google.com/go/auth v0.6.0 // indirect cloud.google.com/go/auth/oauth2adapt v0.2.2 // indirect - cloud.google.com/go/compute/metadata v0.3.0 // indirect + cloud.google.com/go/compute/metadata v0.5.0 // indirect cloud.google.com/go/iam v1.1.9 // indirect cloud.google.com/go/storage v1.41.0 // indirect - cosmossdk.io/api v0.7.5 // indirect + cosmossdk.io/api v0.7.6 // indirect cosmossdk.io/collections v0.4.0 // indirect cosmossdk.io/core v0.11.1 // indirect - cosmossdk.io/depinject v1.0.0 // indirect + cosmossdk.io/depinject v1.1.0 // indirect cosmossdk.io/errors v1.0.1 // indirect - cosmossdk.io/log v1.4.0 // indirect - cosmossdk.io/x/tx v0.13.4 // indirect + cosmossdk.io/log v1.5.0 // indirect + cosmossdk.io/x/tx v0.13.7 // indirect filippo.io/edwards25519 v1.1.0 // indirect github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 // indirect github.com/ChainSafe/go-schnorrkel v0.0.0-20200405005733-88cbf1b4c40d // indirect github.com/ComposableFi/go-subkey/v2 v2.0.0-tm03420 // indirect - github.com/CosmWasm/wasmvm v1.5.4 // indirect + github.com/CosmWasm/wasmvm/v2 v2.2.1 // indirect github.com/DataDog/datadog-go v4.8.3+incompatible // indirect github.com/DataDog/zstd v1.5.5 // indirect github.com/FactomProject/basen v0.0.0-20150613233007-fe3947df716e // indirect @@ -95,25 +95,29 @@ require ( github.com/bgentry/speakeasy v0.2.0 // indirect github.com/bits-and-blooms/bitset v1.10.0 // indirect github.com/btcsuite/btcd/btcec/v2 v2.3.4 // indirect + github.com/bytedance/sonic v1.12.3 // indirect + github.com/bytedance/sonic/loader v0.2.0 // indirect github.com/cenkalti/backoff/v4 v4.3.0 // indirect github.com/cespare/xxhash/v2 v2.3.0 // indirect github.com/chzyer/readline v1.5.1 // indirect + github.com/cloudwego/base64x v0.1.4 // indirect + github.com/cloudwego/iasm v0.2.0 // indirect + github.com/cockroachdb/apd/v3 v3.2.1 // indirect github.com/cockroachdb/datadriven v1.0.3-0.20230801171734-e384cf455877 // indirect github.com/cockroachdb/errors v1.11.3 // indirect github.com/cockroachdb/fifo v0.0.0-20240616162244-4768e80dfb9a // indirect github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b // indirect - github.com/cockroachdb/pebble v1.1.1 // indirect + github.com/cockroachdb/pebble v1.1.2 // indirect github.com/cockroachdb/redact v1.1.5 // indirect github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06 // indirect - github.com/cometbft/cometbft-db v0.14.0 // indirect + github.com/cometbft/cometbft-db v0.14.1 // indirect github.com/consensys/bavard v0.1.13 // indirect github.com/consensys/gnark-crypto v0.12.1 // indirect github.com/cosmos/btcutil v1.0.5 // indirect - github.com/cosmos/cosmos-db v1.0.2 // indirect + github.com/cosmos/cosmos-db v1.1.1 // indirect github.com/cosmos/cosmos-proto v1.0.0-beta.5 // indirect github.com/cosmos/gogogateway v1.2.0 // indirect - github.com/cosmos/iavl v1.2.0 // indirect - github.com/cosmos/ibc-go/v8 v8.4.0 // indirect + github.com/cosmos/iavl v1.2.4 // indirect github.com/cosmos/ics23/go v0.11.0 // indirect github.com/cosmos/ledger-cosmos-go v0.13.3 // indirect github.com/crate-crypto/go-kzg-4844 v1.0.0 // indirect @@ -126,6 +130,7 @@ require ( github.com/desertbit/timer v1.0.1 // indirect github.com/dgraph-io/badger/v4 v4.2.0 // indirect github.com/dgraph-io/ristretto v0.1.1 // indirect + github.com/distribution/reference v0.5.0 // indirect github.com/docker/distribution v2.8.2+incompatible // indirect github.com/docker/go-units v0.5.0 // indirect github.com/dustin/go-humanize v1.0.1 // indirect @@ -145,12 +150,12 @@ require ( github.com/go-ole/go-ole v1.3.0 // indirect github.com/godbus/dbus v0.0.0-20190726142602-4481cbc300e2 // indirect github.com/gogo/googleapis v1.4.1 // indirect - github.com/golang/glog v1.2.1 // indirect + github.com/golang/glog v1.2.2 // indirect github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect github.com/golang/mock v1.6.0 // indirect github.com/golang/protobuf v1.5.4 // indirect github.com/golang/snappy v0.0.5-0.20220116011046-fa5810519dcb // indirect - github.com/google/btree v1.1.2 // indirect + github.com/google/btree v1.1.3 // indirect github.com/google/flatbuffers v24.3.25+incompatible // indirect github.com/google/orderedcode v0.0.1 // indirect github.com/google/s2a-go v0.1.7 // indirect @@ -165,7 +170,7 @@ require ( github.com/gtank/merlin v0.1.1 // indirect github.com/gtank/ristretto255 v0.1.2 // indirect github.com/hashicorp/go-cleanhttp v0.5.2 // indirect - github.com/hashicorp/go-getter v1.7.4 // indirect + github.com/hashicorp/go-getter v1.7.5 // indirect github.com/hashicorp/go-hclog v1.6.3 // indirect github.com/hashicorp/go-immutable-radix v1.3.1 // indirect github.com/hashicorp/go-metrics v0.5.3 // indirect @@ -189,7 +194,7 @@ require ( github.com/klauspost/cpuid/v2 v2.2.7 // indirect github.com/kr/pretty v0.3.1 // indirect github.com/kr/text v0.2.0 // indirect - github.com/lib/pq v1.10.7 // indirect + github.com/lib/pq v1.10.9 // indirect github.com/libp2p/go-buffer-pool v0.1.0 // indirect github.com/linxGnu/grocksdb v1.9.2 // indirect github.com/lucasb-eyer/go-colorful v1.2.0 // indirect @@ -199,12 +204,13 @@ require ( github.com/mattn/go-isatty v0.0.20 // indirect github.com/mattn/go-runewidth v0.0.15 // indirect github.com/mimoo/StrobeGo v0.0.0-20220103164710-9a04d6ca976b // indirect - github.com/minio/highwayhash v1.0.2 // indirect + github.com/minio/highwayhash v1.0.3 // indirect github.com/minio/sha256-simd v1.0.1 // indirect github.com/mitchellh/go-homedir v1.1.0 // indirect github.com/mitchellh/go-testing-interface v1.14.1 // indirect github.com/mitchellh/mapstructure v1.5.0 // indirect github.com/mmcloughlin/addchain v0.4.0 // indirect + github.com/morikuni/aec v1.0.0 // indirect github.com/mtibben/percent v0.2.1 // indirect github.com/multiformats/go-base32 v0.1.0 // indirect github.com/multiformats/go-base36 v0.2.0 // indirect @@ -220,28 +226,29 @@ require ( github.com/onsi/gomega v1.27.10 // indirect github.com/opencontainers/go-digest v1.0.0 // indirect github.com/opencontainers/image-spec v1.1.0-rc2 // indirect - github.com/petermattis/goid v0.0.0-20240607163614-bb94eb51e7a7 // indirect + github.com/petermattis/goid v0.0.0-20240813172612-4fcff4a6cae7 // indirect github.com/pierrec/xxHash v0.1.5 // indirect github.com/pkg/errors v0.9.1 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect - github.com/prometheus/client_golang v1.19.1 // indirect + github.com/prometheus/client_golang v1.20.5 // indirect github.com/prometheus/client_model v0.6.1 // indirect - github.com/prometheus/common v0.55.0 // indirect + github.com/prometheus/common v0.60.1 // indirect github.com/prometheus/procfs v0.15.1 // indirect github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 // indirect github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec // indirect github.com/rivo/uniseg v0.4.3 // indirect github.com/rogpeppe/go-internal v1.12.0 // indirect - github.com/rs/cors v1.11.0 // indirect + github.com/rs/cors v1.11.1 // indirect github.com/rs/zerolog v1.33.0 // indirect github.com/sagikazarmark/locafero v0.6.0 // indirect github.com/sagikazarmark/slog-shim v0.1.0 // indirect - github.com/sasha-s/go-deadlock v0.3.1 // indirect + github.com/sasha-s/go-deadlock v0.3.5 // indirect + github.com/shamaton/msgpack/v2 v2.2.0 // indirect github.com/shirou/gopsutil v3.21.4-0.20210419000835-c7a38de76ee5+incompatible // indirect github.com/sourcegraph/conc v0.3.0 // indirect github.com/spaolacci/murmur3 v1.1.0 // indirect github.com/spf13/afero v1.11.0 // indirect - github.com/spf13/cast v1.6.0 // indirect + github.com/spf13/cast v1.7.1 // indirect github.com/spf13/pflag v1.0.5 // indirect github.com/spf13/viper v1.19.0 // indirect github.com/subosito/gotenv v1.6.0 // indirect @@ -253,6 +260,7 @@ require ( github.com/tidwall/pretty v1.2.0 // indirect github.com/tklauser/go-sysconf v0.3.12 // indirect github.com/tklauser/numcpus v0.6.1 // indirect + github.com/twitchyliquid64/golang-asm v0.15.1 // indirect github.com/ulikunitz/xz v0.5.11 // indirect github.com/zondax/hid v0.9.2 // indirect github.com/zondax/ledger-go v0.14.3 // indirect @@ -263,18 +271,19 @@ require ( go.opentelemetry.io/otel v1.24.0 // indirect go.opentelemetry.io/otel/metric v1.24.0 // indirect go.opentelemetry.io/otel/trace v1.24.0 // indirect + golang.org/x/arch v0.0.0-20210923205945-b76863e36670 // indirect golang.org/x/exp v0.0.0-20240613232115-7f521ea00fb8 // indirect - golang.org/x/net v0.27.0 // indirect - golang.org/x/oauth2 v0.21.0 // indirect - golang.org/x/sys v0.24.0 // indirect - golang.org/x/term v0.23.0 // indirect - golang.org/x/text v0.17.0 // indirect + golang.org/x/net v0.30.0 // indirect + golang.org/x/oauth2 v0.23.0 // indirect + golang.org/x/sys v0.28.0 // indirect + golang.org/x/term v0.27.0 // indirect + golang.org/x/text v0.21.0 // indirect golang.org/x/time v0.5.0 // indirect google.golang.org/api v0.186.0 // indirect google.golang.org/genproto v0.0.0-20240701130421-f6361c86f094 // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20240701130421-f6361c86f094 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20240709173604-40e1e62336c5 // indirect - google.golang.org/protobuf v1.34.2 // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20240814211410-ddb44dafa142 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20240930140551-af27646dc61f // indirect + google.golang.org/protobuf v1.36.1 // indirect gopkg.in/ini.v1 v1.67.0 // indirect gopkg.in/natefinch/npipe.v2 v2.0.0-20160621034901-c1b8fa8bdcce // indirect gopkg.in/yaml.v2 v2.4.0 // indirect @@ -286,7 +295,7 @@ require ( modernc.org/memory v1.8.0 // indirect modernc.org/strutil v1.2.0 // indirect modernc.org/token v1.1.0 // indirect - nhooyr.io/websocket v1.8.11 // indirect + nhooyr.io/websocket v1.8.17 // indirect pgregory.net/rapid v1.1.0 // indirect rsc.io/tmplfunc v0.0.3 // indirect sigs.k8s.io/yaml v1.4.0 // indirect diff --git a/go.sum b/go.sum index ae769035a..1cd31793e 100644 --- a/go.sum +++ b/go.sum @@ -72,8 +72,8 @@ cloud.google.com/go/compute v1.6.0/go.mod h1:T29tfhtVbq1wvAPo0E3+7vhgmkOYeXjhFvz cloud.google.com/go/compute v1.6.1/go.mod h1:g85FgpzFvNULZ+S8AYq87axRKuf2Kh7deLqV/jJ3thU= cloud.google.com/go/compute v1.7.0/go.mod h1:435lt8av5oL9P3fv1OEzSbSUe+ybHXGMPQHHZWZxy9U= cloud.google.com/go/compute v1.10.0/go.mod h1:ER5CLbMxl90o2jtNbGSbtfOpQKR0t15FOtRsugnLrlU= -cloud.google.com/go/compute/metadata v0.3.0 h1:Tz+eQXMEqDIKRsmY3cHTL6FVaynIjX2QxYC4trgAKZc= -cloud.google.com/go/compute/metadata v0.3.0/go.mod h1:zFmK7XCadkQkj6TtorcaGlCW1hT1fIilQDwofLpJ20k= +cloud.google.com/go/compute/metadata v0.5.0 h1:Zr0eK8JbFv6+Wi4ilXAR8FJ3wyNdpxHKJNPos6LTZOY= +cloud.google.com/go/compute/metadata v0.5.0/go.mod h1:aHnloV2TPI38yx4s9+wAZhHykWvVCfu7hQbF+9CWoiY= cloud.google.com/go/containeranalysis v0.5.1/go.mod h1:1D92jd8gRR/c0fGMlymRgxWD3Qw9C1ff6/T7mLgVL8I= cloud.google.com/go/containeranalysis v0.6.0/go.mod h1:HEJoiEIu+lEXM+k7+qLCci0h33lX3ZqoYFdmPcoO7s4= cloud.google.com/go/datacatalog v1.3.0/go.mod h1:g9svFY6tuR+j+hrTw3J2dNcmI0dzmSiyOzm8kpLq0a0= @@ -186,32 +186,28 @@ cloud.google.com/go/webrisk v1.4.0/go.mod h1:Hn8X6Zr+ziE2aNd8SliSDWpEnSS1u4R9+xX cloud.google.com/go/webrisk v1.5.0/go.mod h1:iPG6fr52Tv7sGk0H6qUFzmL3HHZev1htXuWDEEsqMTg= cloud.google.com/go/workflows v1.6.0/go.mod h1:6t9F5h/unJz41YqfBmqSASJSXccBLtD1Vwf+KmJENM0= cloud.google.com/go/workflows v1.7.0/go.mod h1:JhSrZuVZWuiDfKEFxU0/F1PQjmpnpcoISEXH2bcHC3M= -cosmossdk.io/api v0.7.5 h1:eMPTReoNmGUm8DeiQL9DyM8sYDjEhWzL1+nLbI9DqtQ= -cosmossdk.io/api v0.7.5/go.mod h1:IcxpYS5fMemZGqyYtErK7OqvdM0C8kdW3dq8Q/XIG38= +cosmossdk.io/api v0.7.6 h1:PC20PcXy1xYKH2KU4RMurVoFjjKkCgYRbVAD4PdqUuY= +cosmossdk.io/api v0.7.6/go.mod h1:IcxpYS5fMemZGqyYtErK7OqvdM0C8kdW3dq8Q/XIG38= cosmossdk.io/client/v2 v2.0.0-beta.3 h1:+TTuH0DwQYsUq2JFAl3fDZzKq5gQG7nt3dAattkjFDU= cosmossdk.io/client/v2 v2.0.0-beta.3/go.mod h1:CZcL41HpJPOOayTCO28j8weNBQprG+SRiKX39votypo= cosmossdk.io/collections v0.4.0 h1:PFmwj2W8szgpD5nOd8GWH6AbYNi1f2J6akWXJ7P5t9s= cosmossdk.io/collections v0.4.0/go.mod h1:oa5lUING2dP+gdDquow+QjlF45eL1t4TJDypgGd+tv0= cosmossdk.io/core v0.11.1 h1:h9WfBey7NAiFfIcUhDVNS503I2P2HdZLebJlUIs8LPA= cosmossdk.io/core v0.11.1/go.mod h1:OJzxcdC+RPrgGF8NJZR2uoQr56tc7gfBKhiKeDO7hH0= -cosmossdk.io/depinject v1.0.0 h1:dQaTu6+O6askNXO06+jyeUAnF2/ssKwrrszP9t5q050= -cosmossdk.io/depinject v1.0.0/go.mod h1:zxK/h3HgHoA/eJVtiSsoaRaRA2D5U4cJ5thIG4ssbB8= +cosmossdk.io/depinject v1.1.0 h1:wLan7LG35VM7Yo6ov0jId3RHWCGRhe8E8bsuARorl5E= +cosmossdk.io/depinject v1.1.0/go.mod h1:kkI5H9jCGHeKeYWXTqYdruogYrEeWvBQCw1Pj4/eCFI= cosmossdk.io/errors v1.0.1 h1:bzu+Kcr0kS/1DuPBtUFdWjzLqyUuCiyHjyJB6srBV/0= cosmossdk.io/errors v1.0.1/go.mod h1:MeelVSZThMi4bEakzhhhE/CKqVv3nOJDA25bIqRDu/U= -cosmossdk.io/log v1.4.0 h1:Ttt9d6fQ0GlktwhcysOeNiIjixW7l0rYBocmoXOb11k= -cosmossdk.io/log v1.4.0/go.mod h1:k08v0Pyq+gCP6phvdI6RCGhLf/r425UT6Rk/m+o74rU= -cosmossdk.io/math v1.3.0 h1:RC+jryuKeytIiictDslBP9i1fhkVm6ZDmZEoNP316zE= -cosmossdk.io/math v1.3.0/go.mod h1:vnRTxewy+M7BtXBNFybkuhSH4WfedVAAnERHgVFhp3k= -cosmossdk.io/store v1.1.0 h1:LnKwgYMc9BInn9PhpTFEQVbL9UK475G2H911CGGnWHk= -cosmossdk.io/store v1.1.0/go.mod h1:oZfW/4Fc/zYqu3JmQcQdUJ3fqu5vnYTn3LZFFy8P8ng= -cosmossdk.io/x/circuit v0.1.0 h1:IAej8aRYeuOMritczqTlljbUVHq1E85CpBqaCTwYgXs= -cosmossdk.io/x/circuit v0.1.0/go.mod h1:YDzblVE8+E+urPYQq5kq5foRY/IzhXovSYXb4nwd39w= -cosmossdk.io/x/evidence v0.1.0 h1:J6OEyDl1rbykksdGynzPKG5R/zm6TacwW2fbLTW4nCk= -cosmossdk.io/x/evidence v0.1.0/go.mod h1:hTaiiXsoiJ3InMz1uptgF0BnGqROllAN8mwisOMMsfw= -cosmossdk.io/x/feegrant v0.1.0 h1:c7s3oAq/8/UO0EiN1H5BIjwVntujVTkYs35YPvvrdQk= -cosmossdk.io/x/feegrant v0.1.0/go.mod h1:4r+FsViJRpcZif/yhTn+E0E6OFfg4n0Lx+6cCtnZElU= -cosmossdk.io/x/tx v0.13.4 h1:Eg0PbJgeO0gM8p5wx6xa0fKR7hIV6+8lC56UrsvSo0Y= -cosmossdk.io/x/tx v0.13.4/go.mod h1:BkFqrnGGgW50Y6cwTy+JvgAhiffbGEKW6KF9ufcDpvk= +cosmossdk.io/log v1.5.0 h1:dVdzPJW9kMrnAYyMf1duqacoidB9uZIl+7c6z0mnq0g= +cosmossdk.io/log v1.5.0/go.mod h1:Tr46PUJjiUthlwQ+hxYtUtPn4D/oCZXAkYevBeh5+FI= +cosmossdk.io/math v1.5.0 h1:sbOASxee9Zxdjd6OkzogvBZ25/hP929vdcYcBJQbkLc= +cosmossdk.io/math v1.5.0/go.mod h1:AAwwBmUhqtk2nlku174JwSll+/DepUXW3rWIXN5q+Nw= +cosmossdk.io/store v1.1.1 h1:NA3PioJtWDVU7cHHeyvdva5J/ggyLDkyH0hGHl2804Y= +cosmossdk.io/store v1.1.1/go.mod h1:8DwVTz83/2PSI366FERGbWSH7hL6sB7HbYp8bqksNwM= +cosmossdk.io/x/feegrant v0.1.1 h1:EKFWOeo/pup0yF0svDisWWKAA9Zags6Zd0P3nRvVvw8= +cosmossdk.io/x/feegrant v0.1.1/go.mod h1:2GjVVxX6G2fta8LWj7pC/ytHjryA6MHAJroBWHFNiEQ= +cosmossdk.io/x/tx v0.13.7 h1:8WSk6B/OHJLYjiZeMKhq7DK7lHDMyK0UfDbBMxVmeOI= +cosmossdk.io/x/tx v0.13.7/go.mod h1:V6DImnwJMTq5qFjeGWpXNiT/fjgE4HtmclRmTqRVM3w= cosmossdk.io/x/upgrade v0.1.4 h1:/BWJim24QHoXde8Bc64/2BSEB6W4eTydq0X/2f8+g38= cosmossdk.io/x/upgrade v0.1.4/go.mod h1:9v0Aj+fs97O+Ztw+tG3/tp5JSlrmT7IcFhAebQHmOPo= dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= @@ -233,10 +229,10 @@ github.com/ChainSafe/go-schnorrkel v1.0.0 h1:3aDA67lAykLaG1y3AOjs88dMxC88PgUuHRr github.com/ChainSafe/go-schnorrkel v1.0.0/go.mod h1:dpzHYVxLZcp8pjlV+O+UR8K0Hp/z7vcchBSbMBEhCw4= github.com/ComposableFi/go-subkey/v2 v2.0.0-tm03420 h1:oknQF/iIhf5lVjbwjsVDzDByupRhga8nhA3NAmwyHDA= github.com/ComposableFi/go-subkey/v2 v2.0.0-tm03420/go.mod h1:KYkiMX5AbOlXXYfxkrYPrRPV6EbVUALTQh5ptUOJzu8= -github.com/CosmWasm/wasmd v0.42.1-0.20230928145107-894076a25cb2 h1:j8J9LnhC6IikohLEYMAFX0xPQmgPez9vsj0rNQISkiE= -github.com/CosmWasm/wasmd v0.42.1-0.20230928145107-894076a25cb2/go.mod h1:3sCglc35LoFUGmh4a/auoJALitaE4qw+jAqK53ak7+s= -github.com/CosmWasm/wasmvm v1.5.4 h1:Opqy65ubJ8bMsT08dn85VjRdsLJVPIAgIXif92qOMGc= -github.com/CosmWasm/wasmvm v1.5.4/go.mod h1:Q0bSEtlktzh7W2hhEaifrFp1Erx11ckQZmjq8FLCyys= +github.com/CosmWasm/wasmd v0.42.1-0.20250127193122-dee9c151137f h1:O6MdGBo6rNbWuEoHT6W5BcFRxUb0Oiv7utMkVL4C028= +github.com/CosmWasm/wasmd v0.42.1-0.20250127193122-dee9c151137f/go.mod h1:DWKHAtFft5hMfBjq2QyePe0Xk94TYCT3wPQPTJ1rvi4= +github.com/CosmWasm/wasmvm/v2 v2.2.1 h1:cmOnM+TDfUl2VRugeo1eJBw4U/Lw0WLviuQHKSo9DVQ= +github.com/CosmWasm/wasmvm/v2 v2.2.1/go.mod h1:bMhLQL4Yp9CzJi9A83aR7VO9wockOsSlZbT4ztOl6bg= github.com/DataDog/datadog-go v3.2.0+incompatible/go.mod h1:LButxg5PwREeZtORoXG3tL4fMGNddJ+vMq1mwgfaqoQ= github.com/DataDog/datadog-go v4.8.3+incompatible h1:fNGaYSuObuQb5nzeTQqowRAd9bpDIRRV4/gUtIBjh8Q= github.com/DataDog/datadog-go v4.8.3+incompatible/go.mod h1:LButxg5PwREeZtORoXG3tL4fMGNddJ+vMq1mwgfaqoQ= @@ -262,8 +258,8 @@ github.com/VictoriaMetrics/fastcache v1.12.2 h1:N0y9ASrJ0F6h0QaC3o6uJb3NIZ9VKLjC github.com/VictoriaMetrics/fastcache v1.12.2/go.mod h1:AmC+Nzz1+3G2eCPapF6UcsnkThDcMsQicp4xDukwJYI= github.com/VividCortex/gohistogram v1.0.0 h1:6+hBz+qvs0JOrrNhhmR7lFxo5sINxBCGXrdtl/UvroE= github.com/VividCortex/gohistogram v1.0.0/go.mod h1:Pf5mBqqDxYaXu3hDrrU+w6nw50o/4+TcAqDqk/vUH7g= -github.com/adlio/schema v1.3.3 h1:oBJn8I02PyTB466pZO1UZEn1TV5XLlifBSyMrmHl/1I= -github.com/adlio/schema v1.3.3/go.mod h1:1EsRssiv9/Ce2CMzq5DoL7RiMshhuigQxrR4DMV9fHg= +github.com/adlio/schema v1.3.6 h1:k1/zc2jNfeiZBA5aFTRy37jlBIuCkXCm0XmvpzCKI9I= +github.com/adlio/schema v1.3.6/go.mod h1:qkxwLgPBd1FgLRHYVCmQT/rrBr3JH38J9LjmVzWNudg= github.com/afex/hystrix-go v0.0.0-20180502004556-fa1af6a1f4f5/go.mod h1:SkGFH1ia65gfNATL8TAiHDNxPzPdmEL5uirI2Uyuz6c= github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= @@ -301,14 +297,19 @@ github.com/bits-and-blooms/bitset v1.10.0 h1:ePXTeiPEazB5+opbv5fr8umg2R/1NlzgDsy github.com/bits-and-blooms/bitset v1.10.0/go.mod h1:7hO7Gc7Pp1vODcmWvKMRA9BNmbv6a/7QIWpPxHddWR8= github.com/btcsuite/btcd/btcec/v2 v2.3.3 h1:6+iXlDKE8RMtKsvK0gshlXIuPbyWM/h84Ensb7o3sC0= github.com/btcsuite/btcd/btcec/v2 v2.3.3/go.mod h1:zYzJ8etWJQIv1Ogk7OzpWjowwOdXY1W/17j2MW85J04= -github.com/btcsuite/btcd/btcutil v1.1.3 h1:xfbtw8lwpp0G6NwSHb+UE67ryTFHJAiNuipusjXSohQ= -github.com/btcsuite/btcd/btcutil v1.1.3/go.mod h1:UR7dsSJzJUfMmFiiLlIrMq1lS9jh9EdCV7FStZSnpi0= +github.com/btcsuite/btcd/btcutil v1.1.6 h1:zFL2+c3Lb9gEgqKNzowKUPQNb8jV7v5Oaodi/AYFd6c= +github.com/btcsuite/btcd/btcutil v1.1.6/go.mod h1:9dFymx8HpuLqBnsPELrImQeTQfKBQqzqGbbV3jK55aE= github.com/btcsuite/btcd/chaincfg/chainhash v1.0.1 h1:q0rUy8C/TYNBQS1+CGKw68tLOFYSNEs0TFnxxnS9+4U= github.com/btcsuite/btcd/chaincfg/chainhash v1.0.1/go.mod h1:7SFka0XMvUgj3hfZtydOrQY2mwhPclbT2snogU7SQQc= github.com/btcsuite/btcutil v1.0.3-0.20201208143702-a53e38424cce h1:YtWJF7RHm2pYCvA5t0RPmAaLUhREsKuKd+SLhxFbFeQ= github.com/btcsuite/btcutil v1.0.3-0.20201208143702-a53e38424cce/go.mod h1:0DVlHczLPewLcPGEIeUEzfOJhqGPQ0mJJRDBtD307+o= github.com/bufbuild/protocompile v0.6.0 h1:Uu7WiSQ6Yj9DbkdnOe7U4mNKp58y9WDMKDn28/ZlunY= github.com/bufbuild/protocompile v0.6.0/go.mod h1:YNP35qEYoYGme7QMtz5SBCoN4kL4g12jTtjuzRNdjpE= +github.com/bytedance/sonic v1.12.3 h1:W2MGa7RCU1QTeYRTPE3+88mVC0yXmsRQRChiyVocVjU= +github.com/bytedance/sonic v1.12.3/go.mod h1:B8Gt/XvtZ3Fqj+iSKMypzymZxw/FVwgIGKzMzT9r/rk= +github.com/bytedance/sonic/loader v0.1.1/go.mod h1:ncP89zfokxS5LZrJxl5z0UJcsk4M4yY2JpfqGeCtNLU= +github.com/bytedance/sonic/loader v0.2.0 h1:zNprn+lsIP06C/IqCHs3gPQIvnvpKbbxyXQP1iU4kWM= +github.com/bytedance/sonic/loader v0.2.0/go.mod h1:ncP89zfokxS5LZrJxl5z0UJcsk4M4yY2JpfqGeCtNLU= github.com/casbin/casbin/v2 v2.1.2/go.mod h1:YcPU1XXisHhLzuxH9coDNf2FbKpjGlbCg3n9yuLkIJQ= github.com/cenkalti/backoff v2.2.1+incompatible h1:tNowT99t7UNflLxfYYSlKYsBpXdEet03Pg2g16Swow4= github.com/cenkalti/backoff v2.2.1+incompatible/go.mod h1:90ReRw6GdpyfrHakVjL/QHaoyV4aDUVVkXQJJJ3NXXM= @@ -334,6 +335,10 @@ github.com/circonus-labs/circonus-gometrics v2.3.1+incompatible/go.mod h1:nmEj6D github.com/circonus-labs/circonusllhist v0.1.3/go.mod h1:kMXHVDlOchFAehlya5ePtbp5jckzBHf4XRpQvBOLI+I= github.com/clbanning/x2j v0.0.0-20191024224557-825249438eec/go.mod h1:jMjuTZXRI4dUb/I5gc9Hdhagfvm9+RyrPryS/auMzxE= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= +github.com/cloudwego/base64x v0.1.4 h1:jwCgWpFanWmN8xoIUHa2rtzmkd5J2plF/dnLS6Xd/0Y= +github.com/cloudwego/base64x v0.1.4/go.mod h1:0zlkT4Wn5C6NdauXdJRhSKRlJvmclQ1hhJgA0rcu/8w= +github.com/cloudwego/iasm v0.2.0 h1:1KNIy1I1H9hNNFEEH3DVnI4UujN+1zjpuk6gwHLTssg= +github.com/cloudwego/iasm v0.2.0/go.mod h1:8rXZaNYT2n95jn+zTI1sDr+IgcD2GVs0nlbbQPiEFhY= github.com/cmars/basen v0.0.0-20150613233007-fe3947df716e h1:0XBUw73chJ1VYSsfvcPvVT7auykAJce9FpRr10L6Qhw= github.com/cmars/basen v0.0.0-20150613233007-fe3947df716e/go.mod h1:P13beTBKr5Q18lJe1rIoLUqjM+CB1zYrRg44ZqGuQSA= github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= @@ -347,6 +352,8 @@ github.com/cncf/xds/go v0.0.0-20211001041855-01bcc9b48dfe/go.mod h1:eXthEFrGJvWH github.com/cncf/xds/go v0.0.0-20211011173535-cb28da3451f1/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cockroachdb/apd/v2 v2.0.2 h1:weh8u7Cneje73dDh+2tEVLUvyBc89iwepWCD8b8034E= github.com/cockroachdb/apd/v2 v2.0.2/go.mod h1:DDxRlzC2lo3/vSlmSoS7JkqbbrARPuFOGr0B9pvN3Gw= +github.com/cockroachdb/apd/v3 v3.2.1 h1:U+8j7t0axsIgvQUqthuNm82HIrYXodOV2iWLWtEaIwg= +github.com/cockroachdb/apd/v3 v3.2.1/go.mod h1:klXJcjp+FffLTHlhIG69tezTDvdP065naDsHzKhYSqc= github.com/cockroachdb/datadriven v0.0.0-20190809214429-80d97fb3cbaa/go.mod h1:zn76sxSg3SzpJ0PPJaLDCu+Bu0Lg3sKTORVIj19EIF8= github.com/cockroachdb/datadriven v1.0.3-0.20230801171734-e384cf455877 h1:1MLK4YpFtIEo3ZtMA5C795Wtv5VuUnrXX7mQG+aHg6o= github.com/cockroachdb/datadriven v1.0.3-0.20230801171734-e384cf455877/go.mod h1:a9RdTaap04u637JoCzcUoIcDmvwSUtcUFtT/C3kJlTU= @@ -356,17 +363,17 @@ github.com/cockroachdb/fifo v0.0.0-20240616162244-4768e80dfb9a h1:f52TdbU4D5nozM github.com/cockroachdb/fifo v0.0.0-20240616162244-4768e80dfb9a/go.mod h1:9/y3cnZ5GKakj/H4y9r9GTjCvAFta7KLgSHPJJYc52M= github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b h1:r6VH0faHjZeQy818SGhaone5OnYfxFR/+AzdY3sf5aE= github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b/go.mod h1:Vz9DsVWQQhf3vs21MhPMZpMGSht7O/2vFW2xusFUVOs= -github.com/cockroachdb/pebble v1.1.1 h1:XnKU22oiCLy2Xn8vp1re67cXg4SAasg/WDt1NtcRFaw= -github.com/cockroachdb/pebble v1.1.1/go.mod h1:4exszw1r40423ZsmkG/09AFEG83I0uDgfujJdbL6kYU= +github.com/cockroachdb/pebble v1.1.2 h1:CUh2IPtR4swHlEj48Rhfzw6l/d0qA31fItcIszQVIsA= +github.com/cockroachdb/pebble v1.1.2/go.mod h1:4exszw1r40423ZsmkG/09AFEG83I0uDgfujJdbL6kYU= github.com/cockroachdb/redact v1.1.5 h1:u1PMllDkdFfPWaNGMyLD1+so+aq3uUItthCFqzwPJ30= github.com/cockroachdb/redact v1.1.5/go.mod h1:BVNblN9mBWFyMyqK1k3AAiSxhvhfK2oOZZ2lK+dpvRg= github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06 h1:zuQyyAKVxetITBuuhv3BI9cMrmStnpT18zmgmTxunpo= github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06/go.mod h1:7nc4anLGjupUW/PeY5qiNYsdNXj7zopG+eqsS7To5IQ= github.com/codahale/hdrhistogram v0.0.0-20161010025455-3a0bb77429bd/go.mod h1:sE/e/2PUdi/liOCUjSTXgM1o87ZssimdTWN964YiIeI= -github.com/cometbft/cometbft v0.38.11 h1:6bNDUB8/xq4uYonYwIfGc9OqK1ZH4NkdaMmR1LZIJqk= -github.com/cometbft/cometbft v0.38.11/go.mod h1:jHPx9vQpWzPHEAiYI/7EDKaB1NXhK6o3SArrrY8ExKc= -github.com/cometbft/cometbft-db v0.14.0 h1:dKnK/tQL8BwciH6SgFEuZxwKupMokR4NlwYfJWy7C48= -github.com/cometbft/cometbft-db v0.14.0/go.mod h1:JOXKwjrxS/MW5qJ1xuVpELa8HGBVgHpgI+t8j0L0JEo= +github.com/cometbft/cometbft v0.38.15 h1:5veFd8k1uXM27PBg9sMO3hAfRJ3vbh4OmmLf6cVrqXg= +github.com/cometbft/cometbft v0.38.15/go.mod h1:+wh6ap6xctVG+JOHwbl8pPKZ0GeqdPYqISu7F4b43cQ= +github.com/cometbft/cometbft-db v0.14.1 h1:SxoamPghqICBAIcGpleHbmoPqy+crij/++eZz3DlerQ= +github.com/cometbft/cometbft-db v0.14.1/go.mod h1:KHP1YghilyGV/xjD5DP3+2hyigWx0WTp9X+0Gnx0RxQ= github.com/consensys/bavard v0.1.13 h1:oLhMLOFGTLdlda/kma4VOJazblc7IM5y5QPd2A/YjhQ= github.com/consensys/bavard v0.1.13/go.mod h1:9ItSMtA/dXMAiL7BG6bqW2m3NdSEObYWoH223nGHukI= github.com/consensys/gnark-crypto v0.12.1 h1:lHH39WuuFgVHONRl3J0LRBtuYdQTumFSDtJF7HpyG8M= @@ -379,12 +386,12 @@ github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSV github.com/coreos/pkg v0.0.0-20160727233714-3ac0863d7acf/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= github.com/cosmos/btcutil v1.0.5 h1:t+ZFcX77LpKtDBhjucvnOH8C2l2ioGsBNEQ3jef8xFk= github.com/cosmos/btcutil v1.0.5/go.mod h1:IyB7iuqZMJlthe2tkIFL33xPyzbFYP0XVdS8P5lUPis= -github.com/cosmos/cosmos-db v1.0.2 h1:hwMjozuY1OlJs/uh6vddqnk9j7VamLv+0DBlbEXbAKs= -github.com/cosmos/cosmos-db v1.0.2/go.mod h1:Z8IXcFJ9PqKK6BIsVOB3QXtkKoqUOp1vRvPT39kOXEA= +github.com/cosmos/cosmos-db v1.1.1 h1:FezFSU37AlBC8S98NlSagL76oqBRWq/prTPvFcEJNCM= +github.com/cosmos/cosmos-db v1.1.1/go.mod h1:AghjcIPqdhSLP/2Z0yha5xPH3nLnskz81pBx3tcVSAw= github.com/cosmos/cosmos-proto v1.0.0-beta.5 h1:eNcayDLpip+zVLRLYafhzLvQlSmyab+RC5W7ZfmxJLA= github.com/cosmos/cosmos-proto v1.0.0-beta.5/go.mod h1:hQGLpiIUloJBMdQMMWb/4wRApmI9hjHH05nefC0Ojec= -github.com/cosmos/cosmos-sdk v0.50.9 h1:gt2usjz0H0qW6KwAxWw7ZJ3XU8uDwmhN+hYG3nTLeSg= -github.com/cosmos/cosmos-sdk v0.50.9/go.mod h1:TMH6wpoYBcg7Cp5BEg8fneLr+8XloNQkf2MRNF9V6JE= +github.com/cosmos/cosmos-sdk v0.50.11 h1:LxR1aAc8kixdrs3itO+3a44sFoc+vjxVAOyPFx22yjk= +github.com/cosmos/cosmos-sdk v0.50.11/go.mod h1:gt14Meok2IDCjbDtjwkbUcgVNEpUBDN/4hg9cCUtLgw= github.com/cosmos/go-bip39 v0.0.0-20180819234021-555e2067c45d/go.mod h1:tSxLoYXyBmiFeKpvmq4dzayMdCjCnu8uqmCysIGBT2Y= github.com/cosmos/go-bip39 v1.0.0 h1:pcomnQdrdH22njcAatO0yWojsUnCO3y2tNoV1cb6hHY= github.com/cosmos/go-bip39 v1.0.0/go.mod h1:RNJv0H/pOIVgxw6KS7QeX2a0Uo0aKUlfhZ4xuwvCdJw= @@ -393,12 +400,10 @@ github.com/cosmos/gogogateway v1.2.0/go.mod h1:iQpLkGWxYcnCdz5iAdLcRBSw3h7NXeOkZ github.com/cosmos/gogoproto v1.4.2/go.mod h1:cLxOsn1ljAHSV527CHOtaIP91kK6cCrZETRBrkzItWU= github.com/cosmos/gogoproto v1.7.0 h1:79USr0oyXAbxg3rspGh/m4SWNyoz/GLaAh0QlCe2fro= github.com/cosmos/gogoproto v1.7.0/go.mod h1:yWChEv5IUEYURQasfyBW5ffkMHR/90hiHgbNgrtp4j0= -github.com/cosmos/iavl v1.2.0 h1:kVxTmjTh4k0Dh1VNL046v6BXqKziqMDzxo93oh3kOfM= -github.com/cosmos/iavl v1.2.0/go.mod h1:HidWWLVAtODJqFD6Hbne2Y0q3SdxByJepHUOeoH4LiI= +github.com/cosmos/iavl v1.2.4 h1:IHUrG8dkyueKEY72y92jajrizbkZKPZbMmG14QzsEkw= +github.com/cosmos/iavl v1.2.4/go.mod h1:GiM43q0pB+uG53mLxLDzimxM9l/5N9UuSY3/D0huuVw= github.com/cosmos/ibc-go/modules/capability v1.0.1 h1:ibwhrpJ3SftEEZRxCRkH0fQZ9svjthrX2+oXdZvzgGI= github.com/cosmos/ibc-go/modules/capability v1.0.1/go.mod h1:rquyOV262nGJplkumH+/LeYs04P3eV8oB7ZM4Ygqk4E= -github.com/cosmos/ibc-go/v8 v8.4.0 h1:K2PfX0AZ+1XKZytHGEMuSjQXG/MZshPb83RSTQt2+cE= -github.com/cosmos/ibc-go/v8 v8.4.0/go.mod h1:zh6x1osR0hNvEcFrC/lhGD08sMfQmr9wHVvZ/mRWMCs= github.com/cosmos/ibc-go/v9 v9.0.2 h1:4481uaqY8Asoqqfb2OZC8Cu9Ud8ZgarF9cS3sntBIsY= github.com/cosmos/ibc-go/v9 v9.0.2/go.mod h1:FeznzlNFQhhu1O8TrWJT+2L1OyKdUEb1kmmjuWod3VI= github.com/cosmos/ics23/go v0.11.0 h1:jk5skjT0TqX5e5QJbEnwXIS2yI2vnmLOgpQPeM5RtnU= @@ -446,6 +451,8 @@ github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZm github.com/dgryski/go-farm v0.0.0-20190423205320-6a90982ecee2/go.mod h1:SqUrOPUnsFjfmXRMNPybcSiG0BgUW2AuFH8PAnS2iTw= github.com/dgryski/go-farm v0.0.0-20200201041132-a6ae2369ad13 h1:fAjc9m62+UWV/WAFKLNi6ZS0675eEUC9y3AlwSbQu1Y= github.com/dgryski/go-farm v0.0.0-20200201041132-a6ae2369ad13/go.mod h1:SqUrOPUnsFjfmXRMNPybcSiG0BgUW2AuFH8PAnS2iTw= +github.com/distribution/reference v0.5.0 h1:/FUIFXtfc/x2gpa5/VGfiGLuOIdYa1t65IKK2OFGvA0= +github.com/distribution/reference v0.5.0/go.mod h1:BbU0aIcezP1/5jX/8MP0YiH4SdvB5Y4f/wlDRiLyi3E= github.com/docker/distribution v2.8.2+incompatible h1:T3de5rq0dB1j30rp0sA2rER+m322EBzniBPB6ZIzuh8= github.com/docker/distribution v2.8.2+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w= github.com/docker/docker v24.0.9+incompatible h1:HPGzNmwfLZWdxHqK9/II92pyi1EpYKsAqcl4G0Of9v0= @@ -560,8 +567,8 @@ github.com/gogo/googleapis v1.4.1/go.mod h1:2lpHqI5OcWCtVElxXnPt+s8oJvMpySlOyM6x github.com/golang-jwt/jwt/v4 v4.5.0 h1:7cYmW1XlMY7h7ii7UhUyChSgS5wUJEnm9uZVTGqOWzg= github.com/golang-jwt/jwt/v4 v4.5.0/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= -github.com/golang/glog v1.2.1 h1:OptwRhECazUx5ix5TTWC3EZhsZEHWcYWY4FQHTIubm4= -github.com/golang/glog v1.2.1/go.mod h1:6AhwSGph0fcJtXVM/PEHPqZlFeoLxhs7/t5UDAwmO+w= +github.com/golang/glog v1.2.2 h1:1+mZ9upx1Dh6FmUTFR1naJ77miKiXgALjWOZ3NVFPmY= +github.com/golang/glog v1.2.2/go.mod h1:6AhwSGph0fcJtXVM/PEHPqZlFeoLxhs7/t5UDAwmO+w= github.com/golang/groupcache v0.0.0-20160516000752-02826c3e7903/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= @@ -605,8 +612,8 @@ github.com/golang/snappy v0.0.5-0.20220116011046-fa5810519dcb h1:PBC98N2aIaM3XXi github.com/golang/snappy v0.0.5-0.20220116011046-fa5810519dcb/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= -github.com/google/btree v1.1.2 h1:xf4v41cLI2Z6FxbKm+8Bu+m8ifhj15JuZ9sa0jZCMUU= -github.com/google/btree v1.1.2/go.mod h1:qOPhT0dTNdNzV6Z/lhRX0YXUafgPLFUh+gZMl761Gm4= +github.com/google/btree v1.1.3 h1:CVpQJjYgC4VbzxeGVHfvZrv1ctoYCAI8vbl07Fcxlyg= +github.com/google/btree v1.1.3/go.mod h1:qOPhT0dTNdNzV6Z/lhRX0YXUafgPLFUh+gZMl761Gm4= github.com/google/flatbuffers v24.3.25+incompatible h1:CX395cjN9Kke9mmalRoL3d81AtFUxJM+yDthflgJGkI= github.com/google/flatbuffers v24.3.25+incompatible/go.mod h1:1AeVuKshWv4vARoZatz6mlQ0JxURH0Kv5+zNeJKJCa8= github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= @@ -718,8 +725,8 @@ github.com/hashicorp/go-cleanhttp v0.5.0/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtng github.com/hashicorp/go-cleanhttp v0.5.1/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= github.com/hashicorp/go-cleanhttp v0.5.2 h1:035FKYIWjmULyFRBKPs8TBQoi0x6d9G4xc9neXJWAZQ= github.com/hashicorp/go-cleanhttp v0.5.2/go.mod h1:kO/YDlP8L1346E6Sodw+PrpBSV4/SoxCXGY6BqNFT48= -github.com/hashicorp/go-getter v1.7.4 h1:3yQjWuxICvSpYwqSayAdKRFcvBl1y/vogCxczWSmix0= -github.com/hashicorp/go-getter v1.7.4/go.mod h1:W7TalhMmbPmsSMdNjD0ZskARur/9GJ17cfHTRtXV744= +github.com/hashicorp/go-getter v1.7.5 h1:dT58k9hQ/vbxNMwoI5+xFYAJuv6152UNvdHokfI5wE4= +github.com/hashicorp/go-getter v1.7.5/go.mod h1:W7TalhMmbPmsSMdNjD0ZskARur/9GJ17cfHTRtXV744= github.com/hashicorp/go-hclog v1.6.3 h1:Qr2kF+eVWjTiYmU7Y31tYlP1h0q/X3Nl3tPGdaB11/k= github.com/hashicorp/go-hclog v1.6.3/go.mod h1:W4Qnvbt70Wk/zYJryRzDRU/4r0kIg0PVHBcfoyhpF5M= github.com/hashicorp/go-immutable-radix v1.0.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= @@ -820,8 +827,10 @@ github.com/klauspost/compress v1.11.7/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYs github.com/klauspost/compress v1.15.11/go.mod h1:QPwzmACJjUTFsnSHH934V6woptycfrDDJnH7hvFVbGM= github.com/klauspost/compress v1.17.9 h1:6KIumPrER1LHsvBVuDa0r5xaG0Es51mhhB9BQB2qeMA= github.com/klauspost/compress v1.17.9/go.mod h1:Di0epgTjJY877eYKx5yC51cX2A2Vl2ibi7bDH9ttBbw= +github.com/klauspost/cpuid/v2 v2.0.9/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg= github.com/klauspost/cpuid/v2 v2.2.7 h1:ZWSB3igEs+d0qvnxR/ZBzXVmxkgt8DdzP6m9pfuVLDM= github.com/klauspost/cpuid/v2 v2.2.7/go.mod h1:Lcz8mBdAVJIBVzewtcLocK12l3Y+JytZYpaMropDUws= +github.com/knz/go-libedit v1.10.1/go.mod h1:MZTVkCWyz0oBc7JOWP3wNAzd002ZbM/5hgShxwh4x8M= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/konsorten/go-windows-terminal-sequences v1.0.3/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= @@ -837,8 +846,8 @@ github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+ github.com/leanovate/gopter v0.2.9 h1:fQjYxZaynp97ozCzfOyOuAGOU4aU/z37zf/tOujFk7c= github.com/leanovate/gopter v0.2.9/go.mod h1:U2L/78B+KVFIx2VmW6onHJQzXtFb+p5y3y2Sh+Jxxv8= github.com/leodido/go-urn v1.2.0/go.mod h1:+8+nEpDfqqsY+g338gtMEUOtuK+4dEMhiQEgxpxOKII= -github.com/lib/pq v1.10.7 h1:p7ZhMD+KsSRozJr34udlUrhboJwWAgCg34+/ZZNvZZw= -github.com/lib/pq v1.10.7/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= +github.com/lib/pq v1.10.9 h1:YXG7RB+JIjhP29X+OtkiDnYaXQwpS4JEWq7dtCCRUEw= +github.com/lib/pq v1.10.9/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= github.com/libp2p/go-buffer-pool v0.1.0 h1:oK4mSFcQz7cTQIfqbe4MIj9gLW+mnanjyFtc6cdF0Y8= github.com/libp2p/go-buffer-pool v0.1.0/go.mod h1:N+vh8gMqimBzdKkSMVuydVDq+UV5QTWy5HSiZacSbPg= github.com/libp2p/go-libp2p v0.31.0 h1:LFShhP8F6xthWiBBq3euxbKjZsoRajVEyBS9snfHxYg= @@ -877,8 +886,8 @@ github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3N github.com/mimoo/StrobeGo v0.0.0-20181016162300-f8f6d4d2b643/go.mod h1:43+3pMjjKimDBf5Kr4ZFNGbLql1zKkbImw+fZbw3geM= github.com/mimoo/StrobeGo v0.0.0-20220103164710-9a04d6ca976b h1:QrHweqAtyJ9EwCaGHBu1fghwxIPiopAHV06JlXrMHjk= github.com/mimoo/StrobeGo v0.0.0-20220103164710-9a04d6ca976b/go.mod h1:xxLb2ip6sSUts3g1irPVHyk/DGslwQsNOo9I7smJfNU= -github.com/minio/highwayhash v1.0.2 h1:Aak5U0nElisjDCfPSG79Tgzkn2gl66NxOMspRrKnA/g= -github.com/minio/highwayhash v1.0.2/go.mod h1:BQskDq+xkJ12lmlUUi7U0M5Swg3EWR+dLTk+kldvVxY= +github.com/minio/highwayhash v1.0.3 h1:kbnuUMoHYyVl7szWjSxJnxw11k2U709jqFPPmIUyD6Q= +github.com/minio/highwayhash v1.0.3/go.mod h1:GGYsuwP/fPD6Y9hMiXuapVvlIUEhFhMTh0rxU3ik1LQ= github.com/minio/sha256-simd v1.0.1 h1:6kaan5IFmwTNynnKKpDHe6FWHohJOHhCPchzK49dzMM= github.com/minio/sha256-simd v1.0.1/go.mod h1:Pz6AKMiUdngCLpeTL/RJY1M9rUuPMYujV5xJjtbRSN8= github.com/mitchellh/cli v1.0.0/go.mod h1:hNIlj7HEI86fIcpObd7a0FcrxTWetlwJDGcceTlRvqc= @@ -975,8 +984,8 @@ github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8 github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM= github.com/opencontainers/image-spec v1.1.0-rc2 h1:2zx/Stx4Wc5pIPDvIxHXvXtQFW/7XWJGmnM7r3wg034= github.com/opencontainers/image-spec v1.1.0-rc2/go.mod h1:3OVijpioIKYWTqjiG0zfF6wvoJ4fAXGbjdZuI2NgsRQ= -github.com/opencontainers/runc v1.1.3 h1:vIXrkId+0/J2Ymu2m7VjGvbSlAId9XNRPhn2p4b+d8w= -github.com/opencontainers/runc v1.1.3/go.mod h1:1J5XiS+vdZ3wCyZybsuxXZWGrgSr8fFJHLXuG2PsnNg= +github.com/opencontainers/runc v1.1.12 h1:BOIssBaW1La0/qbNZHXOOa71dZfZEQOzW7dqQf3phss= +github.com/opencontainers/runc v1.1.12/go.mod h1:S+lQwSfncpBha7XTy/5lBwWgm5+y5Ma/O44Ekby9FK8= github.com/opentracing-contrib/go-observer v0.0.0-20170622124052-a52f23424492/go.mod h1:Ngi6UdF0k5OKD5t5wlmGhe/EDKPoUM3BXZSSfIuJbis= github.com/opentracing/basictracer-go v1.0.0/go.mod h1:QfBfYuafItcjQuMwinw9GhYKwFXS9KnPs5lxoYwgW74= github.com/opentracing/opentracing-go v1.0.2/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= @@ -997,9 +1006,8 @@ github.com/pelletier/go-toml v1.9.5/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCko github.com/pelletier/go-toml/v2 v2.2.2 h1:aYUidT7k73Pcl9nb2gScu7NSrKCSHIDE89b3+6Wq+LM= github.com/pelletier/go-toml/v2 v2.2.2/go.mod h1:1t835xjRzz80PqgE6HHgN2JOsmgYu/h4qDAS4n929Rs= github.com/performancecopilot/speed v3.0.0+incompatible/go.mod h1:/CLtqpZ5gBg1M9iaPbIdPPGyKcA8hKdoy6hAWba7Yac= -github.com/petermattis/goid v0.0.0-20180202154549-b0b1615b78e5/go.mod h1:jvVRKCrJTQWu0XVbaOlby/2lO20uSCHEMzzplHXte1o= -github.com/petermattis/goid v0.0.0-20240607163614-bb94eb51e7a7 h1:CtBLeckhC0zAXgp5V8uR30CNYH0JgCJoxCg5+6i2zQk= -github.com/petermattis/goid v0.0.0-20240607163614-bb94eb51e7a7/go.mod h1:pxMtw7cyUw6B2bRH0ZBANSPg+AoSud1I1iyJHI69jH4= +github.com/petermattis/goid v0.0.0-20240813172612-4fcff4a6cae7 h1:Dx7Ovyv/SFnMFw3fD4oEoeorXc6saIiQ23LrGLth0Gw= +github.com/petermattis/goid v0.0.0-20240813172612-4fcff4a6cae7/go.mod h1:pxMtw7cyUw6B2bRH0ZBANSPg+AoSud1I1iyJHI69jH4= github.com/pierrec/lz4 v1.0.2-0.20190131084431-473cd7ce01a1/go.mod h1:3/3N9NVKO0jef7pBehbT1qWhCMrIgbYNnFAZCqQ5LRc= github.com/pierrec/lz4 v2.0.5+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY= github.com/pierrec/xxHash v0.1.5 h1:n/jBpwTHiER4xYvK3/CdPVnLDPchj8eTJFFLUb4QHBo= @@ -1022,8 +1030,8 @@ github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5Fsn github.com/prometheus/client_golang v1.3.0/go.mod h1:hJaj2vgQTGQmVCsAACORcieXFeDPbaTKGT+JTgUa3og= github.com/prometheus/client_golang v1.4.0/go.mod h1:e9GMxYsXl05ICDXkRhurwBS4Q3OK1iX/F2sw+iXX5zU= github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M= -github.com/prometheus/client_golang v1.19.1 h1:wZWJDwK+NameRJuPGDhlnFgx8e8HN3XHQeLaYJFJBOE= -github.com/prometheus/client_golang v1.19.1/go.mod h1:mP78NwGzrVks5S2H6ab8+ZZGJLZUq1hoULYBAYBw1Ho= +github.com/prometheus/client_golang v1.20.5 h1:cxppBPuYhUnsO6yo/aoRol4L7q7UFfdm+bR9r+8l63Y= +github.com/prometheus/client_golang v1.20.5/go.mod h1:PIEt8X02hGcP8JWbeHyeZ53Y/jReSnHgO035n//V5WE= github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20190115171406-56726106282f/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= @@ -1038,8 +1046,8 @@ github.com/prometheus/common v0.7.0/go.mod h1:DjGbpBbp5NYNiECxcL/VnbXCCaQpKd3tt2 github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8bs7vj7HSQ4= github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo= github.com/prometheus/common v0.15.0/go.mod h1:U+gB1OBLb1lF3O42bTCL+FK18tX9Oar16Clt/msog/s= -github.com/prometheus/common v0.55.0 h1:KEi6DK7lXW/m7Ig5i47x0vRzuBsHuvJdi5ee6Y3G1dc= -github.com/prometheus/common v0.55.0/go.mod h1:2SECS4xJG1kd8XF9IcM1gMX6510RAEL65zxzNImwdc8= +github.com/prometheus/common v0.60.1 h1:FUas6GcOw66yB/73KC+BOZoFJmbo/1pojoILArPAaSc= +github.com/prometheus/common v0.60.1/go.mod h1:h0LYf1R1deLSKtD4Vdg8gy4RuOvENW2J/h19V5NADQw= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.0-20190117184657-bf6a532e95b1/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= @@ -1067,8 +1075,8 @@ github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/f github.com/rogpeppe/go-internal v1.12.0 h1:exVL4IDcn6na9z1rAb56Vxr+CgyK3nn3O+epU5NdKM8= github.com/rogpeppe/go-internal v1.12.0/go.mod h1:E+RYuTGaKKdloAfM02xzb0FW3Paa99yedzYV+kq4uf4= github.com/rs/cors v1.7.0/go.mod h1:gFx+x8UowdsKA9AchylcLynDq+nNFfI8FkUZdN/jGCU= -github.com/rs/cors v1.11.0 h1:0B9GE/r9Bc2UxRMMtymBkHTenPkHDv0CW4Y98GBY+po= -github.com/rs/cors v1.11.0/go.mod h1:XyqrcTp5zjWr1wsJ8PIRZssZ8b/WMcMf71DJnit4EMU= +github.com/rs/cors v1.11.1 h1:eU3gRzXLRK57F5rKMGMZURNdIG4EoAmX8k94r9wXWHA= +github.com/rs/cors v1.11.1/go.mod h1:XyqrcTp5zjWr1wsJ8PIRZssZ8b/WMcMf71DJnit4EMU= github.com/rs/xid v1.5.0/go.mod h1:trrq9SKmegXys3aeAKXMUTdJsYXVwGY3RLcfgqegfbg= github.com/rs/zerolog v1.33.0 h1:1cU2KZkvPxNyfgEmhHAz/1A9Bz+llsdYzklWFzgp0r8= github.com/rs/zerolog v1.33.0/go.mod h1:/7mN4D5sKwJLZQ2b/znpjC3/GQWY/xaDXUM0kKWRHss= @@ -1082,9 +1090,11 @@ github.com/sagikazarmark/locafero v0.6.0/go.mod h1:77OmuIc6VTraTXKXIs/uvUxKGUXjE github.com/sagikazarmark/slog-shim v0.1.0 h1:diDBnUNK9N/354PgrxMywXnAwEr1QZcOr6gto+ugjYE= github.com/sagikazarmark/slog-shim v0.1.0/go.mod h1:SrcSrq8aKtyuqEI1uvTDTK1arOWRIczQRv+GVI1AkeQ= github.com/samuel/go-zookeeper v0.0.0-20190923202752-2cc03de413da/go.mod h1:gi+0XIa01GRL2eRQVjQkKGqKF3SF9vZR/HnPullcV2E= -github.com/sasha-s/go-deadlock v0.3.1 h1:sqv7fDNShgjcaxkO0JNcOAlr8B9+cV5Ey/OB71efZx0= -github.com/sasha-s/go-deadlock v0.3.1/go.mod h1:F73l+cr82YSh10GxyRI6qZiCgK64VaZjwesgfQ1/iLM= +github.com/sasha-s/go-deadlock v0.3.5 h1:tNCOEEDG6tBqrNDOX35j/7hL5FcFViG6awUGROb2NsU= +github.com/sasha-s/go-deadlock v0.3.5/go.mod h1:bugP6EGbdGYObIlx7pUZtWqlvo8k9H6vCBBsiChJQ5U= github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc= +github.com/shamaton/msgpack/v2 v2.2.0 h1:IP1m01pHwCrMa6ZccP9B3bqxEMKMSmMVAVKk54g3L/Y= +github.com/shamaton/msgpack/v2 v2.2.0/go.mod h1:6khjYnkx73f7VQU7wjcFS9DFjs+59naVWJv1TB7qdOI= github.com/shirou/gopsutil v3.21.4-0.20210419000835-c7a38de76ee5+incompatible h1:Bn1aCHHRnjv4Bl16T8rcaFjYSrGrIZvpiGO6P3Q4GpU= github.com/shirou/gopsutil v3.21.4-0.20210419000835-c7a38de76ee5+incompatible/go.mod h1:5b4v6he4MtMOwMlS0TUMTu2PcXUg8+E1lC7eC3UO/RA= github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= @@ -1105,8 +1115,8 @@ github.com/spaolacci/murmur3 v1.1.0 h1:7c1g84S4BPRrfL5Xrdp6fOJ206sU9y293DDHaoy0b github.com/spaolacci/murmur3 v1.1.0/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= github.com/spf13/afero v1.11.0 h1:WJQKhtpdm3v2IzqG8VMqrr6Rf3UYpEF239Jy9wNepM8= github.com/spf13/afero v1.11.0/go.mod h1:GH9Y3pIexgf1MTIWtNGyogA5MwRIDXGUr+hbWNoBjkY= -github.com/spf13/cast v1.6.0 h1:GEiTHELF+vaR5dhz3VqZfFSzZjYbgeKDpBxQVS4GYJ0= -github.com/spf13/cast v1.6.0/go.mod h1:ancEpBxwJDODSW/UG4rDrAqiKolqNNh2DX3mk86cAdo= +github.com/spf13/cast v1.7.1 h1:cuNEagBQEHWN1FnbGEjCXL2szYEXqfJPbP2HNUaca9Y= +github.com/spf13/cast v1.7.1/go.mod h1:ancEpBxwJDODSW/UG4rDrAqiKolqNNh2DX3mk86cAdo= github.com/spf13/cobra v0.0.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= github.com/spf13/cobra v1.8.1 h1:e5/vxKd/rZsfSJMUX1agtjeTDf+qv1/JdBF8gg5k9ZM= github.com/spf13/cobra v1.8.1/go.mod h1:wHxEcudfqmLYa8iTfL+OuZPbBZkmvliBWKIezN3kD9Y= @@ -1138,8 +1148,9 @@ github.com/stretchr/testify v1.7.2/go.mod h1:R6va5+xMeoiuVRoj+gSkQ7d3FALtqAAGI1F github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= -github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= +github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA= +github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= github.com/subosito/gotenv v1.6.0 h1:9NlTDc1FTs4qu0DDq7AEtTPNw6SVm7uBMsUCUjABIf8= github.com/subosito/gotenv v1.6.0/go.mod h1:Dk4QP5c2W3ibzajGcXpNraDfq2IrhjMIvMSWPKKo0FU= github.com/supranational/blst v0.3.11 h1:LyU6FolezeWAhvQk0k6O/d49jqgO52MSDDfYgbeoEm4= @@ -1162,6 +1173,8 @@ github.com/tklauser/numcpus v0.6.1 h1:ng9scYS7az0Bk4OZLvrNXNSAO2Pxr1XXRAPyjhIx+F github.com/tklauser/numcpus v0.6.1/go.mod h1:1XfjsgE2zo8GVw7POkMbHENHzVg3GzmoZ9fESEdAacY= github.com/tmc/grpc-websocket-proxy v0.0.0-20170815181823-89b8d40f7ca8/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= github.com/tv42/httpunix v0.0.0-20150427012821-b75d8614f926/go.mod h1:9ESjWnEqriFuLhtthL60Sar/7RFoluCcXsuvEwTV5KM= +github.com/twitchyliquid64/golang-asm v0.15.1 h1:SU5vSMR7hnwNxj24w34ZyCi/FmDZTkS4MhqMhdFk5YI= +github.com/twitchyliquid64/golang-asm v0.15.1/go.mod h1:a1lVb/DtPvCB8fslRZhAngC2+aY1QWCk3Cedj/Gdt08= github.com/tyler-smith/go-bip32 v1.0.0 h1:sDR9juArbUgX+bO/iblgZnMPeWY1KZMUC2AFUJdv5KE= github.com/tyler-smith/go-bip32 v1.0.0/go.mod h1:onot+eHknzV4BVPwrzqY5OoVpyCvnwD7lMawL5aQupE= github.com/tyler-smith/go-bip39 v1.1.0 h1:5eUemwrMargf3BSLRRCalXT93Ns6pQJIjYQN2nyfOP8= @@ -1235,6 +1248,8 @@ go.uber.org/zap v1.13.0/go.mod h1:zwrFLgMcdUuIBviXEYEH1YKNaOBnKXsx2IPda5bBwHM= go.uber.org/zap v1.18.1/go.mod h1:xg/QME4nWcxGxrpdeYfq7UvYrLh66cuVKdrbD1XF/NI= go.uber.org/zap v1.27.0 h1:aJMhYGrd5QSmlpLMr2MftRKl7t8J8PTZPA732ud/XR8= go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= +golang.org/x/arch v0.0.0-20210923205945-b76863e36670 h1:18EFjUmQOcUvxNYSkA6jO9VAiXCnxFY6NyDX0bHDmkU= +golang.org/x/arch v0.0.0-20210923205945-b76863e36670/go.mod h1:5om86z9Hs0C8fWVUuoMHwpExlXzs5Tkyp9hOrfG7pp8= golang.org/x/crypto v0.0.0-20170613210332-850760c427c5/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20181029021203-45a5f77698d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= @@ -1247,8 +1262,8 @@ golang.org/x/crypto v0.0.0-20191206172530-e9b2fee46413/go.mod h1:LzIPMQfyMNhhGPh golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200728195943-123391ffb6de/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= -golang.org/x/crypto v0.26.0 h1:RrRspgV4mU+YwB4FYnuBoKsUapNIL5cohGAmSH3azsw= -golang.org/x/crypto v0.26.0/go.mod h1:GY7jblb9wI+FOo5y8/S2oY4zWP07AkOJ4+jxCqdqn54= +golang.org/x/crypto v0.31.0 h1:ihbySMvVjLAeSH1IbfcRTkD/iNscyz8rGzjF/E5hV6U= +golang.org/x/crypto v0.31.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= @@ -1351,8 +1366,8 @@ golang.org/x/net v0.0.0-20220909164309-bea034e7d591/go.mod h1:YDH+HFinaLZZlnHAfS golang.org/x/net v0.0.0-20221014081412-f15817d10f9b/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= golang.org/x/net v0.1.0/go.mod h1:Cx3nUiGt4eDBEyega/BKRp+/AlGL8hYe7U9odMt2Cco= golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= -golang.org/x/net v0.27.0 h1:5K3Njcw06/l2y9vpGCSdcxWOYHOUk3dVNGDXN+FvAys= -golang.org/x/net v0.27.0/go.mod h1:dDi0PyhWNoiUOrAS8uXv/vnScO4wnHQO4mj9fn/RytE= +golang.org/x/net v0.30.0 h1:AcW1SDZMkb8IpzCdQUaIq2sP4sZ4zw+55h6ynffypl4= +golang.org/x/net v0.30.0/go.mod h1:2wGyMJ5iFasEhkwi13ChkO/t1ECNC4X4eBKkVFyYFlU= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= @@ -1378,8 +1393,8 @@ golang.org/x/oauth2 v0.0.0-20220822191816-0ebed06d0094/go.mod h1:h4gKUeWbJ4rQPri golang.org/x/oauth2 v0.0.0-20220909003341-f21342109be1/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= golang.org/x/oauth2 v0.0.0-20221014153046-6fdb5e3db783/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= golang.org/x/oauth2 v0.1.0/go.mod h1:G9FE4dLTsbXUu90h/Pf85g4w1D+SSAgR+q46nJZ8M4A= -golang.org/x/oauth2 v0.21.0 h1:tsimM75w1tF/uws5rbeHzIWxEqElMehnc+iW793zsZs= -golang.org/x/oauth2 v0.21.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= +golang.org/x/oauth2 v0.23.0 h1:PbgcYx2W7i4LvjJWEbf0ngHV6qJYr86PkAV3bXdLEbs= +golang.org/x/oauth2 v0.23.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -1395,8 +1410,8 @@ golang.org/x/sync v0.0.0-20220601150217-0de741cfad7f/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20220929204114-8fcdb60fdcc0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.8.0 h1:3NFvSEYkUoMifnESzZl15y791HH1qU2xm6eCJU5ZPXQ= -golang.org/x/sync v0.8.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sync v0.10.0 h1:3NQrjDixjgGwUOCaF8w2+VYHv0Ve/vGYSbdkTa98gmQ= +golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -1405,7 +1420,6 @@ golang.org/x/sys v0.0.0-20181026203630-95b1ffbd15a5/go.mod h1:STP8DvDyc/dI5b8T5h golang.org/x/sys v0.0.0-20181107165924-66b7b1311ac8/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181122145206-62eef0e2fa9b/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190130150945-aca44879d564/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -1496,8 +1510,9 @@ golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.11.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/sys v0.24.0 h1:Twjiwq9dn6R1fQcyiK+wQyHWfaz/BJB+YIpzU/Cv3Xg= -golang.org/x/sys v0.24.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.21.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.28.0 h1:Fksou7UEQUWlKvIdsqzJmUmCX3cZuD2+P3XyyzwMhlA= +golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20201210144234-2321bbc49cbf/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210220032956-6a3ed077a48d/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= @@ -1505,8 +1520,8 @@ golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuX golang.org/x/term v0.1.0/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= golang.org/x/term v0.17.0/go.mod h1:lLRBjIVuehSbZlaOtGMbcMncT+aqLLLmKrsjNrUguwk= -golang.org/x/term v0.23.0 h1:F6D4vR+EHoL9/sWAWgAR1H2DcHr4PareCbAaCo1RpuU= -golang.org/x/term v0.23.0/go.mod h1:DgV24QBUrK6jhZXl+20l6UWznPlwAHm1Q1mGHtydmSk= +golang.org/x/term v0.27.0 h1:WP60Sv1nlK1T6SupCHbXzSaN0b9wUmsPoRS9b61A23Q= +golang.org/x/term v0.27.0/go.mod h1:iMsnZpn0cago0GOrHO2+Y7u7JPn5AylBrcoWkElMTSM= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= @@ -1519,8 +1534,8 @@ golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= -golang.org/x/text v0.17.0 h1:XtiM5bkSOt+ewxlOE/aE/AKEHibwj/6gvWMl9Rsh0Qc= -golang.org/x/text v0.17.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY= +golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo= +golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ= golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= @@ -1769,10 +1784,10 @@ google.golang.org/genproto v0.0.0-20221014213838-99cd37c6964a/go.mod h1:1vXfmgAz google.golang.org/genproto v0.0.0-20221025140454-527a21cfbd71/go.mod h1:9qHF0xnpdSfF6knlcsnpzUu5y+rpwgbvsyGAZPBMg4s= google.golang.org/genproto v0.0.0-20240701130421-f6361c86f094 h1:6whtk83KtD3FkGrVb2hFXuQ+ZMbCNdakARIn/aHMmG8= google.golang.org/genproto v0.0.0-20240701130421-f6361c86f094/go.mod h1:Zs4wYw8z1zr6RNF4cwYb31mvN/EGaKAdQjNCF3DW6K4= -google.golang.org/genproto/googleapis/api v0.0.0-20240701130421-f6361c86f094 h1:0+ozOGcrp+Y8Aq8TLNN2Aliibms5LEzsq99ZZmAGYm0= -google.golang.org/genproto/googleapis/api v0.0.0-20240701130421-f6361c86f094/go.mod h1:fJ/e3If/Q67Mj99hin0hMhiNyCRmt6BQ2aWIJshUSJw= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240709173604-40e1e62336c5 h1:SbSDUWW1PAO24TNpLdeheoYPd7kllICcLU52x6eD4kQ= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240709173604-40e1e62336c5/go.mod h1:Ue6ibwXGpU+dqIcODieyLOcgj7z8+IcskoNIgZxtrFY= +google.golang.org/genproto/googleapis/api v0.0.0-20240814211410-ddb44dafa142 h1:wKguEg1hsxI2/L3hUYrpo1RVi48K+uTyzKqprwLXsb8= +google.golang.org/genproto/googleapis/api v0.0.0-20240814211410-ddb44dafa142/go.mod h1:d6be+8HhtEtucleCbxpPW9PA9XwISACu8nvpPqF0BVo= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240930140551-af27646dc61f h1:cUMEy+8oS78BWIH9OWazBkzbr090Od9tWBNtZHkOhf0= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240930140551-af27646dc61f/go.mod h1:UqMtugtsSgubUsoxbuAoiCXvqvErP7Gf0so0mK9tHxU= google.golang.org/grpc v1.17.0/go.mod h1:6QZJwpn2B+Zp71q/5VxRsJ6NXXVCE5NRUHRo+f3cWCs= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.20.0/go.mod h1:chYK+tFQF0nDUGJgXMSgLCQk3phJEuONr2DCgLDdAQM= @@ -1814,8 +1829,8 @@ google.golang.org/grpc v1.48.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACu google.golang.org/grpc v1.49.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= google.golang.org/grpc v1.50.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= google.golang.org/grpc v1.50.1/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= -google.golang.org/grpc v1.65.0 h1:bs/cUb4lp1G5iImFFd3u5ixQzweKizoZJAwBNLR42lc= -google.golang.org/grpc v1.65.0/go.mod h1:WgYC2ypjlB0EiQi6wdKixMqukr6lBc0Vo+oOgjrM5ZQ= +google.golang.org/grpc v1.67.1 h1:zWnc1Vrcno+lHZCOofnIMvycFcc0QRGIzm9dhnDX68E= +google.golang.org/grpc v1.67.1/go.mod h1:1gLDyUQU7CTLJI90u3nXZ9ekeghjeM7pTDZlqFNg2AA= google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= @@ -1832,8 +1847,8 @@ google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQ google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= google.golang.org/protobuf v1.28.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= -google.golang.org/protobuf v1.34.2 h1:6xV6lTsCfpGD21XK49h7MhtcApnLqkfYgPcdHftf6hg= -google.golang.org/protobuf v1.34.2/go.mod h1:qYOHts0dSfpeUzUFpOMr/WGzszTmLH+DiWniOlNbLDw= +google.golang.org/protobuf v1.36.1 h1:yBPeRvTftaleIgM3PZ/WBIZ7XM/eEYAaEyCwvyjq/gk= +google.golang.org/protobuf v1.36.1/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= @@ -1911,8 +1926,9 @@ modernc.org/strutil v1.2.0/go.mod h1:/mdcBmfOibveCTBxUl5B5l6W+TTH1FXPLHZE6bTosX0 modernc.org/token v1.1.0 h1:Xl7Ap9dKaEs5kLoOQeQmPWevfnk/DM5qcLcYlA8ys6Y= modernc.org/token v1.1.0/go.mod h1:UGzOrNV1mAFSEB63lOFHIpNRUVMvYTc6yu1SMY/XTDM= nhooyr.io/websocket v1.8.6/go.mod h1:B70DZP8IakI65RVQ51MsWP/8jndNma26DVA/nFSCgW0= -nhooyr.io/websocket v1.8.11 h1:f/qXNc2/3DpoSZkHt1DQu6rj4zGC8JmkkLkWss0MgN0= -nhooyr.io/websocket v1.8.11/go.mod h1:rN9OFWIUwuxg4fR5tELlYC04bXYowCP9GX47ivo2l+c= +nhooyr.io/websocket v1.8.17 h1:KEVeLJkUywCKVsnLIDlD/5gtayKp8VoCkksHCGGfT9Y= +nhooyr.io/websocket v1.8.17/go.mod h1:rN9OFWIUwuxg4fR5tELlYC04bXYowCP9GX47ivo2l+c= +nullprogram.com/x/optparse v1.0.0/go.mod h1:KdyPE+Igbe0jQUrVfMqDMeJQIJZEuyV7pjYmp6pbG50= pgregory.net/rapid v1.1.0 h1:CMa0sjHSru3puNx+J0MIAuiiEV4N0qj8/cMWGBBCsjw= pgregory.net/rapid v1.1.0/go.mod h1:PY5XlDGj0+V1FCq0o192FdRhpKHGTRIWBgqjDBTrq04= rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= diff --git a/go.work b/go.work index 7788d637a..bf8ee7c87 100644 --- a/go.work +++ b/go.work @@ -1,7 +1,5 @@ -go 1.22.5 +go 1.23.1 -toolchain go1.23.0 +toolchain go1.23.4 -use ( - . -) +use . From c622df08d98af64f4ef3b421486550140467c6f2 Mon Sep 17 00:00:00 2001 From: mmsqe Date: Tue, 28 Jan 2025 15:24:22 +0800 Subject: [PATCH 10/10] Revert "avoid invalid duration for client-tp" This reverts commit 90100c337558e34d532c7470732449ce31551b63. --- ibc/relayer.go | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/ibc/relayer.go b/ibc/relayer.go index 18ff2b0d3..67fa508ec 100644 --- a/ibc/relayer.go +++ b/ibc/relayer.go @@ -292,9 +292,7 @@ type CreateClientOptions struct { // empty values will use the relayer defaults. func DefaultClientOpts() CreateClientOptions { - return CreateClientOptions{ - TrustingPeriod: "0", - } + return CreateClientOptions{} } func (opts CreateClientOptions) Validate() error {